import { FormEvent, useState } from 'react'; import { invoke } from '@tauri-apps/api/tauri'; import Editor from './components/Editor/Editor'; import { Input } from './components/Input'; import { HStack, VStack } from './components/Stacks'; import { Button } from './components/Button'; import { DropdownMenuRadio } from './components/Dropdown'; import { WindowDragRegion } from './components/WindowDragRegion'; import { IconButton } from './components/IconButton'; interface Response { url: string; method: string; body: string; status: string; elapsed: number; elapsed2: number; headers: Record; } function App() { const [error, setError] = useState(null); const [responseBody, setResponseBody] = useState(null); const [url, setUrl] = useState('https://go-server.schier.dev/debug'); const [loading, setLoading] = useState(false); const [method, setMethod] = useState('get'); async function sendRequest(e: FormEvent) { e.preventDefault(); setLoading(true); setError(null); try { const resp = (await invoke('send_request', { method, url })) as Response; if (resp.body.includes('')) { resp.body = resp.body.replace(//gi, ``); } setLoading(false); setResponseBody(resp); } catch (err) { setLoading(false); setError(`${err}`); } } const contentType = responseBody?.headers['content-type']?.split(';')[0] ?? 'text/plain'; return ( <>
Hello, Friend!
setUrl(e.currentTarget.value)} value={url} placeholder="Enter a URL..." /> {error &&
{error}
} {responseBody !== null && ( <>
{responseBody?.method.toUpperCase()}  •  {responseBody?.status}  •  {responseBody?.elapsed}ms  •  {responseBody?.elapsed2}ms
{contentType.includes('html') ? (