From c4ce458f79683e4de0b2f63e077a95e0aa5d01a3 Mon Sep 17 00:00:00 2001 From: Rahul Mishra Date: Sat, 31 Jan 2026 21:04:40 +0530 Subject: [PATCH] fix: pass down onClose properly (#376) --- src-web/components/GrpcResponsePane.tsx | 14 +++++++++++--- src-web/components/WebsocketResponsePane.tsx | 18 +++++++++++------- .../responseViewers/EventStreamViewer.tsx | 12 +++++++++--- 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/src-web/components/GrpcResponsePane.tsx b/src-web/components/GrpcResponsePane.tsx index e95d3e2f..29f8f4e0 100644 --- a/src-web/components/GrpcResponsePane.tsx +++ b/src-web/components/GrpcResponsePane.tsx @@ -98,13 +98,14 @@ export function GrpcResponsePane({ style, methodType, activeRequest }: Props) { renderRow={({ event, isActive, onClick }) => ( )} - renderDetail={({ event }) => ( + renderDetail={({ event, onClose }) => ( )} /> @@ -147,19 +148,26 @@ function GrpcEventDetail({ showingLarge, setShowLarge, setShowingLarge, + onClose, }: { event: GrpcEvent; showLarge: boolean; showingLarge: boolean; setShowLarge: (v: boolean) => void; setShowingLarge: (v: boolean) => void; + onClose: () => void; }) { if (event.eventType === 'client_message' || event.eventType === 'server_message') { const title = `Message ${event.eventType === 'client_message' ? 'Sent' : 'Received'}`; return (
- + {!showLarge && event.content.length > 1000 * 1000 ? ( Message previews larger than 1MB are hidden @@ -197,7 +205,7 @@ function GrpcEventDetail({ // Error or connection_end - show metadata/trailers return (
- + {event.error && (
{event.error} diff --git a/src-web/components/WebsocketResponsePane.tsx b/src-web/components/WebsocketResponsePane.tsx index 26ac650a..043ab841 100644 --- a/src-web/components/WebsocketResponsePane.tsx +++ b/src-web/components/WebsocketResponsePane.tsx @@ -13,7 +13,7 @@ import { useStateWithDeps } from '../hooks/useStateWithDeps'; import { languageFromContentType } from '../lib/contentType'; import { Button } from './core/Button'; import { Editor } from './core/Editor/LazyEditor'; -import { EventDetailHeader, EventViewer, type EventDetailAction } from './core/EventViewer'; +import { type EventDetailAction, EventDetailHeader, EventViewer } from './core/EventViewer'; import { EventViewerRow } from './core/EventViewerRow'; import { HotkeyList } from './core/HotkeyList'; import { Icon } from './core/Icon'; @@ -75,7 +75,7 @@ export function WebsocketResponsePane({ activeRequest }: Props) { renderRow={({ event, isActive, onClick }) => ( )} - renderDetail={({ event, index }) => ( + renderDetail={({ event, index, onClose }) => ( )} /> @@ -145,6 +146,7 @@ function WebsocketEventDetail({ showingLarge, setShowLarge, setShowingLarge, + onClose, }: { event: WebsocketEvent; hexDump: boolean; @@ -153,6 +155,7 @@ function WebsocketEventDetail({ showingLarge: boolean; setShowLarge: (v: boolean) => void; setShowingLarge: (v: boolean) => void; + onClose: () => void; }) { const message = useMemo(() => { if (hexDump) { @@ -185,11 +188,12 @@ function WebsocketEventDetail({ return (
+ title={title} + timestamp={event.createdAt} + actions={actions} + copyText={formattedMessage || undefined} + onClose={onClose} + /> {!showLarge && event.message.length > 1000 * 1000 ? ( Message previews larger than 1MB are hidden diff --git a/src-web/components/responseViewers/EventStreamViewer.tsx b/src-web/components/responseViewers/EventStreamViewer.tsx index 4058f6a5..de62b1f1 100644 --- a/src-web/components/responseViewers/EventStreamViewer.tsx +++ b/src-web/components/responseViewers/EventStreamViewer.tsx @@ -51,10 +51,9 @@ function ActualEventStreamViewer({ response }: Props) { {event.data.slice(0, 1000)} } - /> )} - renderDetail={({ event, index }) => ( + renderDetail={({ event, index, onClose }) => ( )} /> @@ -75,6 +75,7 @@ function EventDetail({ showingLarge, setShowLarge, setShowingLarge, + onClose, }: { event: ServerSentEvent; index: number; @@ -82,6 +83,7 @@ function EventDetail({ showingLarge: boolean; setShowLarge: (v: boolean) => void; setShowingLarge: (v: boolean) => void; + onClose: () => void; }) { const language = useMemo<'text' | 'json'>(() => { if (!event?.data) return 'text'; @@ -90,7 +92,11 @@ function EventDetail({ return (
- } /> + } + onClose={onClose} + /> {!showLarge && event.data.length > 1000 * 1000 ? ( Message previews larger than 1MB are hidden