From bcb77d979d817e1e609adb4d007bbbcc3f61efbd Mon Sep 17 00:00:00 2001 From: Tom van der Lee Date: Thu, 30 Dec 2021 09:51:00 +0100 Subject: Prepare for github --- src/components/Details/Details.tsx | 148 +++++++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 src/components/Details/Details.tsx (limited to 'src/components/Details/Details.tsx') diff --git a/src/components/Details/Details.tsx b/src/components/Details/Details.tsx new file mode 100644 index 0000000..c4a23f4 --- /dev/null +++ b/src/components/Details/Details.tsx @@ -0,0 +1,148 @@ +import * as React from "react"; +import { + RequestPayload, + RequestResponse, + ResponsePayload +} from "~hooks/useRequests"; +import {useCallback, useEffect, useMemo, useState} from "react"; +import styles from "./Details.module.scss"; +import RequestSummary from "../RequestSummary/RequestSummary"; +import classNames from 'classnames'; +import Content from "../Content/Content"; +import {getHost} from "../../utils"; + + +interface TimingProps { + timing: number; +} + + +function Timing({ timing }: TimingProps) { + const value = useMemo(() => (Math.round(timing * 1000) / 1000), [timing]); + const showSeconds = useMemo(() => value > 1, [value]); + + return !Number.isNaN(value) + ? ( + <> + {`${showSeconds ? value : value * 1000}${ showSeconds ? 's' : 'ms' }`} + + ) + : null; +} + +interface HeadersProps { + title: string + headers: { + [key: string]: string + } +} + +function Headers({ title, headers }: HeadersProps) { + return ( +
+

{ title }

+ { + Object.entries(headers).map(([key, value]) => ( + <> +
{key}
+
{value}
+ + )) + } +
+ ) +} + +interface DetailsProps { + requestResponse: RequestResponse +} + +type Tab = 'headers' | 'request' | 'response' + +export default function Details({ requestResponse }: DetailsProps) { + const [tab, selectTab] = useState('headers'); + const [raw, setRaw] = useState(false); + + const resend = useCallback(async () => fetch( + `http://${getHost()}/resend/`, + { + method: 'POST', + body: JSON.stringify({ + ...requestResponse.request, + id: undefined + }) + } + ), [requestResponse]); + + return ( +
+
+ + +
+ + + + +
+ + +
+
+
+
+ { + tab === 'headers' && ( + <> + + { + requestResponse.response && ( + + ) + } + + ) + } + { + tab === 'request' && ( + + ) + } + { + tab === 'response' && requestResponse.response !== undefined && ( + + ) + } +
+
+ ) +} -- cgit v1.2.3