import { openUrl } from "@tauri-apps/plugin-opener"; import type { HttpResponse } from "@yaakapp-internal/models"; import { useMemo } from "react"; import { CountBadge } from "./core/CountBadge"; import { DetailsBanner } from "./core/DetailsBanner"; import { IconButton } from "./core/IconButton"; import { KeyValueRow, KeyValueRows } from "./core/KeyValueRow"; interface Props { response: HttpResponse; } export function ResponseHeaders({ response }: Props) { const responseHeaders = useMemo( () => [...response.headers].sort((a, b) => a.name.toLocaleLowerCase().localeCompare(b.name.toLocaleLowerCase()), ), [response.headers], ); const requestHeaders = useMemo( () => [...response.requestHeaders].sort((a, b) => a.name.toLocaleLowerCase().localeCompare(b.name.toLocaleLowerCase()), ), [response.requestHeaders], ); return (
Info}>
{response.url} openUrl(response.url)} title="Open in browser" />
{response.remoteAddr ?? --} {response.version ?? --}
Request Headers } > {requestHeaders.length === 0 ? ( ) : ( {requestHeaders.map((h, i) => ( // oxlint-disable-next-line react/no-array-index-key {h.value} ))} )} Response Headers } > {responseHeaders.length === 0 ? ( ) : ( {responseHeaders.map((h, i) => ( // oxlint-disable-next-line react/no-array-index-key {h.value} ))} )}
); } function NoHeaders() { return No Headers; }