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:
@@ -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",
|
||||
|
||||
42
packages/common/utils/phone.ts
Normal file
42
packages/common/utils/phone.ts
Normal 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"
|
||||
}
|
||||
Reference in New Issue
Block a user