Files
RedditBot/apps/dashboard/src/features/operations/operations-queries.ts
T

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 }) });
}