Better curl import

This commit is contained in:
Gregory Schier
2024-08-10 07:53:26 -07:00
parent 2f9532cf53
commit 08ea48b996
8 changed files with 72 additions and 78 deletions

View File

@@ -1,23 +1,27 @@
import { useMutation } from '@tanstack/react-query';
import { useToast } from '../components/ToastContext';
import { invokeCmd } from '../lib/tauri';
import { useActiveWorkspaceId } from './useActiveWorkspaceId';
import { useCreateHttpRequest } from './useCreateHttpRequest';
import { useRequestUpdateKey } from './useRequestUpdateKey';
import { useUpdateAnyHttpRequest } from './useUpdateAnyHttpRequest';
import { useToast } from '../components/ToastContext';
import { useCreateHttpRequest } from './useCreateHttpRequest';
import { useClipboardText } from './useClipboardText';
export function useImportCurl({ clearClipboard }: { clearClipboard?: boolean } = {}) {
export function useImportCurl() {
const workspaceId = useActiveWorkspaceId();
const updateRequest = useUpdateAnyHttpRequest();
const createRequest = useCreateHttpRequest();
const { wasUpdatedExternally } = useRequestUpdateKey(null);
const toast = useToast();
const [, setClipboardText] = useClipboardText();
return useMutation({
mutationKey: ['import_curl'],
mutationFn: async ({ requestId, command }: { requestId: string | null; command: string }) => {
mutationFn: async ({
overwriteRequestId,
command,
}: {
overwriteRequestId?: string;
command: string;
}) => {
const request: Record<string, unknown> = await invokeCmd('cmd_curl_to_request', {
command,
workspaceId,
@@ -25,23 +29,19 @@ export function useImportCurl({ clearClipboard }: { clearClipboard?: boolean } =
delete request.id;
let verb;
if (requestId == null) {
if (overwriteRequestId == null) {
verb = 'Created';
await createRequest.mutateAsync(request);
} else {
verb = 'Updated';
await updateRequest.mutateAsync({ id: requestId, update: request });
setTimeout(() => wasUpdatedExternally(requestId), 100);
await updateRequest.mutateAsync({ id: overwriteRequestId, update: request });
setTimeout(() => wasUpdatedExternally(overwriteRequestId), 100);
}
toast.show({
variant: 'success',
message: `${verb} request from Curl`,
});
if (clearClipboard) {
setClipboardText(null);
}
},
});
}