fix: validation

This commit is contained in:
ghost2023
2026-08-01 15:26:11 +03:00
parent 08df953a35
commit d524f4465c

View File

@@ -43,11 +43,17 @@ export function IsValidPhone(validationOptions?: ValidationOptions) {
* Normalize a phone string to canonical E.164. Returns the canonical form when
* parseable, otherwise the trimmed original (tolerant — never throws), or the
* value unchanged when empty/nullish.
*
* Defaults the country to Ethiopia so bare local numbers (no "+", e.g. eTrade's
* "0355235416") resolve the same way the frontend's own toEthiopianE164 already
* assumes — without this hint, libphonenumber can't infer a country for a
* number with no "+" prefix and silently falls through to the untouched local
* string, which then never matches the "+251…" form submitted by the client.
*/
export function normalizeE164(
value: string | null | undefined,
): string | null | undefined {
if (value === undefined || value === null || value === '') return value;
const parsed = parsePhoneNumberFromString(value);
const parsed = parsePhoneNumberFromString(value, 'ET');
return parsed?.isValid() ? parsed.number : value.trim();
}