From 8534405358603914700dbbdc48883c47794c4877 Mon Sep 17 00:00:00 2001 From: Christel Westerberg Date: Thu, 12 Dec 2024 15:41:29 +0100 Subject: [PATCH] fix: reset searchparams after errorcode from planet --- hooks/booking/usePaymentFailedToast.ts | 15 ++++++++++++++- stores/enter-details/index.ts | 18 +++++++++++++----- types/stores/enter-details.ts | 4 +++- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/hooks/booking/usePaymentFailedToast.ts b/hooks/booking/usePaymentFailedToast.ts index 961ab0c2b..806c3d5a2 100644 --- a/hooks/booking/usePaymentFailedToast.ts +++ b/hooks/booking/usePaymentFailedToast.ts @@ -5,10 +5,14 @@ import { useCallback, useEffect } from "react" import { useIntl } from "react-intl" import { PaymentErrorCodeEnum } from "@/constants/booking" +import { useEnterDetailsStore } from "@/stores/enter-details" import { toast } from "@/components/TempDesignSystem/Toasts" export function usePaymentFailedToast() { + const updateSearchParams = useEnterDetailsStore( + (state) => state.actions.updateSeachParamString + ) const intl = useIntl() const searchParams = useSearchParams() const pathname = usePathname() @@ -43,6 +47,15 @@ export function usePaymentFailedToast() { const queryParams = new URLSearchParams(searchParams.toString()) queryParams.delete("errorCode") + + updateSearchParams(queryParams.toString()) router.push(`${pathname}?${queryParams.toString()}`) - }, [searchParams, pathname, errorCode, errorMessage, router]) + }, [ + searchParams, + pathname, + errorCode, + errorMessage, + router, + updateSearchParams, + ]) } diff --git a/stores/enter-details/index.ts b/stores/enter-details/index.ts index a469eb4f0..b2480471b 100644 --- a/stores/enter-details/index.ts +++ b/stores/enter-details/index.ts @@ -133,7 +133,7 @@ export function createDetailsStore( const currentStepIndex = state.steps.indexOf(state.currentStep) const nextStep = state.steps[currentStepIndex + 1] state.currentStep = nextStep - navigate(nextStep, searchParams) + navigate(nextStep, state.searchParamString) }) ) }, @@ -141,7 +141,7 @@ export function createDetailsStore( return set( produce((state) => { state.currentStep = step - navigate(step, searchParams) + navigate(step, state.searchParamString) }) ) }, @@ -185,7 +185,7 @@ export function createDetailsStore( const currentStepIndex = state.steps.indexOf(state.currentStep) const nextStep = state.steps[currentStepIndex + 1] state.currentStep = nextStep - navigate(nextStep, searchParams) + navigate(nextStep, state.searchParamString) }) ) }, @@ -266,7 +266,7 @@ export function createDetailsStore( const currentStepIndex = state.steps.indexOf(state.currentStep) const nextStep = state.steps[currentStepIndex + 1] state.currentStep = nextStep - navigate(nextStep, searchParams) + navigate(nextStep, state.searchParamString) }) ) }, @@ -304,11 +304,19 @@ export function createDetailsStore( const currentStepIndex = state.steps.indexOf(state.currentStep) const nextStep = state.steps[currentStepIndex + 1] state.currentStep = nextStep - navigate(nextStep, searchParams) + navigate(nextStep, state.searchParamString) + }) + ) + }, + updateSeachParamString(searchParamString) { + return set( + produce((state: DetailsState) => { + state.searchParamString = searchParamString }) ) }, }, + searchParamString: searchParams, bedType: initialState.bedType ?? undefined, booking: initialState.booking, breakfast: diff --git a/types/stores/enter-details.ts b/types/stores/enter-details.ts index 9793d902a..e507ab146 100644 --- a/types/stores/enter-details.ts +++ b/types/stores/enter-details.ts @@ -5,7 +5,7 @@ import type { DetailsSchema, SignedInDetailsSchema, } from "@/types/components/hotelReservation/enterDetails/details" -import { StepEnum } from "@/types/enums/step" +import type { StepEnum } from "@/types/enums/step" import type { DetailsProviderProps } from "../providers/enter-details" import type { Packages } from "../requests/packages" @@ -37,6 +37,7 @@ export interface DetailsState { updateBedType: (data: BedTypeSchema) => void updateBreakfast: (data: BreakfastPackage | false) => void updateDetails: (data: DetailsSchema) => void + updateSeachParamString: (searchParamString: string) => void } bedType: BedTypeSchema | undefined booking: BookingData @@ -52,6 +53,7 @@ export interface DetailsState { roomPrice: Price steps: StepEnum[] totalPrice: Price + searchParamString: string } export type InitialState = Pick &