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; } }