47 lines · 1.2 KB · TypeScript
RawDownload
import { createFileRoute, redirect, useNavigate } from "@tanstack/react-router"; import { PairingPendingSurface, PairingRouteSurface } from "../components/auth/PairingRouteSurface";import {  ensurePrimaryEnvironmentReady,  resolveInitialServerAuthGateState,} from "../environments/primary"; export const Route = createFileRoute("/pair")({  beforeLoad: async () => {    const [, authGateState] = await Promise.all([      ensurePrimaryEnvironmentReady(),      resolveInitialServerAuthGateState(),    ]);    if (authGateState.status === "authenticated") {      throw redirect({ to: "/", replace: true });    }    return {      authGateState,    };  },  component: PairRouteView,  pendingComponent: PairRoutePendingView,}); function PairRouteView() {  const { authGateState } = Route.useRouteContext();  const navigate = useNavigate();   if (!authGateState) {    return null;  }   return (    <PairingRouteSurface      auth={authGateState.auth}      onAuthenticated={() => {        void navigate({ to: "/", replace: true });      }}      {...(authGateState.errorMessage ? { initialErrorMessage: authGateState.errorMessage } : {})}    />  );} function PairRoutePendingView() {  return <PairingPendingSurface />;}