Skip to content

Commit 615d792

Browse files
authored
[CSR-811] Display network response content (#62)
* fix: display network response content * fix: make Collapsible controlled
1 parent 69adb05 commit 615d792

File tree

1 file changed

+46
-5
lines changed

1 file changed

+46
-5
lines changed

apps/web/src/components/Network.tsx

Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ import {
44
AccordionItem,
55
AccordionTrigger,
66
} from '@/components/ui/Accordion';
7+
import {
8+
Collapsible,
9+
CollapsibleContent,
10+
CollapsibleTrigger,
11+
} from '@/components/ui/Collapsible';
712
import {
813
HeadersEntity,
914
HttpArchiveEntry,
@@ -12,6 +17,8 @@ import {
1217
import { last } from 'lodash';
1318

1419
import getUrlProperties from '@/utils/getUrProperties';
20+
import { ChevronDown, ChevronRight } from 'lucide-react';
21+
import { useState } from 'react';
1522

1623
function NetworkPreview({ entry }: { entry: HttpArchiveEntry }) {
1724
const resource =
@@ -33,23 +40,57 @@ function NetworkPreview({ entry }: { entry: HttpArchiveEntry }) {
3340
);
3441
}
3542

43+
function HighlightedValue({ value }: { value: string | number | boolean }) {
44+
return <span className="text-amber-700 dark:text-amber-500">{value}</span>;
45+
}
46+
3647
function HeadersEntry({ header }: { header: HeadersEntity }) {
3748
return (
3849
<li className="text-sm">
39-
:<span>{header.name}</span>:{' '}
40-
<span className="text-amber-700 dark:text-amber-500">{header.value}</span>
50+
:<span>{header.name}</span>: <HighlightedValue value={header.value} />
4151
</li>
4252
);
4353
}
4454

4555
function ResponseBody({
46-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
4756
content,
4857
}: {
4958
content: HttpArchiveEntryResponse['content'];
5059
}) {
51-
// TODO: display the content
52-
return <div>Content</div>;
60+
const [open, setOpen] = useState<boolean>(false);
61+
62+
return (
63+
<ul className="flex-col">
64+
<li>
65+
MIME Type: <HighlightedValue value={content.mimeType} />
66+
</li>
67+
<li>
68+
Size: <HighlightedValue value={`${content.size} Bytes`} />
69+
</li>
70+
<li>
71+
Compression: <HighlightedValue value={content.compression ?? '-'} />
72+
</li>
73+
<li>
74+
<Collapsible open={open} onOpenChange={setOpen}>
75+
<CollapsibleTrigger>
76+
<div className="flex items-center">
77+
<span className="pr-1">Content</span>
78+
{open ? (
79+
<ChevronDown className="h-4 w-4 bg-accent" />
80+
) : (
81+
<ChevronRight className="h-4 w-4 bg-accent" />
82+
)}
83+
</div>
84+
</CollapsibleTrigger>
85+
<CollapsibleContent>
86+
<div className="p-2 w-full overflow-auto bg-accent">
87+
<pre>{content.text}</pre>
88+
</div>
89+
</CollapsibleContent>
90+
</Collapsible>
91+
</li>
92+
</ul>
93+
);
5394
}
5495

5596
function NetworkDetails({ entry }: { entry: HttpArchiveEntry }) {

0 commit comments

Comments
 (0)