fix: allow any type of phone number
This commit is contained in:
committed by
Michael Zetterberg
parent
79e669020a
commit
9580281421
@@ -1,4 +1,5 @@
|
||||
import isEqual from "fast-deep-equal"
|
||||
import { parsePhoneNumberFromString } from "libphonenumber-js"
|
||||
|
||||
import {
|
||||
sumPackages,
|
||||
@@ -16,6 +17,13 @@ import type { PersistedState, RoomState } from "@/types/stores/enter-details"
|
||||
import type { SafeUser } from "@/types/user"
|
||||
|
||||
export function extractGuestFromUser(user: NonNullable<SafeUser>) {
|
||||
let phoneNumberCC = ""
|
||||
if (user.phoneNumber) {
|
||||
const parsedPhoneNumber = parsePhoneNumberFromString(user.phoneNumber)
|
||||
if (parsedPhoneNumber?.country) {
|
||||
phoneNumberCC = parsedPhoneNumber.country.toLowerCase()
|
||||
}
|
||||
}
|
||||
return {
|
||||
countryCode: user.address.countryCode?.toString(),
|
||||
email: user.email,
|
||||
@@ -24,6 +32,7 @@ export function extractGuestFromUser(user: NonNullable<SafeUser>) {
|
||||
join: false,
|
||||
membershipNo: user.membership?.membershipNumber,
|
||||
phoneNumber: user.phoneNumber ?? "",
|
||||
phoneNumberCC,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import { useContext } from "react"
|
||||
import { create, useStore } from "zustand"
|
||||
|
||||
import { REDEMPTION } from "@/constants/booking"
|
||||
import { getDefaultCountryFromLang } from "@/constants/languages"
|
||||
import { dt } from "@/lib/dt"
|
||||
|
||||
import {
|
||||
@@ -34,6 +35,7 @@ import type {
|
||||
RoomState,
|
||||
} from "@/types/stores/enter-details"
|
||||
import type { SafeUser } from "@/types/user"
|
||||
import type { Lang } from "@/constants/routes/hotelReservation"
|
||||
|
||||
const defaultGuestState = {
|
||||
countryCode: "",
|
||||
@@ -44,6 +46,7 @@ const defaultGuestState = {
|
||||
lastName: "",
|
||||
membershipNo: "",
|
||||
phoneNumber: "",
|
||||
phoneNumberCC: "",
|
||||
zipCode: "",
|
||||
}
|
||||
|
||||
@@ -53,7 +56,8 @@ export function createDetailsStore(
|
||||
initialState: InitialState,
|
||||
searchParams: string,
|
||||
user: SafeUser,
|
||||
breakfastPackages: BreakfastPackages
|
||||
breakfastPackages: BreakfastPackages,
|
||||
lang: Lang
|
||||
) {
|
||||
const isMember = !!user
|
||||
const isRedemption =
|
||||
@@ -328,6 +332,8 @@ export function createDetailsStore(
|
||||
currentRoom.guest.firstName = data.firstName
|
||||
currentRoom.guest.join = data.join
|
||||
currentRoom.guest.lastName = data.lastName
|
||||
currentRoom.guest.phoneNumber = data.phoneNumber
|
||||
currentRoom.guest.phoneNumberCC = data.phoneNumberCC
|
||||
|
||||
if (data.specialRequest?.comment) {
|
||||
currentRoom.specialRequest.comment =
|
||||
@@ -339,7 +345,6 @@ export function createDetailsStore(
|
||||
} else {
|
||||
currentRoom.guest.membershipNo = data.membershipNo
|
||||
}
|
||||
currentRoom.guest.phoneNumber = data.phoneNumber
|
||||
|
||||
// Only valid for room 1
|
||||
if (idx === 0 && data.join && !isMember) {
|
||||
@@ -397,7 +402,10 @@ export function createDetailsStore(
|
||||
guest:
|
||||
isMember && idx === 0
|
||||
? deepmerge(defaultGuestState, extractGuestFromUser(user))
|
||||
: defaultGuestState,
|
||||
: {
|
||||
...defaultGuestState,
|
||||
phoneNumberCC: getDefaultCountryFromLang(lang),
|
||||
},
|
||||
roomPrice: getRoomPrice(room.roomRate, isMember && idx === 0),
|
||||
specialRequest: {
|
||||
comment: "",
|
||||
|
||||
Reference in New Issue
Block a user