nxtgauge-frontend-solid/src/lib/role-utils.ts

56 lines
1.7 KiB
TypeScript
Raw Normal View History

/**
* Shared role utilities used by ProfilePage, SwitchServicesPage, and any
* other page that needs to map a role key to an API path prefix.
*/
/**
* Maps a role key (e.g. "PHOTOGRAPHER") to the API path prefix used by that
* role's backend service (e.g. "photographers").
*
* Must stay in sync with the Axum router mounts in
* nxtgauge-backend-rust/apps/gateway/src/main.rs.
*/
export function roleKeyToPrefix(roleKey: string): string {
switch (roleKey) {
case "JOB_SEEKER": return "job-seekers";
case "COMPANY": return "company";
case "CATERING_SERVICES": return "catering-services";
case "MAKEUP_ARTIST": return "makeup-artists";
default:
// PHOTOGRAPHER → photographers, DEVELOPER → developers, etc.
return roleKey.toLowerCase().replace(/_/g, "-") + "s";
}
}
/**
* Field IDs that are considered "shared identity" documents by convention
* when the onboarding schema has not explicitly marked them with
* `identity_shared: true`. Admins can use these IDs to get automatic
* pre-fill from the user's active role or they can mark any field with
* `identity_shared: true` to opt into pre-fill explicitly.
*/
export const CONVENTION_IDENTITY_FIELD_IDS = new Set([
"aadhaar",
"aadhaar_card",
"aadhaar_number",
"aadhar",
"pan",
"pan_card",
"pan_number",
"passport",
"passport_number",
"selfie",
"profile_photo",
"photo_id",
"address_proof",
"government_id",
]);
/**
* Returns true when a field should be pre-filled from the user's existing
* profile across roles (either admin-flagged or matched by convention).
*/
export function isIdentityField(fieldId: string, adminFlagged: boolean): boolean {
return adminFlagged || CONVENTION_IDENTITY_FIELD_IDS.has(fieldId);
}