mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-03-17 23:13:51 +01:00
53 lines
1.8 KiB
TypeScript
53 lines
1.8 KiB
TypeScript
import { useMutation } from '@tanstack/react-query';
|
|
import { useSetAtom } from 'jotai/index';
|
|
import { count } from '../lib/pluralize';
|
|
import { invokeCmd } from '../lib/tauri';
|
|
import { useActiveWorkspace } from './useActiveWorkspace';
|
|
import { useAlert } from './useAlert';
|
|
import { useConfirm } from './useConfirm';
|
|
import { useGrpcConnections } from './useGrpcConnections';
|
|
import { httpResponsesAtom, useHttpResponses } from './useHttpResponses';
|
|
|
|
export function useDeleteSendHistory() {
|
|
const confirm = useConfirm();
|
|
const alert = useAlert();
|
|
const setHttpResponses = useSetAtom(httpResponsesAtom);
|
|
const activeWorkspace = useActiveWorkspace();
|
|
const httpResponses = useHttpResponses();
|
|
const grpcConnections = useGrpcConnections();
|
|
const labels = [
|
|
httpResponses.length > 0 ? count('Http Response', httpResponses.length) : null,
|
|
grpcConnections.length > 0 ? count('Grpc Connection', grpcConnections.length) : null,
|
|
].filter((l) => l != null);
|
|
|
|
return useMutation({
|
|
mutationKey: ['delete_send_history'],
|
|
mutationFn: async () => {
|
|
if (labels.length === 0) {
|
|
alert({
|
|
id: 'no-responses',
|
|
title: 'Nothing to Delete',
|
|
body: 'There are no Http Response or Grpc Connections to delete',
|
|
});
|
|
return;
|
|
}
|
|
|
|
const confirmed = await confirm({
|
|
id: 'delete-send-history',
|
|
title: 'Clear Send History',
|
|
variant: 'delete',
|
|
description: <>Delete {labels.join(' and ')}?</>,
|
|
});
|
|
if (!confirmed) return false;
|
|
|
|
await invokeCmd('cmd_delete_send_history', { workspaceId: activeWorkspace?.id ?? 'n/a' });
|
|
return true;
|
|
},
|
|
onSuccess: async (confirmed) => {
|
|
if (!confirmed) return;
|
|
|
|
setHttpResponses((all) => all.filter((r) => r.workspaceId !== activeWorkspace?.id));
|
|
},
|
|
});
|
|
}
|