diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 890150a8..7c84d3d1 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -988,15 +988,14 @@ async fn cmd_save_response( #[tauri::command] async fn cmd_send_http_request( window: WebviewWindow, - request_id: &str, environment_id: Option<&str>, cookie_jar_id: Option<&str>, download_dir: Option<&str>, + // NOTE: We receive the entire request because to account for the race + // condition where the user may have just edited a field before sending + // that has not yet been saved in the DB. + request: HttpRequest, ) -> Result { - let request = get_http_request(&window, request_id) - .await - .expect("Failed to get request"); - let environment = match environment_id { Some(id) => match get_environment(&window, id).await { Ok(env) => Some(env), diff --git a/src-web/hooks/useSendAnyHttpRequest.ts b/src-web/hooks/useSendAnyHttpRequest.ts index c0ef5885..053867ae 100644 --- a/src-web/hooks/useSendAnyHttpRequest.ts +++ b/src-web/hooks/useSendAnyHttpRequest.ts @@ -3,20 +3,21 @@ import { save } from '@tauri-apps/plugin-dialog'; import slugify from 'slugify'; import { trackEvent } from '../lib/analytics'; import type { HttpResponse } from '../lib/models'; -import { getHttpRequest } from '../lib/store'; import { invokeCmd } from '../lib/tauri'; import { useActiveCookieJar } from './useActiveCookieJar'; import { useActiveEnvironment } from './useActiveEnvironment'; import { useAlert } from './useAlert'; +import { useHttpRequests } from './useHttpRequests'; export function useSendAnyHttpRequest(options: { download?: boolean } = {}) { const environment = useActiveEnvironment(); const alert = useAlert(); const { activeCookieJar } = useActiveCookieJar(); + const requests = useHttpRequests(); return useMutation({ mutationKey: ['send_any_request'], mutationFn: async (id) => { - const request = await getHttpRequest(id); + const request = requests.find((r) => r.id === id) ?? null; if (request == null) { return null; } @@ -33,7 +34,7 @@ export function useSendAnyHttpRequest(options: { download?: boolean } = {}) { } return invokeCmd('cmd_send_http_request', { - requestId: id, + request, environmentId: environment?.id, downloadDir: downloadDir, cookieJarId: activeCookieJar?.id,