import * as React from "react"; import useRequests, {RequestResponse, ReadyState} from "../../hooks/useRequests"; import {useEffect, useMemo, useState} from "react"; import styles from './App.module.scss'; import Details from "../Details/Details"; import RequestSummary from "../RequestSummary/RequestSummary"; import {getHost} from "../../utils"; import {Container, Navbar, Col, Row, Nav, ListGroup} from "react-bootstrap"; import classNames from "classnames"; interface Config { url: string } type ReadyStateMap = { [ReadyState.CONNECTING]: string, [ReadyState.OPEN]: string, [ReadyState.CLOSING]: string, [ReadyState.CLOSED]: string, } const statusMap: ReadyStateMap = { [ReadyState.CONNECTING]: '🔴', [ReadyState.OPEN]: '🟢', [ReadyState.CLOSING]: '🔴', [ReadyState.CLOSED]: '🔴', } export default function App() { const [config, setConfig]= useState(null) const { calls, readyState } = useRequests({ onConnect: async () => { const response = await fetch(`http://${getHost()}/config/`) const config = await response.json() setConfig(config) } }); useEffect(() => { const url = new URL(config?.url ?? 'https://loading...'); document.title = `${statusMap[readyState]} ${url.host} | TTUN`; }, [readyState, config?.url]) const [selectedRequestIndex, setSelectedRequestIndex] = useState(null); const selectedRequest = useMemo(() => ( selectedRequestIndex === null ? null : calls[selectedRequestIndex] ), [selectedRequestIndex, calls]); return config && ( <> {statusMap[readyState]} TTUN {config.url} { calls.length > 0 ? ( calls.slice(0).reverse().map((requestResponse, index) => { const selected = selectedRequestIndex === calls.length - index - 1; return ( setSelectedRequestIndex(calls.length - index - 1)} key={`request-${index}`} className={classNames({ 'bg-primary': selected, 'text-light': selected, 'border-bottom': true })} > ) }) ) : (

No requests

) }
{ selectedRequest !== null ? (
) : (

Select a request to inspect it

) } //
//
// {statusMap[readyState]} TTUN // {config.url} //
//
//
    // { // calls.length > 0 // ? calls.slice(0).reverse().map((requestResponse, index) => ( //
  • setSelectedRequestIndex(calls.length - index - 1)} key={`request-${index}`}> // //
  • // )) // : ( //
    //

    No requests

    //
    // ) // } //
// //
// { // selectedRequest !== null // ? ( //
// ) : ( //
//

Select a request to inspect it

//
// ) // } //
//
//
); }