import { createFileRoute, redirect, useNavigate } from "@tanstack/react-router"; import { HostedPairingRouteSurface, PairingPendingSurface, PairingRouteSurface,} from "../components/auth/PairingRouteSurface"; export const Route = createFileRoute("/pair")({ beforeLoad: async ({ context }) => { const { authGateState } = context; if (authGateState.status === "hosted-pairing") { return { authGateState, }; } if (authGateState.status === "authenticated" || authGateState.status === "hosted-static") { throw redirect({ to: "/", replace: true }); } return { authGateState, }; }, component: PairRouteView, pendingComponent: PairRoutePendingView,}); function PairRouteView() { const { authGateState } = Route.useRouteContext(); const navigate = useNavigate(); if (!authGateState) { return null; } if (authGateState.status === "hosted-pairing") { return <HostedPairingRouteSurface />; } return ( <PairingRouteSurface auth={authGateState.auth} onAuthenticated={() => { void navigate({ to: "/", replace: true }); }} {...(authGateState.errorMessage ? { initialErrorMessage: authGateState.errorMessage } : {})} /> );} function PairRoutePendingView() { return <PairingPendingSurface />;}
import { createFileRoute, redirect, useNavigate } from "@tanstack/react-router";
import {
HostedPairingRouteSurface,
PairingPendingSurface,
PairingRouteSurface,
} from "../components/auth/PairingRouteSurface";
export const Route = createFileRoute("/pair")({
beforeLoad: async ({ context }) => {
const { authGateState } = context;
if (authGateState.status === "hosted-pairing") {
return {
authGateState,
};
}
if (authGateState.status === "authenticated" || authGateState.status === "hosted-static") {
throw redirect({ to: "/", replace: true });
}
return {
authGateState,
};
},
component: PairRouteView,
pendingComponent: PairRoutePendingView,
});
function PairRouteView() {
const { authGateState } = Route.useRouteContext();
const navigate = useNavigate();
if (!authGateState) {
return null;
}
if (authGateState.status === "hosted-pairing") {
return <HostedPairingRouteSurface />;
}
return (
<PairingRouteSurface
auth={authGateState.auth}
onAuthenticated={() => {
void navigate({ to: "/", replace: true });
}}
{...(authGateState.errorMessage ? { initialErrorMessage: authGateState.errorMessage } : {})}
/>
);
}
function PairRoutePendingView() {
return <PairingPendingSurface />;
}