import type { HttpRequest } from '@yaakapp-internal/models'; import { patchModelById } from '@yaakapp-internal/models'; import { createRequestAndNavigate } from '../lib/createRequestAndNavigate'; import { jotaiStore } from '../lib/jotai'; import { invokeCmd } from '../lib/tauri'; import { showToast } from '../lib/toast'; import { activeWorkspaceIdAtom } from './useActiveWorkspace'; import { useFastMutation } from './useFastMutation'; import { wasUpdatedExternally } from './useRequestUpdateKey'; export function useImportCurl() { return useFastMutation({ mutationKey: ['import_curl'], mutationFn: async ({ overwriteRequestId, command, }: { overwriteRequestId?: string; command: string; }) => { const workspaceId = jotaiStore.get(activeWorkspaceIdAtom); const importedRequest: HttpRequest = await invokeCmd('cmd_curl_to_request', { command, workspaceId, }); let verb: string; if (overwriteRequestId == null) { verb = 'Created'; await createRequestAndNavigate(importedRequest); } else { verb = 'Updated'; await patchModelById(importedRequest.model, overwriteRequestId, (r: HttpRequest) => ({ ...importedRequest, id: r.id, createdAt: r.createdAt, workspaceId: r.workspaceId, folderId: r.folderId, name: r.name, sortPriority: r.sortPriority, })); setTimeout(() => wasUpdatedExternally(overwriteRequestId), 100); } showToast({ color: 'success', message: `${verb} request from Curl`, }); }, }); }