fix(leads): keep Persian digits when saving contact-form phones

Mixed Persian and Latin digits were stripped down to the Latin part, so some website leads stored a truncated mobile.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-11-03 15:50:05 +03:30
co-authored by Cursor
parent 534dae45b2
commit c26353624e
+12 -2
View File
@@ -9,11 +9,21 @@ export function normalizeEmail(value?: string | null): string | null {
return v ? v.toLowerCase() : null; return v ? v.toLowerCase() : null;
} }
const FA_DIGITS = '۰۱۲۳۴۵۶۷۸۹';
const AR_DIGITS = '٠١٢٣٤٥٦٧٨٩';
/** ارقام فارسی و عربی را به لاتین برمی‌گرداند تا از شماره حذف نشوند. */
function latinDigits(value: string): string {
return value.replace(/[۰-۹٠-٩]/g, (ch) => {
const fa = FA_DIGITS.indexOf(ch);
return String(fa >= 0 ? fa : AR_DIGITS.indexOf(ch));
});
}
/** Keep digits and leading + for Iranian/international numbers. */ /** Keep digits and leading + for Iranian/international numbers. */
export function normalizePhone(value?: string | null): string | null { export function normalizePhone(value?: string | null): string | null {
const v = emptyToNull(value); const v = emptyToNull(value);
if (!v) return null; if (!v) return null;
const cleaned = v.replace(/[^\d+]/g, '');␍ const cleaned = latinDigits(v).replace(/[^\d+]/g, '');
return cleaned.length ? cleaned : null; return cleaned.length ? cleaned : null;
} }
␍