import { parsePhoneNumberFromString } from "libphonenumber-js" import { logger } from "@scandic-hotels/common/logger" import { detailsStorageName } from "." import type { User } from "@scandic-hotels/trpc/types/user" import type { PersistedState, RoomState } from "./types" export function extractGuestFromUser(user: User) { 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, firstName: user.firstName, lastName: user.lastName, join: false, membershipNo: user.membership?.membershipNumber, phoneNumber: user.phoneNumber ?? "", phoneNumberCC, } } export const checkRoomProgress = (steps: RoomState["steps"]) => { return Object.values(steps) .filter(Boolean) .every((step) => step.isValid) } export function readFromSessionStorage(): PersistedState | undefined { if (typeof window === "undefined") { return undefined } try { const storedData = sessionStorage.getItem(detailsStorageName) if (!storedData) { return undefined } const parsedData = JSON.parse(storedData) as PersistedState if (!parsedData.booking || !parsedData.rooms) { return undefined } return parsedData } catch (error) { logger.error("Error reading from session storage:", error) return undefined } } export function writeToSessionStorage(state: PersistedState) { if (typeof window === "undefined") { return } try { sessionStorage.setItem(detailsStorageName, JSON.stringify(state)) } catch (error) { logger.error("Error writing to session storage:", error) } } export function clearSessionStorage() { if (typeof window === "undefined") { return } sessionStorage.removeItem(detailsStorageName) }