31 lines
1.3 KiB
TypeScript
31 lines
1.3 KiB
TypeScript
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
|
|
import { operationsApi } from './operations-api.js';
|
|
|
|
export const operationsQueryKeys = {
|
|
activity: ['operations', 'activity'] as const,
|
|
logs: ['operations', 'logs'] as const,
|
|
syncStatus: ['operations', 'sync-status'] as const,
|
|
};
|
|
|
|
export function useActivityQuery() {
|
|
return useQuery({ queryKey: operationsQueryKeys.activity, queryFn: operationsApi.getActivity });
|
|
}
|
|
|
|
export function useLogsQuery() {
|
|
return useQuery({ queryKey: operationsQueryKeys.logs, queryFn: () => operationsApi.getLogs(200) });
|
|
}
|
|
|
|
export function useSyncStatusQuery() {
|
|
return useQuery({ queryKey: operationsQueryKeys.syncStatus, queryFn: operationsApi.getSyncStatus, refetchInterval: (query) => query.state.data?.syncing ? 2_000 : false });
|
|
}
|
|
|
|
export function useTriggerChatSyncMutation() {
|
|
const queryClient = useQueryClient();
|
|
return useMutation({ mutationFn: (kind: 'delta' | 'full') => operationsApi.triggerSync(kind), onSettled: () => queryClient.invalidateQueries({ queryKey: operationsQueryKeys.syncStatus }) });
|
|
}
|
|
|
|
export function useFetchAllChatsMutation() {
|
|
const queryClient = useQueryClient();
|
|
return useMutation({ mutationFn: operationsApi.fetchAllChats, onSettled: () => queryClient.invalidateQueries({ queryKey: operationsQueryKeys.syncStatus }) });
|
|
}
|