import { Separator } from "@/components/ui/separator"; import { SidebarTrigger } from "@/components/ui/sidebar"; import { ModeToggle } from "./mode-toggle"; import { useQuery, useQueryClient } from "@tanstack/react-query"; import { Button } from "./ui/button"; import { useEffect, useState } from "react"; export function SiteHeader() { const [oldLoginState, setOldLoginState] = useState(false); const queryClient = useQueryClient(); const { data: pingResult } = useQuery({ queryKey: ["ping"], queryFn: async () => { let res = await fetch("/api/scp/ping"); return (await res.text()) === "true"; }, refetchInterval: 30000, }); const { data: isLoggedIn } = useQuery({ queryKey: ["is_scp_logged_in"], queryFn: async () => { let res = await fetch("/api/scp/auth/is_logged_in"); return (await res.text()) === "true"; }, refetchInterval: 5000, }); useEffect(() => { if (isLoggedIn) { if (!oldLoginState) { queryClient.invalidateQueries({ queryKey: ["user"] }); setOldLoginState(true); } } }, [isLoggedIn]); async function startFlow() { let res = await fetch("/api/scp/auth/start_flow"); if (res.ok && window) { let url = await res.text(); window.open(url, "_blank")?.focus(); } } return (
Netcup {pingResult ? ( isLoggedIn ? (
 
) : (
 
) ) : (
 
)}
{!isLoggedIn && pingResult && ( )}

Documents

); }