SPB Git

Repository Public

page.tsx 1.1 KB 31 lines tsx

1'use client';2import { useEffect } from 'react';3import { useRouter } from 'next/navigation';4import { useAuthStatus } from '@/lib/queries';5import { Spinner } from '@/components/ui/misc';6import { Button } from '@/components/ui/button';78/** `/` only redirects (client-side): setup → login → terminal. */9export default function RootPage() {10  const auth = useAuthStatus();11  const router = useRouter();12  useEffect(() => {13    if (!auth.data) return;14    const phone = window.matchMedia('(max-width: 767px)').matches;15    router.replace(auth.data.setupRequired ? '/setup/' : auth.data.authenticated ? (phone ? '/home/' : '/terminal/') : '/login/');16  }, [auth.data, router]);17  return (18    <div className="app-viewport flex flex-col items-center justify-center gap-3 text-center">19      {auth.isError ? (20        <>21          <p className="text-sm font-medium">The server is not reachable</p>22          <p className="text-xs text-text-2">Remote sessions keep running on the server.</p>23          <Button onClick={() => auth.refetch()}>Retry</Button>24        </>25      ) : (26        <Spinner />27      )}28    </div>29  );30}31
Files main
Menu

Theme