Merged in feat/sw3370-move-phone-utils (pull request #2743)

feat(SW-3370): Move phone utils to common

* Move phone utils to common

* Update lock file


Approved-by: Joakim Jäderberg
This commit is contained in:
Anton Gunnarsson
2025-09-02 06:53:58 +00:00
parent 65c6bc4c59
commit ecd567f54f
12 changed files with 33 additions and 30 deletions

View File

@@ -51,6 +51,7 @@
"./utils/rangeArray": "./utils/rangeArray.ts",
"./utils/safeTry": "./utils/safeTry.ts",
"./utils/url": "./utils/url.ts",
"./utils/phone": "./utils/phone.ts",
"./utils/promiseWithTimeout": "./utils/promiseWithTimeout.ts",
"./utils/zod/*": "./utils/zod/*.ts"
},
@@ -60,6 +61,7 @@
"@t3-oss/env-nextjs": "^0.13.4",
"deepmerge": "^4.3.1",
"flat": "^6.0.1",
"libphonenumber-js": "^1.12.7",
"lodash-es": "^4.17.21",
"nanoid": "^5.1.5",
"zod": "^3.24.4",

View File

@@ -0,0 +1,42 @@
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"
}