Saba-dart/lib/utils/phone_helper.dart
2026-04-13 23:41:27 +03:30

37 lines
950 B
Dart

class PhoneHelper {
static String normalizePhone(String phone) {
final raw = phone.trim();
if (raw.isEmpty) return '';
final digits = raw.replaceAll(RegExp(r'\D'), '');
if (digits.isEmpty) return raw;
if (raw.startsWith('+')) {
return '+$digits';
}
if (raw.startsWith('00') && digits.length > 2) {
return '+${digits.substring(2)}';
}
// Iranian local formats
if (digits.length == 11 && digits.startsWith('0')) {
return '+98${digits.substring(1)}';
}
if (digits.length == 10) {
return '+98$digits';
}
if (digits.startsWith('98') && digits.length >= 12 && digits.length <= 15) {
return '+$digits';
}
// Preserve full international numbers instead of collapsing them to
// the last 10 digits, which can merge different identities together.
if (digits.length >= 11 && digits.length <= 15) {
return '+$digits';
}
return raw;
}
}