"use client"

import { useCallback, useEffect } from "react"

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

export default function HistoryStateManager() {
  const setCurrentStep = useEnterDetailsStore((state) => state.actions.setStep)
  const currentStep = useEnterDetailsStore((state) => state.currentStep)

  const handleBackButton = useCallback(
    (event: PopStateEvent) => {
      if (event.state.step) {
        setCurrentStep(event.state.step)
      }
    },
    [setCurrentStep]
  )

  useEffect(() => {
    window.addEventListener("popstate", handleBackButton)

    return () => {
      window.removeEventListener("popstate", handleBackButton)
    }
  }, [handleBackButton])

  useEffect(() => {
    if (!window.history.state.step) {
      window.history.replaceState(
        { step: currentStep },
        "",
        document.location.href
      )
    }
  }, [currentStep])

  return null
}
