import { useFastMutation } from './useFastMutation'; import type { HttpRequest } from '@yaakapp-internal/models'; import {useSetAtom} from "jotai/index"; import { getHttpRequest } from '../lib/store'; import { invokeCmd } from '../lib/tauri'; import {httpRequestsAtom} from "./useHttpRequests"; import {updateModelList} from "./useSyncModelStores"; export function useUpdateAnyHttpRequest() { const setHttpRequests = useSetAtom(httpRequestsAtom); return useFastMutation< HttpRequest, unknown, { id: string; update: Partial | ((r: HttpRequest) => HttpRequest) } >({ mutationKey: ['update_any_http_request'], mutationFn: async ({ id, update }) => { const request = await getHttpRequest(id); if (request === null) { throw new Error("Can't update a null request"); } const patchedRequest = typeof update === 'function' ? update(request) : { ...request, ...update }; return invokeCmd('cmd_update_http_request', { request: patchedRequest }); }, onSuccess: async (request) => { setHttpRequests(updateModelList(request)); } }); }