File size: 1,300 Bytes
f0743f4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | import { useMemo } from 'react';
import { EModelEndpoint } from 'librechat-data-provider';
import type { AssistantListResponse, AssistantsEndpoint } from 'librechat-data-provider';
import type { AssistantListItem } from '~/common';
import { useListAssistantsQuery } from '~/data-provider';
const selectAssistantsResponse = (res: AssistantListResponse): AssistantListItem[] =>
res.data.map(({ id, name, metadata, model }) => ({
id,
name: name ?? '',
metadata,
model,
}));
export default function useAssistantListMap<T = AssistantListItem[] | null>(
selector: (res: AssistantListResponse) => T = selectAssistantsResponse as (
res: AssistantListResponse,
) => T,
): Record<AssistantsEndpoint, T | null> {
const { data: assistantsList = null } = useListAssistantsQuery(
EModelEndpoint.assistants,
undefined,
{
select: selector,
},
);
const { data: azureAssistants = null } = useListAssistantsQuery(
EModelEndpoint.azureAssistants,
undefined,
{
select: selector,
},
);
const assistantListMap = useMemo(() => {
return {
[EModelEndpoint.assistants]: assistantsList as T,
[EModelEndpoint.azureAssistants]: azureAssistants as T,
};
}, [assistantsList, azureAssistants]);
return assistantListMap;
}
|