import { grpcConnectionsAtom, httpResponsesAtom, websocketConnectionsAtom, } from '@yaakapp-internal/models'; import { useAtomValue } from 'jotai'; import { showAlert } from '../lib/alert'; import { showConfirmDelete } from '../lib/confirm'; import { jotaiStore } from '../lib/jotai'; import { pluralizeCount } from '../lib/pluralize'; import { invokeCmd } from '../lib/tauri'; import { activeWorkspaceIdAtom } from './useActiveWorkspace'; import { useFastMutation } from './useFastMutation'; export function useDeleteSendHistory() { const httpResponses = useAtomValue(httpResponsesAtom); const grpcConnections = useAtomValue(grpcConnectionsAtom); const websocketConnections = useAtomValue(websocketConnectionsAtom); const labels = [ httpResponses.length > 0 ? pluralizeCount('Http Response', httpResponses.length) : null, grpcConnections.length > 0 ? pluralizeCount('Grpc Connection', grpcConnections.length) : null, websocketConnections.length > 0 ? pluralizeCount('WebSocket Connection', websocketConnections.length) : null, ].filter((l) => l != null); return useFastMutation({ mutationKey: ['delete_send_history', labels], mutationFn: async () => { if (labels.length === 0) { showAlert({ id: 'no-responses', title: 'Nothing to Delete', body: 'There is no Http, Grpc, or Websocket history', }); return; } const confirmed = await showConfirmDelete({ id: 'delete-send-history', title: 'Clear Send History', description: <>Delete {labels.join(' and ')}?, }); if (!confirmed) return false; const workspaceId = jotaiStore.get(activeWorkspaceIdAtom); await invokeCmd('cmd_delete_send_history', { workspaceId }); return true; }, }); }