"use client"

import { useEnterDetailsStore } from "@/stores/enter-details"

import TrackingSDK from "@/components/TrackingSDK"
import { useSearchHistory } from "@/hooks/useSearchHistory"

import { getTracking } from "./tracking"

import type { DetailsBooking } from "@/types/components/hotelReservation/enterDetails/details"
import type { Hotel } from "@/types/hotel"
import type { Room } from "@/types/providers/details/room"
import type { Lang } from "@/constants/languages"

interface TrackingWrapperProps {
  booking: DetailsBooking
  hotel: Hotel
  rooms: Room[]
  isMember: boolean
  lang: Lang
}

export default function EnterDetailsTrackingWrapper({
  booking,
  hotel,
  rooms,
  isMember,
  lang,
}: TrackingWrapperProps) {
  const { storedRooms, breakfastPackages } = useEnterDetailsStore((state) => ({
    storedRooms: state.rooms,
    breakfastPackages: state.breakfastPackages,
  }))

  const searchHistory = useSearchHistory()
  const searchTerm = searchHistory.searchHistory[0]?.name

  const { hotelsTrackingData, pageTrackingData, ancillaries } = getTracking(
    booking,
    hotel,
    rooms,
    isMember,
    lang,
    storedRooms,
    breakfastPackages,
    searchTerm
  )
  return (
    <TrackingSDK
      hotelInfo={hotelsTrackingData}
      pageData={pageTrackingData}
      ancillaries={ancillaries}
    />
  )
}
