mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-19 09:50:15 +01:00
feat: add data-provider
This commit is contained in:
parent
21920dd864
commit
2589754171
7 changed files with 578 additions and 0 deletions
172
client/src/data-provider/react-query-service.ts
Normal file
172
client/src/data-provider/react-query-service.ts
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
import {
|
||||
UseQueryOptions,
|
||||
useQuery,
|
||||
useMutation,
|
||||
useQueryClient,
|
||||
UseMutationResult,
|
||||
QueryObserverResult,
|
||||
} from "@tanstack/react-query";
|
||||
import * as t from "./types";
|
||||
import * as dataService from "./data-service";
|
||||
|
||||
export enum QueryKeys {
|
||||
messages = "messsages",
|
||||
allConversations = "allConversations",
|
||||
conversation = "conversation",
|
||||
models = "models",
|
||||
customGpts = "customGpts",
|
||||
searchEnabled = "searchEnabled",
|
||||
user = "user",
|
||||
}
|
||||
|
||||
export const useGetUserQuery = (): QueryObserverResult<t.TUser> => {
|
||||
return useQuery<t.TUser>([QueryKeys.user], () => dataService.getUser(), {
|
||||
refetchOnWindowFocus: false,
|
||||
refetchOnReconnect: false,
|
||||
refetchOnMount: false,
|
||||
});
|
||||
};
|
||||
|
||||
export const useGetMessagesByConvoId = (
|
||||
id: string,
|
||||
config?: UseQueryOptions<t.TMessage[]>
|
||||
): QueryObserverResult<t.TMessage[]> => {
|
||||
return useQuery<t.TMessage[]>([QueryKeys.messages, id], () =>
|
||||
dataService.getMessagesByConvoId(id),
|
||||
{
|
||||
refetchOnWindowFocus: false,
|
||||
refetchOnReconnect: false,
|
||||
refetchOnMount: false,
|
||||
...config,
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
export const useGetConversationByIdQuery = (
|
||||
id: string,
|
||||
config?: UseQueryOptions<t.TConversation>
|
||||
): QueryObserverResult<t.TConversation> => {
|
||||
return useQuery<t.TConversation>([QueryKeys.conversation, id], () =>
|
||||
dataService.getConversationById(id),
|
||||
{
|
||||
refetchOnWindowFocus: false,
|
||||
refetchOnReconnect: false,
|
||||
refetchOnMount: false,
|
||||
enabled: false,
|
||||
...config
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
export const useUpdateConversationMutation = (
|
||||
id: string
|
||||
): UseMutationResult<
|
||||
t.TUpdateConversationResponse,
|
||||
unknown,
|
||||
t.TUpdateConversationRequest,
|
||||
unknown
|
||||
> => {
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation(
|
||||
(payload: t.TUpdateConversationRequest) =>
|
||||
dataService.updateConversation(payload),
|
||||
{
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries([QueryKeys.conversation, id]);
|
||||
},
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
// export const useDeleteConversationMutation = (
|
||||
// id: string
|
||||
// ): UseMutationResult<
|
||||
|
||||
|
||||
export const useUpdateCustomGptMutation = (): UseMutationResult<
|
||||
t.TUpdateCustomGptResponse,
|
||||
unknown,
|
||||
t.TUpdateCustomGptRequest,
|
||||
unknown
|
||||
> => {
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation(
|
||||
(payload: t.TUpdateCustomGptRequest) =>
|
||||
dataService.updateCustomGpt(payload),
|
||||
{
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries([QueryKeys.customGpts]);
|
||||
},
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
export const useGetCustomGptsQuery = (): QueryObserverResult<
|
||||
t.TCustomGpt[],
|
||||
unknown
|
||||
> => {
|
||||
return useQuery([QueryKeys.customGpts], () => dataService.getCustomGpts(), {
|
||||
refetchOnWindowFocus: false,
|
||||
refetchOnReconnect: false,
|
||||
refetchOnMount: false,
|
||||
});
|
||||
};
|
||||
|
||||
export const useDeleteCustomGptMutation = (): UseMutationResult<
|
||||
t.TDeleteCustomGptResponse,
|
||||
unknown,
|
||||
t.TDeleteCustomGptRequest,
|
||||
unknown
|
||||
> => {
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation(
|
||||
(payload: t.TDeleteCustomGptRequest) =>
|
||||
dataService.deleteCustomGpt(payload),
|
||||
{
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries([QueryKeys.customGpts]);
|
||||
},
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
export const useGetModelsQuery = (): QueryObserverResult<
|
||||
t.TGetModelsResponse,
|
||||
unknown
|
||||
> => {
|
||||
return useQuery([QueryKeys.models], () => dataService.getModels(), {
|
||||
refetchOnWindowFocus: false,
|
||||
refetchOnReconnect: false,
|
||||
refetchOnMount: false,
|
||||
});
|
||||
};
|
||||
|
||||
export const useClearConversationsMutation = (): UseMutationResult<unknown> => {
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation(() => dataService.clearAllConversations(), {
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries([QueryKeys.allConversations]);
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
export const useGetConversationsQuery = (pageNumber: string): QueryObserverResult<t.TGetConversationsResponse> => {
|
||||
return useQuery([QueryKeys.allConversations, pageNumber], () =>
|
||||
dataService.getConversations(pageNumber), {
|
||||
refetchOnWindowFocus: false,
|
||||
refetchOnReconnect: false,
|
||||
refetchOnMount: false,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
export const useGetSearchEnabledQuery = (config?: UseQueryOptions<boolean>): QueryObserverResult<boolean> => {
|
||||
return useQuery<boolean>([QueryKeys.searchEnabled], () =>
|
||||
dataService.getSearchEnabled(), {
|
||||
refetchOnWindowFocus: false,
|
||||
refetchOnReconnect: false,
|
||||
refetchOnMount: false,
|
||||
...config,
|
||||
}
|
||||
);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue