import styles from "~components/Details/Details.module.scss"; import * as React from "react"; import classNames from "classnames"; import {RequestPayload, ResponsePayload} from "~hooks/useRequests"; import { Dispatch, forwardRef, SetStateAction, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react"; import ReactJson from 'react-json-view'; import styles from './Content.module.scss'; interface ContentProps { data: RequestPayload | ResponsePayload setRaw: Dispatch> raw?: boolean } export default function Content({ raw, setRaw, ...props }: ContentProps): JSX.Element { return (
setRaw(!raw)}/>
{(() => { try { return ContentBody({ ...props, raw }) } catch { return (

Body could not be rendered

setRaw(true)}>View raw
) } })()}
) }; function ContentBody({ data, raw = false }: Omit) { const contentType = useMemo(() => { if (raw) { return ''; } const [_, type] = ( Object .entries(data.headers) .find(([key]) => key.toLowerCase() === 'content-type') ); return type.toLowerCase().split(';')[0]; }, [data, raw]); if (raw) { return
{atob(data.body)}
} if (['application/pdf', 'text/html'].includes(contentType)) { return