chat / client /src /hooks /Assistants /useAssistantListMap.ts
helloya20's picture
Upload 2345 files
f0743f4 verified
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;
}