Feature/wrap logging * feat: change all logging to go through our own logger function so that we can control log levels * move packages/trpc to using our own logger * merge Approved-by: Linus Flood
109 lines
2.7 KiB
TypeScript
109 lines
2.7 KiB
TypeScript
import { logger } from "@scandic-hotels/common/logger"
|
|
|
|
import type {
|
|
Ancillary,
|
|
SelectedAncillary,
|
|
} from "@/types/components/myPages/myStay/ancillaries"
|
|
import type { AncillaryFormData } from "@/components/HotelReservation/MyStay/Ancillaries/AddAncillaryFlow/schema"
|
|
import type { BreakfastData } from "@/stores/my-stay/add-ancillary-flow"
|
|
|
|
export const generateDeliveryOptions = () => {
|
|
const timeSlots = ["16:00-17:00", "17:00-18:00", "18:00-19:00", "19:00-20:00"]
|
|
|
|
return timeSlots.map((slot) => ({
|
|
label: slot,
|
|
value: slot,
|
|
}))
|
|
}
|
|
|
|
export function buildAncillaryPackages(
|
|
data: AncillaryFormData,
|
|
ancillary: SelectedAncillary | null
|
|
) {
|
|
const packages = []
|
|
|
|
if (ancillary?.id && data.quantityWithCard) {
|
|
packages.push({
|
|
code: ancillary.id,
|
|
quantity: data.quantityWithCard,
|
|
comment: data.optionalText || undefined,
|
|
})
|
|
}
|
|
|
|
if (ancillary?.loyaltyCode && data.quantityWithPoints) {
|
|
packages.push({
|
|
code: ancillary.loyaltyCode,
|
|
quantity: data.quantityWithPoints,
|
|
comment: data.optionalText || undefined,
|
|
})
|
|
}
|
|
|
|
return packages
|
|
}
|
|
|
|
const ancillarySessionKey = "ancillarySessionData"
|
|
export const getAncillarySessionData = ():
|
|
| {
|
|
formData?: AncillaryFormData
|
|
selectedAncillary?: Ancillary["ancillaryContent"][number] | null
|
|
packages: {
|
|
code: string
|
|
quantity: number
|
|
comment: string | undefined
|
|
}[]
|
|
isBreakfast: boolean
|
|
breakfastData: BreakfastData | null
|
|
}
|
|
| undefined => {
|
|
if (typeof window === "undefined") return undefined
|
|
|
|
try {
|
|
const storedData = sessionStorage.getItem(ancillarySessionKey)
|
|
return storedData ? JSON.parse(storedData) : undefined
|
|
} catch (error) {
|
|
logger.error("Error reading from session storage:", error)
|
|
return undefined
|
|
}
|
|
}
|
|
|
|
export function setAncillarySessionData({
|
|
formData,
|
|
selectedAncillary,
|
|
packages,
|
|
isBreakfast,
|
|
breakfastData,
|
|
}: {
|
|
formData?: AncillaryFormData
|
|
selectedAncillary?: Ancillary["ancillaryContent"][number] | null
|
|
packages: {
|
|
code: string
|
|
quantity: number
|
|
comment: string | undefined
|
|
}[]
|
|
isBreakfast: boolean
|
|
breakfastData: BreakfastData | null
|
|
}) {
|
|
if (typeof window === "undefined") return
|
|
try {
|
|
const currentData = getAncillarySessionData() || {}
|
|
sessionStorage.setItem(
|
|
ancillarySessionKey,
|
|
JSON.stringify({
|
|
...currentData,
|
|
formData,
|
|
selectedAncillary,
|
|
packages,
|
|
isBreakfast,
|
|
breakfastData,
|
|
})
|
|
)
|
|
} catch (error) {
|
|
logger.error("Error writing to session storage:", error)
|
|
}
|
|
}
|
|
|
|
export function clearAncillarySessionData() {
|
|
if (typeof window === "undefined") return
|
|
sessionStorage.removeItem(ancillarySessionKey)
|
|
}
|