Files
gridpilot.gg/apps/website/app/onboarding/page.tsx
2026-01-18 23:43:58 +01:00

36 lines
1.2 KiB
TypeScript

import { redirect } from 'next/navigation';
import { OnboardingWizardClient } from '@/client-wrapper/OnboardingWizardClient';
import { OnboardingPageQuery } from '@/lib/page-queries/OnboardingPageQuery';
import { SearchParamBuilder } from '@/lib/routing/search-params/SearchParamBuilder';
import { routes } from '@/lib/routing/RouteConfig';
/**
* Onboarding Page
*
* Server Component that handles authentication and authorization.
* Redirects to login if not authenticated.
* Redirects to dashboard if already onboarded.
*/
export default async function OnboardingPage() {
// Use PageQuery to check if user is already onboarded
const result = await OnboardingPageQuery.execute();
if (result.isErr()) {
const error = result.getError();
if (error === 'unauthorized') {
redirect(`${routes.auth.login}${SearchParamBuilder.auth(routes.protected.onboarding)}`);
} else if (error === 'serverError' || error === 'networkError') {
// Show error page or let them proceed with a warning
// For now, we'll let them proceed
}
} else {
const viewData = result.unwrap();
if (viewData.isAlreadyOnboarded) {
redirect(routes.protected.dashboard);
}
}
return <OnboardingWizardClient />;
}