Connect Meshkee backend, blog and shared account session

This commit is contained in:
Alireza Hassani
2026-09-05 19:41:56 +03:30
parent ee4b384238
commit de46b50e13
33 changed files with 803 additions and 11 deletions
+17
View File
@@ -0,0 +1,17 @@
export function normalizeCell(value: string) {
const latin=value.replace(/[۰-۹]/g,c=>String('۰۱۲۳۴۵۶۷۸۹'.indexOf(c))).replace(/[٠-٩]/g,c=>String('٠١٢٣٤٥٦٧٨٩'.indexOf(c))).replace(/[\s()-]/g,'');
if(latin.startsWith('09'))return '+98'+latin.slice(1);
if(latin.startsWith('0098'))return '+'+latin.slice(2);
return latin;
}
export function validateContact(input: Record<string,unknown>) {
const fields=['title','name','email','cellNumber','text'] as const;
const data=Object.fromEntries(fields.map(key=>[key,typeof input[key]==='string'?input[key].trim():''])) as Record<typeof fields[number],string>;
const errors:Record<string,string>={};
for(const key of ['title','name','text'] as const)if(!data[key])errors[key]='تکمیل این بخش ضروری است.';
for(const [key,max] of Object.entries({title:200,name:120,email:254,cellNumber:25,text:5000}))if(data[key as keyof typeof data].length>max)errors[key]='متن واردشده بیش از حد طولانی است.';
if(data.email&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(data.email))errors.email='ایمیل معتبر وارد کنید.';
data.cellNumber=normalizeCell(data.cellNumber);
if(data.cellNumber&&!/^\+[1-9]\d{7,14}$/.test(data.cellNumber))errors.cellNumber='شماره را با ۰۹ یا کد کشور وارد کنید.';
return {data,errors};
}