Feat/SW-1368 1369 Guarantee late arrival * feat(SW-1368-SW-1369): guarantee late arrival for confirmation page and my stay * feat(SW-1368-SW-1369): guarantee late arrival updated design * feat(SW-1368-SW-1369): add translations * feat(SW-1368-SW-1369): add translations * feat(SW-1368-SW-1369): fix merge with master * feat(SW-1368-SW-1369): add translations * feat(SW-1368-SW-1369): add redirect with refId * feat(SW-1368-SW-1369): if booking completed redirect to confirmation page * feat(SW-1368-SW-1369): fix comments pr * feat(SW-1368-SW-1369): fix comments pr * feat(SW-1368-SW-1369): fix rebase master * feat(SW-1368-SW-1369): fix duplicate flex rate check * feat(SW-1368-SW-1369): if any room is flex, card must be used * feat(SW-1368-SW-1369): move callback route * feat(SW-1368-SW-1369): top align checkbox * feat(SW-1368-SW-1369): top align checkbox Approved-by: Tobias Johansson Approved-by: Niclas Edenvin
55 lines
1.6 KiB
TypeScript
55 lines
1.6 KiB
TypeScript
"use client"
|
|
|
|
import { usePathname, useRouter, useSearchParams } from "next/navigation"
|
|
import { useCallback, useEffect } from "react"
|
|
import { useIntl } from "react-intl"
|
|
|
|
import { BookingErrorCodeEnum } from "@/constants/booking"
|
|
|
|
import { toast } from "@/components/TempDesignSystem/Toasts"
|
|
|
|
export function useGuaranteePaymentFailedToast() {
|
|
const intl = useIntl()
|
|
const searchParams = useSearchParams()
|
|
const pathname = usePathname()
|
|
const router = useRouter()
|
|
|
|
const getErrorMessage = useCallback(
|
|
(errorCode: string | null) => {
|
|
switch (errorCode) {
|
|
case BookingErrorCodeEnum.TransactionCancelled:
|
|
return intl.formatMessage({
|
|
id: "You have cancelled to process to guarantee your booking.",
|
|
})
|
|
default:
|
|
return intl.formatMessage({
|
|
id: "We had an issue guaranteeing your booking. Please try again.",
|
|
})
|
|
}
|
|
},
|
|
[intl]
|
|
)
|
|
|
|
const errorCode = searchParams.get("errorCode")
|
|
const errorMessage = getErrorMessage(errorCode)
|
|
|
|
useEffect(() => {
|
|
if (!errorCode) return
|
|
|
|
// setTimeout is needed to show toasts on page load: https://sonner.emilkowal.ski/toast#render-toast-on-page-load
|
|
setTimeout(() => {
|
|
const toastType =
|
|
errorCode === BookingErrorCodeEnum.TransactionCancelled
|
|
? "warning"
|
|
: "error"
|
|
|
|
toast[toastType](errorMessage)
|
|
})
|
|
|
|
const queryParams = new URLSearchParams(searchParams.toString())
|
|
queryParams.delete("errorCode")
|
|
|
|
router.push(`${pathname}?${queryParams.toString()}`)
|
|
}, [searchParams, pathname, errorCode, errorMessage, router])
|
|
}
|