import "./main.css"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { invoke } from "@tauri-apps/api/core"; import { type } from "@tauri-apps/plugin-os"; import { Button, HeaderSize } from "@yaakapp-internal/ui"; import classNames from "classnames"; import { StrictMode } from "react"; import { useState } from "react"; import { createRoot } from "react-dom/client"; const queryClient = new QueryClient(); type ProxyStartResult = { port: number; alreadyRunning: boolean; }; function App() { const [status, setStatus] = useState("Idle"); const [port, setPort] = useState(null); const [busy, setBusy] = useState(false); const osType = type(); async function startProxy() { setBusy(true); setStatus("Starting..."); try { const result = await invoke("proxy_start", { port: 9090, }); setPort(result.port); setStatus(result.alreadyRunning ? "Already running" : "Running"); } catch (err) { setStatus(`Failed: ${String(err)}`); } finally { setBusy(false); } } async function stopProxy() { setBusy(true); setStatus("Stopping..."); try { const stopped = await invoke("proxy_stop"); setPort(null); setStatus(stopped ? "Stopped" : "Not running"); } catch (err) { setStatus(`Failed: ${String(err)}`); } finally { setBusy(false); } } return (
Yaak Proxy

Status: {status}

Port: {port ?? "Not running"}

); } createRoot(document.getElementById("root") as HTMLElement).render( , );