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