/* eslint-disable formatjs/no-literal-string-in-jsx */ /* TODO remove disable and add i18n */ "use client" import { useEffect, useState } from "react" import { Dialog } from "react-aria-components" import { useIntl } from "react-intl" import { Button } from "@scandic-hotels/design-system/Button" import ButtonLink from "@scandic-hotels/design-system/ButtonLink" import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon" import Modal from "@scandic-hotels/design-system/Modal" import { toast } from "@scandic-hotels/design-system/Toast" import { Typography } from "@scandic-hotels/design-system/Typography" import { missingPoints } from "@/constants/missingPointsHrefs" import { env } from "@/env/client" import useLang from "@/hooks/useLang" import { ClaimPointsWizard } from "./ClaimPointsWizard" import styles from "./claimPoints.module.css" export default function ClaimPoints() { const intl = useIntl() const [openModal, setOpenModal] = useLinkableModalState("claim-points") const useNewFlow = env.NEXT_PUBLIC_NEW_POINTCLAIMS if (!useNewFlow) { return } return ( <>

{intl.formatMessage({ id: "points.claimPoints.missingPreviousStay", defaultMessage: "Missing a previous stay?", })}

setOpenModal(open)} > {({ close }) => ( { toast.info( <>

We're on it!

If your points have not been added to your account within 2 weeks, please contact us.

, { duration: Infinity, } ) close() }} onClose={close} /> )}
) } function useLinkableModalState(target: string) { const [openModal, setOpenModal] = useState(false) useEffect(() => { const params = new URLSearchParams(window.location.search) const claimPoints = params.get("target") === target if (claimPoints) { params.delete("target") const newUrl = `${window.location.pathname}?${params.toString()}` window.history.replaceState({}, "", newUrl) // eslint-disable-next-line react-hooks/set-state-in-effect setOpenModal(true) } }, [target]) return [openModal, setOpenModal] as const } function OldClaimPointsLink() { const intl = useIntl() const lang = useLang() return (

{intl.formatMessage({ id: "points.claimPoints.missingPreviousStay", defaultMessage: "Missing a previous stay?", })}

{intl.formatMessage({ id: "points.claimPoints.cta", defaultMessage: "Claim points", })}
) }