Merged in feat/SW-1889 (pull request #1670)
Feat/SW-1889 * fix: remove download invoice from confirmation page * feat: remove EnterDetails Accordions Approved-by: Simon.Emanuelsson
This commit is contained in:
@@ -7,11 +7,7 @@ import type { Price } from "@/types/components/hotelReservation/price"
|
||||
import type { SelectRateSearchParams } from "@/types/components/hotelReservation/selectRate/selectRate"
|
||||
import { CurrencyEnum } from "@/types/enums/currency"
|
||||
import { StepEnum } from "@/types/enums/step"
|
||||
import type {
|
||||
DetailsState,
|
||||
PersistedState,
|
||||
RoomState,
|
||||
} from "@/types/stores/enter-details"
|
||||
import type { PersistedState, RoomState } from "@/types/stores/enter-details"
|
||||
import type { SafeUser } from "@/types/user"
|
||||
|
||||
export function extractGuestFromUser(user: NonNullable<SafeUser>) {
|
||||
@@ -513,54 +509,12 @@ export function findNextInvalidStep(roomState: RoomState) {
|
||||
)
|
||||
}
|
||||
|
||||
export const selectNextStep = (room: RoomState) => {
|
||||
if (room.currentStep === null) {
|
||||
throw new Error("getNextStep: currentStep is null")
|
||||
}
|
||||
|
||||
if (!room.steps[room.currentStep]?.isValid) {
|
||||
return room.currentStep
|
||||
}
|
||||
|
||||
const stepsArray = Object.values(room.steps)
|
||||
const currentIndex = stepsArray.findIndex(
|
||||
(step) => step?.step === room.currentStep
|
||||
)
|
||||
if (currentIndex === stepsArray.length - 1) {
|
||||
return null
|
||||
}
|
||||
|
||||
const nextInvalidStep = stepsArray
|
||||
.slice(currentIndex + 1)
|
||||
.find((step) => !step.isValid)
|
||||
|
||||
return nextInvalidStep?.step ?? null
|
||||
}
|
||||
|
||||
export const checkRoomProgress = (steps: RoomState["steps"]) => {
|
||||
return Object.values(steps)
|
||||
.filter(Boolean)
|
||||
.every((step) => step.isValid)
|
||||
}
|
||||
|
||||
export function handleStepProgression(room: RoomState, state: DetailsState) {
|
||||
const isAllRoomsCompleted = state.rooms.every((r) => r.isComplete)
|
||||
if (isAllRoomsCompleted) {
|
||||
room.currentStep = null
|
||||
state.canProceedToPayment = true
|
||||
} else if (room.isComplete) {
|
||||
room.currentStep = null
|
||||
const nextRoomIndex = state.rooms.findIndex((r) => !r.isComplete)
|
||||
state.activeRoom = nextRoomIndex
|
||||
|
||||
const nextRoom = state.rooms[nextRoomIndex]
|
||||
const nextStep = selectNextStep(nextRoom)
|
||||
nextRoom.currentStep = nextStep
|
||||
} else if (selectNextStep(room)) {
|
||||
room.currentStep = selectNextStep(room)
|
||||
}
|
||||
}
|
||||
|
||||
export function readFromSessionStorage(): PersistedState | undefined {
|
||||
if (typeof window === "undefined") {
|
||||
return undefined
|
||||
|
||||
Reference in New Issue
Block a user