Files
modstagram-next/src/lib/userLevel.ts
2026-07-18 14:29:05 +03:30

38 lines
1.3 KiB
TypeScript

export const USER_LEVELS = {
NEW: "تازه وارد",
STANDARD: "استاندارد",
PRO: "حرفه‌ای",
MASTER: "استاد",
SUPERMODEL: "سپورمدل",
} as const;
/** Normalize level from URL slug or query (handles ZWNJ / spacing variants). */
export function normalizeUserLevel(raw?: string | null): string {
if (!raw) return "";
const text = raw.trim().replace(/\u200c/g, "").replace(/\s+/g, " ");
if (text === USER_LEVELS.NEW) return USER_LEVELS.NEW;
if (text === USER_LEVELS.STANDARD) return USER_LEVELS.STANDARD;
if (text === USER_LEVELS.MASTER) return USER_LEVELS.MASTER;
if (text === USER_LEVELS.SUPERMODEL) return USER_LEVELS.SUPERMODEL;
if (text === USER_LEVELS.PRO || text === "حرفه ای") return USER_LEVELS.PRO;
return raw.trim();
}
/** Extract user level token from Persian SEO slug text. */
export function parseUserLevelFromSlug(fullText: string): string {
const text = fullText.replace(/\u200c/g, " ");
if (text.includes(USER_LEVELS.NEW)) return USER_LEVELS.NEW;
if (text.includes(USER_LEVELS.STANDARD)) return USER_LEVELS.STANDARD;
if (text.includes(USER_LEVELS.SUPERMODEL)) return USER_LEVELS.SUPERMODEL;
if (text.includes(USER_LEVELS.MASTER)) return USER_LEVELS.MASTER;
if (/حرفه[\s\u200c]*ای/.test(text) || text.includes(USER_LEVELS.PRO)) {
return USER_LEVELS.PRO;
}
return "";
}