From 158877b355632354c2db7825a64563471bf2fc07 Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Fri, 8 Aug 2025 12:59:59 -0700 Subject: [PATCH] Fix SVG viewer crashing --- .../components/responseViewers/SvgViewer.tsx | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src-web/components/responseViewers/SvgViewer.tsx b/src-web/components/responseViewers/SvgViewer.tsx index 78202975..fa599ba0 100644 --- a/src-web/components/responseViewers/SvgViewer.tsx +++ b/src-web/components/responseViewers/SvgViewer.tsx @@ -1,5 +1,5 @@ import type { HttpResponse } from '@yaakapp-internal/models'; -import React from 'react'; +import React, { useEffect, useState } from 'react'; import { useResponseBodyText } from '../../hooks/useResponseBodyText'; interface Props { @@ -8,7 +8,23 @@ interface Props { export function SvgViewer({ response }: Props) { const rawTextBody = useResponseBodyText(response); - if (rawTextBody.data == null) return null; - const src = `data:image/svg+xml;base64,${btoa(rawTextBody.data)}`; + const [src, setSrc] = useState(null); + + useEffect(() => { + if (!rawTextBody.data) { + return setSrc(null); + } + + const blob = new Blob([rawTextBody.data], { type: 'image/svg+xml;charset=utf-8' }); + const url = URL.createObjectURL(blob); + setSrc(url); + + return () => URL.revokeObjectURL(url); + }, [rawTextBody.data]); + + if (src == null) { + return null; + } + return Response preview; }