|
|
|
@ -16,6 +16,7 @@ import useNodeData, {
|
|
|
|
|
featureDescription,
|
|
|
|
|
NodeData,
|
|
|
|
|
} from "src/hooks/node-data"
|
|
|
|
|
import LoadingDots from "src/ui/loading-dots"
|
|
|
|
|
import { Link, Route, Router, Switch, useLocation } from "wouter"
|
|
|
|
|
|
|
|
|
|
export default function App() {
|
|
|
|
@ -24,7 +25,7 @@ export default function App() {
|
|
|
|
|
return (
|
|
|
|
|
<main className="min-w-sm max-w-lg mx-auto py-4 sm:py-14 px-5">
|
|
|
|
|
{loadingAuth || !auth ? (
|
|
|
|
|
<div className="text-center py-14">Loading...</div> // TODO(sonia): add a loading view
|
|
|
|
|
<LoadingView />
|
|
|
|
|
) : (
|
|
|
|
|
<WebClient auth={auth} newSession={newSession} />
|
|
|
|
|
)}
|
|
|
|
@ -45,7 +46,7 @@ function WebClient({
|
|
|
|
|
}, [auth, refreshData])
|
|
|
|
|
|
|
|
|
|
return !data ? (
|
|
|
|
|
<div className="text-center py-14">Loading...</div>
|
|
|
|
|
<LoadingView />
|
|
|
|
|
) : data.Status === "NeedsLogin" ||
|
|
|
|
|
data.Status === "NoState" ||
|
|
|
|
|
data.Status === "Stopped" ? (
|
|
|
|
@ -157,3 +158,13 @@ function Header({
|
|
|
|
|
</>
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* LoadingView fills its container with small animated loading dots
|
|
|
|
|
* in the center.
|
|
|
|
|
*/
|
|
|
|
|
export function LoadingView() {
|
|
|
|
|
return (
|
|
|
|
|
<LoadingDots className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2" />
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|