mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-21 19:00:13 +01:00
Add presets and endpoints data services
This commit is contained in:
parent
f2d18c81fc
commit
3d0bfaef51
5 changed files with 102 additions and 126 deletions
|
|
@ -3,16 +3,16 @@ import store from '~/store';
|
||||||
import TrashIcon from '../svg/TrashIcon';
|
import TrashIcon from '../svg/TrashIcon';
|
||||||
import { Dialog, DialogTrigger } from '../ui/Dialog.tsx';
|
import { Dialog, DialogTrigger } from '../ui/Dialog.tsx';
|
||||||
import DialogTemplate from '../ui/DialogTemplate';
|
import DialogTemplate from '../ui/DialogTemplate';
|
||||||
import { useDeleteConversationMutation } from '~/data-provider';
|
import { useClearConversationsMutation } from '~/data-provider';
|
||||||
|
|
||||||
export default function ClearConvos() {
|
export default function ClearConvos() {
|
||||||
const { newConversation } = store.useConversation();
|
const { newConversation } = store.useConversation();
|
||||||
const { refreshConversations } = store.useConversations();
|
const { refreshConversations } = store.useConversations();
|
||||||
const clearConvosMutation = useDeleteConversationMutation();
|
const clearConvosMutation = useClearConversationsMutation();
|
||||||
|
|
||||||
const clickHandler = () => {
|
const clickHandler = () => {
|
||||||
console.log('Clearing conversations...');
|
console.log('Clearing conversations...');
|
||||||
clearConvosMutation.mutate({});
|
clearConvosMutation.mutate();
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
|
||||||
|
|
@ -1,44 +1,48 @@
|
||||||
import * as t from './types';
|
import * as t from './types';
|
||||||
import request from './request';
|
import request from './request';
|
||||||
import * as endpoints from './endpoints';
|
import * as endpoints from './api-endpoints';
|
||||||
|
|
||||||
export function getConversations(pageNumber: string): Promise<t.TGetConversationsResponse> {
|
export function getConversations(pageNumber: string): Promise<t.TGetConversationsResponse> {
|
||||||
return request.get(endpoints.getConversations(pageNumber));
|
return request.get(endpoints.conversations(pageNumber));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function deleteConversation(payload: t.TDeleteConversationRequest) {
|
export function deleteConversation(payload: t.TDeleteConversationRequest) {
|
||||||
//todo: this should be a DELETE request
|
//todo: this should be a DELETE request
|
||||||
return request.post(endpoints.deleteConversation(), payload);
|
return request.post(endpoints.deleteConversation(), {arg: payload});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function clearAllConversations(): Promise<unknown> {
|
||||||
|
return request.post(endpoints.deleteConversation(), {arg: {}});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getMessagesByConvoId(id: string): Promise<t.TMessage[]> {
|
export function getMessagesByConvoId(id: string): Promise<t.TMessage[]> {
|
||||||
return request.get(endpoints.getMessages(id));
|
return request.get(endpoints.messages(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getConversationById(id: string): Promise<t.TConversation> {
|
export function getConversationById(id: string): Promise<t.TConversation> {
|
||||||
return request.get(endpoints.getConversationById(id));
|
return request.get(endpoints.conversationById(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function updateConversation(
|
export function updateConversation(
|
||||||
payload: t.TUpdateConversationRequest
|
payload: t.TUpdateConversationRequest
|
||||||
): Promise<t.TUpdateConversationResponse> {
|
): Promise<t.TUpdateConversationResponse> {
|
||||||
return request.post(endpoints.updateConversation(), payload);
|
return request.post(endpoints.updateConversation(), {arg: payload});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function updateCustomGpt(payload: t.TUpdateCustomGptRequest) {
|
export function getPresets(): Promise<t.TPreset[]> {
|
||||||
return request.post(endpoints.customGpts(), payload);
|
return request.get(endpoints.presets());
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getCustomGpts(): Promise<t.TGetCustomGptsResponse> {
|
export function createPreset(payload: t.TPreset): Promise<t.TPreset[]> {
|
||||||
return request.get(endpoints.customGpts());
|
return request.post(endpoints.presets(), payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function deleteCustomGpt(payload: t.TDeleteCustomGptRequest): Promise<t.TDeleteCustomGptResponse> {
|
export function updatePreset(payload: t.TPreset): Promise<t.TPreset[]> {
|
||||||
return request.post(endpoints.deleteCustomGpt(), payload);
|
return request.post(endpoints.presets(), payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getModels(): Promise<t.TGetModelsResponse> {
|
export function deletePresets(): Promise<unknown> {
|
||||||
return request.get(endpoints.getModels());
|
return request.post(endpoints.deletePresets(), {arg: {}});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getSearchEnabled(): Promise<boolean> {
|
export function getSearchEnabled(): Promise<boolean> {
|
||||||
|
|
@ -60,6 +64,12 @@ type TSearchFetcherProps = {
|
||||||
callback: (data: any) => void
|
callback: (data: any) => void
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const searchConversations = async({ q, pageNumber, callback }: TSearchFetcherProps) => {
|
||||||
|
return request.get(endpoints.search(q, pageNumber)).then(({ data }) => {
|
||||||
|
callback(data);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
export const searchFetcher = async ({ pre, q, pageNumber, callback }: TSearchFetcherProps) => {
|
export const searchFetcher = async ({ pre, q, pageNumber, callback }: TSearchFetcherProps) => {
|
||||||
pre();
|
pre();
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
|
|
@ -67,3 +77,7 @@ export const searchFetcher = async ({ pre, q, pageNumber, callback }: TSearchFet
|
||||||
console.log('search data', data);
|
console.log('search data', data);
|
||||||
callback(data);
|
callback(data);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const getAIEndpoints = () => {
|
||||||
|
return request.get(endpoints.aiEndpoints());
|
||||||
|
}
|
||||||
|
|
@ -1,57 +0,0 @@
|
||||||
|
|
||||||
export const getModels = () => {
|
|
||||||
return `/api/models`;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getAICompletion = () => {
|
|
||||||
return `/api/ask `;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const user = () => {
|
|
||||||
return `/api/me`;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getMessages = (id: string) => {
|
|
||||||
return `/api/messages/${id}`;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getConversations = (pageNumber: string) => {
|
|
||||||
return `/api/convos?pageNumber=${pageNumber}`;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getConversationById = (id: string) => {
|
|
||||||
return `/api/convos/${id}`;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const updateConversation = () => {
|
|
||||||
return `/api/convos/update`;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const deleteConversation = () => {
|
|
||||||
return `/api/convos/clear`;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const prompts = () => {
|
|
||||||
return `/api/prompts`;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const customGpts = () => {
|
|
||||||
return `/api/customGpts`;
|
|
||||||
};
|
|
||||||
|
|
||||||
// TODO: turn this into a DELETE instead of POST on the backend
|
|
||||||
export const deleteCustomGpt = () => {
|
|
||||||
return `/api/customGpts/delete`;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const generateTitle = () => {
|
|
||||||
return `/api/convos/gen_title`;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const search = (q: string, pageNumber: string) => {
|
|
||||||
return `/api/search?q=${q}&pageNumber=${pageNumber}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const searchEnabled = () => {
|
|
||||||
return `/api/search/enable`;
|
|
||||||
}
|
|
||||||
|
|
@ -13,10 +13,11 @@ export enum QueryKeys {
|
||||||
messages = "messsages",
|
messages = "messsages",
|
||||||
allConversations = "allConversations",
|
allConversations = "allConversations",
|
||||||
conversation = "conversation",
|
conversation = "conversation",
|
||||||
models = "models",
|
|
||||||
customGpts = "customGpts",
|
|
||||||
searchEnabled = "searchEnabled",
|
searchEnabled = "searchEnabled",
|
||||||
user = "user",
|
user = "user",
|
||||||
|
endpoints = "endpoints",
|
||||||
|
presets = "presets",
|
||||||
|
searchResults = "searchResults",
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useGetUserQuery = (): QueryObserverResult<t.TUser> => {
|
export const useGetUserQuery = (): QueryObserverResult<t.TUser> => {
|
||||||
|
|
@ -107,51 +108,6 @@ export const useDeleteConversationMutation = (
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const useUpdateCustomGptMutation = (): UseMutationResult<t.TUpdateCustomGptResponse> => {
|
|
||||||
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> => {
|
|
||||||
const queryClient = useQueryClient();
|
|
||||||
return useMutation(
|
|
||||||
(payload: t.TDeleteCustomGptRequest) =>
|
|
||||||
dataService.deleteCustomGpt(payload),
|
|
||||||
{
|
|
||||||
onSuccess: () => {
|
|
||||||
queryClient.invalidateQueries([QueryKeys.customGpts]);
|
|
||||||
},
|
|
||||||
}
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export const useGetModelsQuery = (): QueryObserverResult<t.TGetModelsResponse> => {
|
|
||||||
return useQuery([QueryKeys.models], () => dataService.getModels(), {
|
|
||||||
refetchOnWindowFocus: false,
|
|
||||||
refetchOnReconnect: false,
|
|
||||||
refetchOnMount: false,
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export const useClearConversationsMutation = (): UseMutationResult<unknown> => {
|
export const useClearConversationsMutation = (): UseMutationResult<unknown> => {
|
||||||
const queryClient = useQueryClient();
|
const queryClient = useQueryClient();
|
||||||
return useMutation(() => dataService.clearAllConversations(), {
|
return useMutation(() => dataService.clearAllConversations(), {
|
||||||
|
|
@ -161,7 +117,7 @@ export const useClearConversationsMutation = (): UseMutationResult<unknown> => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
export const useGetConversationsQuery = (pageNumber: string): QueryObserverResult<t.TGetConversationsResponse> => {
|
export const useGetConversationsQuery = (pageNumber: string): QueryObserverResult<t.Conversation[]> => {
|
||||||
return useQuery([QueryKeys.allConversations, pageNumber], () =>
|
return useQuery([QueryKeys.allConversations, pageNumber], () =>
|
||||||
dataService.getConversations(pageNumber), {
|
dataService.getConversations(pageNumber), {
|
||||||
// refetchOnWindowFocus: false,
|
// refetchOnWindowFocus: false,
|
||||||
|
|
@ -181,3 +137,67 @@ export const useGetSearchEnabledQuery = (config?: UseQueryOptions<boolean>): Que
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const useGetEndpointsQuery = (): QueryObserverResult<t.TEndpoints> => {
|
||||||
|
return useQuery([QueryKeys.endpoints], () =>
|
||||||
|
dataService.getAIEndpoints(), {
|
||||||
|
refetchOnWindowFocus: false,
|
||||||
|
refetchOnReconnect: false,
|
||||||
|
refetchOnMount: false,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const useCreatePresetMutation = (): UseMutationResult<t.Preset[]> => {
|
||||||
|
const queryClient = useQueryClient();
|
||||||
|
return useMutation(
|
||||||
|
(payload: t.TCreatePresetRequest) =>
|
||||||
|
dataService.createPreset(payload),
|
||||||
|
{
|
||||||
|
onSuccess: () => {
|
||||||
|
queryClient.invalidateQueries([QueryKeys.presets]);
|
||||||
|
},
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const useUpdatePresetMutation = (): UseMutationResult<t.TPreset[]> => {
|
||||||
|
const queryClient = useQueryClient();
|
||||||
|
return useMutation(
|
||||||
|
(payload: t.TUpdatePresetRequest) =>
|
||||||
|
dataService.updatePreset(payload),
|
||||||
|
{
|
||||||
|
onSuccess: () => {
|
||||||
|
queryClient.invalidateQueries([QueryKeys.presets]);
|
||||||
|
},
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const useGetPresetsQuery = (): QueryObserverResult<t.TPreset[], unknown> => {
|
||||||
|
return useQuery([QueryKeys.presets], () => dataService.getPresets(), {
|
||||||
|
refetchOnWindowFocus: false,
|
||||||
|
refetchOnReconnect: false,
|
||||||
|
refetchOnMount: false,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const useDeleteAllPresetsMutation = (): UseMutationResult<unknown> => {
|
||||||
|
const queryClient = useQueryClient();
|
||||||
|
return useMutation(() => dataService.deletePresets(), {
|
||||||
|
onSuccess: () => {
|
||||||
|
queryClient.invalidateQueries([QueryKeys.presets]);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export const useSearchFetcher = (query: string, pageNumber: string, callback: () => void, config?: UseQueryOptions<t.TSearchResponse>): QueryObserverResult<t.TSearchResponse> => {
|
||||||
|
return useQuery<t.TSearchResponse>([QueryKeys.searchResults, pageNumber, query], () =>
|
||||||
|
dataService.searchConversations(query, pageNumber, callback), {
|
||||||
|
refetchOnWindowFocus: false,
|
||||||
|
refetchOnReconnect: false,
|
||||||
|
refetchOnMount: false,
|
||||||
|
...config
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,12 @@
|
||||||
import axios, { AxiosRequestConfig } from "axios";
|
import axios, { AxiosRequestConfig } from "axios";
|
||||||
|
|
||||||
async function _get<T>(url: string, options?: AxiosRequestConfig): Promise<T> {
|
async function _get<T>(url: string, options?: AxiosRequestConfig): Promise<T> {
|
||||||
const response = await axios.get(url, {...options});
|
const response = await axios.get(url, { withCredentials: true, ...options});
|
||||||
return response.data;
|
return response.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function _post(url: string, arg?: any) {
|
async function _post(url: string, data?: any) {
|
||||||
const modifiedData = {arg, withCredentials: true}
|
const response = await axios.post(url, JSON.stringify(data), {
|
||||||
const response = await axios.post(url, modifiedData, {
|
|
||||||
headers: { "Content-Type": "application/json" },
|
headers: { "Content-Type": "application/json" },
|
||||||
});
|
});
|
||||||
return response.data;
|
return response.data;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue