import cx from "classnames" import React from "react" import LegacyClientView from "src/components/views/legacy-client-view" import LoginClientView from "src/components/views/login-client-view" import ReadonlyClientView from "src/components/views/readonly-client-view" import useAuth, { AuthResponse } from "src/hooks/auth" import useNodeData from "src/hooks/node-data" import ManagementClientView from "./views/management-client-view" export default function App() { const { data: auth, loading: loadingAuth, waitOnAuth } = useAuth() return (
{loadingAuth ? (
Loading...
// TODO(sonia): add a loading view ) : ( )}
) } function WebClient({ auth, waitOnAuth, }: { auth?: AuthResponse waitOnAuth: () => Promise }) { const { data, refreshData, updateNode } = useNodeData() return ( <> {!data ? (
Loading...
// TODO(sonia): add a loading view ) : data?.Status === "NeedsLogin" || data?.Status === "NoState" ? ( // Client not on a tailnet, render login. updateNode({ Reauthenticate: true })} /> ) : data.DebugMode === "full" && auth?.ok ? ( // Render new client interface in management mode. ) : data.DebugMode === "login" || data.DebugMode === "full" ? ( // Render new client interface in readonly mode. ) : ( // Render legacy client interface. )} {data &&