'use client'

import { useEffect } from 'react'
import { useUserSettingsStore } from '@/stores/user-settings/store'

interface SprintDraftLeaveGuardProps {
  productId: string
}

/**
 * PBI-79: window.beforeunload-waarschuwing zolang er een pendingSprintDraft
 * loopt voor dit product. De draft is session-only en gaat verloren bij
 * refresh/close — deze guard zorgt dat de gebruiker dat eerst bevestigt.
 * Voor in-app route-changes (klikken op een andere product) doet Next.js
 * geen onbeforeunload; daar vangen we het op via de banner-Annuleren-flow.
 */
export function SprintDraftLeaveGuard({
  productId,
}: SprintDraftLeaveGuardProps) {
  const hasDraft = useUserSettingsStore(
    (s) => !!s.entities.settings.workflow?.pendingSprintDraft?.[productId],
  )

  useEffect(() => {
    if (!hasDraft) return
    function handler(e: BeforeUnloadEvent) {
      e.preventDefault()
      // Moderne browsers tonen een eigen vertaalde tekst; returnValue is
      // alleen nodig voor legacy compat.
      e.returnValue = ''
    }
    window.addEventListener('beforeunload', handler)
    return () => window.removeEventListener('beforeunload', handler)
  }, [hasDraft])

  return null
}
