diff --git a/src-web/components/responseViewers/BinaryViewer.tsx b/src-web/components/responseViewers/BinaryViewer.tsx index 96aa4fe1..94b586ba 100644 --- a/src-web/components/responseViewers/BinaryViewer.tsx +++ b/src-web/components/responseViewers/BinaryViewer.tsx @@ -16,7 +16,7 @@ export function BinaryViewer({ response }: Props) { const contentType = getContentTypeFromHeaders(response.headers) ?? 'unknown'; // Wait until the response has been fully-downloaded - if (response.state === 'closed') { + if (response.state !== 'closed') { return ( diff --git a/src-web/components/responseViewers/HTMLOrTextViewer.tsx b/src-web/components/responseViewers/HTMLOrTextViewer.tsx index b379f218..cfa9879a 100644 --- a/src-web/components/responseViewers/HTMLOrTextViewer.tsx +++ b/src-web/components/responseViewers/HTMLOrTextViewer.tsx @@ -2,7 +2,6 @@ import type { HttpResponse } from '@yaakapp-internal/models'; import { useResponseBodyText } from '../../hooks/useResponseBodyText'; import { languageFromContentType } from '../../lib/contentType'; import { getContentTypeFromHeaders } from '../../lib/model_util'; -import { BinaryViewer } from './BinaryViewer'; import { TextViewer } from './TextViewer'; import { WebPageViewer } from './WebPageViewer'; @@ -21,11 +20,6 @@ export function HTMLOrTextViewer({ response, pretty, textViewerClassName }: Prop return null; } - // Wasn't able to decode as text, so it must be binary - if (rawTextBody.data == null) { - return ; - } - if (language === 'html' && pretty) { return ; } else { diff --git a/src-web/hooks/useResponseBodyText.ts b/src-web/hooks/useResponseBodyText.ts index 8f7a9c8b..c73ef412 100644 --- a/src-web/hooks/useResponseBodyText.ts +++ b/src-web/hooks/useResponseBodyText.ts @@ -3,7 +3,7 @@ import type { HttpResponse } from '@yaakapp-internal/models'; import { getResponseBodyText } from '../lib/responseBody'; export function useResponseBodyText(response: HttpResponse) { - return useQuery({ + return useQuery({ placeholderData: (prev) => prev, // Keep previous data on refetch queryKey: ['response-body-text', response.id, response.updatedAt, response.contentLength], queryFn: () => getResponseBodyText(response), diff --git a/src-web/lib/responseBody.ts b/src-web/lib/responseBody.ts index 314bbdef..ea476007 100644 --- a/src-web/lib/responseBody.ts +++ b/src-web/lib/responseBody.ts @@ -5,18 +5,14 @@ import { getCharsetFromContentType } from './model_util'; import { invokeCmd } from './tauri'; export async function getResponseBodyText(response: HttpResponse): Promise { - if (!response.bodyPath) return null; + if (!response.bodyPath) { + return null; + } const bytes = await readFile(response.bodyPath); const charset = getCharsetFromContentType(response.headers); - try { - return new TextDecoder(charset ?? 'utf-8', { fatal: true }).decode(bytes); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - } catch (err) { - // Failed to decode as text, so return null - return null; - } + return new TextDecoder(charset ?? 'utf-8', { fatal: false }).decode(bytes); } export async function getResponseBodyBlob(response: HttpResponse): Promise {