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) => ( // biome-ignore lint/suspicious/noArrayIndexKey: none {h.value} ))} )} Response Headers } > {responseHeaders.length === 0 ? ( ) : ( {responseHeaders.map((h, i) => ( // biome-ignore lint/suspicious/noArrayIndexKey: none {h.value} ))} )}
); } function NoHeaders() { return No Headers; }