feat(SW-3370): Move phone utils to common * Move phone utils to common * Update lock file Approved-by: Joakim Jäderberg
43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import parsePhoneNumberFromString, { type CountryCode } from "libphonenumber-js"
|
|
|
|
import { logger } from "../logger"
|
|
|
|
import type { Lang } from "../constants/language"
|
|
|
|
export function formatPhoneNumber(
|
|
phoneNumber: string,
|
|
phoneNumberCC?: string | null
|
|
): string {
|
|
if (!phoneNumber) return ""
|
|
|
|
const normalized = phoneNumber.trim().replaceAll(/-|\s/g, "")
|
|
|
|
const parsedPhonenumber = phoneNumberCC?.length
|
|
? parsePhoneNumberFromString(
|
|
normalized,
|
|
phoneNumberCC.toUpperCase() as CountryCode
|
|
)
|
|
: parsePhoneNumberFromString(normalized)
|
|
|
|
if (!parsedPhonenumber?.isValid()) {
|
|
logger.warn(
|
|
`Invalid phone number: ${phoneNumber} with country code: ${phoneNumberCC}`,
|
|
parsedPhonenumber
|
|
)
|
|
}
|
|
|
|
return parsedPhonenumber?.number || normalized
|
|
}
|
|
|
|
export function getDefaultCountryFromLang(lang: Lang): Lowercase<CountryCode> {
|
|
const countryMap: Record<Lang, Lowercase<CountryCode>> = {
|
|
sv: "se",
|
|
da: "dk",
|
|
fi: "fi",
|
|
no: "no",
|
|
de: "de",
|
|
en: "se", // Default to Sweden for English
|
|
}
|
|
return countryMap[lang] || "se"
|
|
}
|