"use client"

import { useEffect } from "react"
import { useIntl } from "react-intl"

import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon"

import { myStay } from "@/constants/routes/myStay"

import Button from "@/components/TempDesignSystem/Button"
import Link from "@/components/TempDesignSystem/Link"
import useLang from "@/hooks/useLang"

import type { ManageBookingProps } from "@/types/components/hotelReservation/bookingConfirmation/actions/manageBooking"

export default function ManageBooking({ booking }: ManageBookingProps) {
  const intl = useIntl()
  const lang = useLang()

  const { refId, confirmationNumber } = booking
  const { email, firstName, lastName } = booking.guest
  useEffect(() => {
    // Setting the `bv` cookie allows direct access to My stay without prompting for more information.
    const value = new URLSearchParams({
      email,
      firstName,
      lastName,
      confirmationNumber,
    }).toString()
    document.cookie = `bv=${encodeURIComponent(value)}; Path=/; Max-Age=600; Secure; SameSite=Strict`
  }, [confirmationNumber, email, firstName, lastName])

  const myStayURL = `${myStay[lang]}?RefId=${encodeURIComponent(refId)}`

  return (
    <Button
      asChild
      intent="text"
      size="small"
      theme="base"
      variant="icon"
      wrapping
    >
      <Link color="none" href={myStayURL} weight="bold">
        <MaterialIcon icon="edit_square" color="CurrentColor" />
        {intl.formatMessage({
          defaultMessage: "Manage booking",
        })}
      </Link>
    </Button>
  )
}
