2026-09-09 09:19:41 +00:00
|
|
|
export type InitialOnboardingNavigation =
|
|
|
|
|
| "login"
|
|
|
|
|
| "application"
|
|
|
|
|
| "onboarding"
|
|
|
|
|
| "provision_onboarding"
|
|
|
|
|
| "onboarding_inconsistent";
|
|
|
|
|
|
|
|
|
|
export type InitialOnboardingNavigationInput = {
|
|
|
|
|
isAuthenticated: boolean;
|
|
|
|
|
availableCompaniesCount: number;
|
|
|
|
|
onboardingStatus: "not_provisioned" | "pending" | "completed";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/** Decide la navegación sin leer ni modificar persistencia. */
|
|
|
|
|
export function resolveInitialOnboardingNavigation(
|
|
|
|
|
input: InitialOnboardingNavigationInput
|
|
|
|
|
): InitialOnboardingNavigation {
|
2026-09-10 11:26:33 +00:00
|
|
|
if (!input.isAuthenticated) {
|
|
|
|
|
return "login";
|
|
|
|
|
}
|
|
|
|
|
if (input.availableCompaniesCount > 0) {
|
|
|
|
|
return "application";
|
|
|
|
|
}
|
|
|
|
|
if (input.onboardingStatus === "pending") {
|
|
|
|
|
return "onboarding";
|
|
|
|
|
}
|
|
|
|
|
if (input.onboardingStatus === "completed") {
|
|
|
|
|
return "onboarding_inconsistent";
|
|
|
|
|
}
|
2026-09-09 09:19:41 +00:00
|
|
|
return "provision_onboarding";
|
|
|
|
|
}
|