import { useQuery } from "@tanstack/react-query"; import type { HttpResponse } from "@yaakapp-internal/models"; import { invokeCmd } from "../lib/tauri"; export function useHttpRequestBody(response: HttpResponse | null) { return useQuery({ placeholderData: (prev) => prev, // Keep previous data on refetch queryKey: ["request_body", response?.id, response?.state, response?.requestContentLength], enabled: (response?.requestContentLength ?? 0) > 0, queryFn: async () => { return getRequestBodyText(response); }, }); } export async function getRequestBodyText(response: HttpResponse | null) { if (response?.id == null) { return null; } const data = await invokeCmd("cmd_http_request_body", { responseId: response.id, }); if (data == null) { return null; } const body = new Uint8Array(data); const bodyText = new TextDecoder("utf-8", { fatal: false }).decode(body); return { body, bodyText }; }