51 lines
1.2 KiB
TypeScript
51 lines
1.2 KiB
TypeScript
type OnboardingRouteCompany = {
|
|
id: string;
|
|
issuePrefix: string;
|
|
};
|
|
|
|
export function isOnboardingPath(pathname: string): boolean {
|
|
const segments = pathname.split("/").filter(Boolean);
|
|
|
|
if (segments.length === 1) {
|
|
return segments[0]?.toLowerCase() === "onboarding";
|
|
}
|
|
|
|
if (segments.length === 2) {
|
|
return segments[1]?.toLowerCase() === "onboarding";
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
export function resolveRouteOnboardingOptions(params: {
|
|
pathname: string;
|
|
companyPrefix?: string;
|
|
companies: OnboardingRouteCompany[];
|
|
}): { initialStep: 1 | 2; companyId?: string } | null {
|
|
const { pathname, companyPrefix, companies } = params;
|
|
|
|
if (!isOnboardingPath(pathname)) return null;
|
|
|
|
if (!companyPrefix) {
|
|
return { initialStep: 1 };
|
|
}
|
|
|
|
const matchedCompany =
|
|
companies.find(
|
|
(company) =>
|
|
company.issuePrefix.toUpperCase() === companyPrefix.toUpperCase(),
|
|
) ?? null;
|
|
|
|
if (!matchedCompany) {
|
|
return { initialStep: 1 };
|
|
}
|
|
|
|
return { initialStep: 2, companyId: matchedCompany.id };
|
|
}
|
|
|
|
export function shouldRedirectCompanylessRouteToOnboarding(params: {
|
|
pathname: string;
|
|
hasCompanies: boolean;
|
|
}): boolean {
|
|
return !params.hasCompanies && !isOnboardingPath(params.pathname);
|
|
}
|