import { useState, useCallback } from 'react'

import type { ContextMenuState } from '../types'

// Hook для управления контекстным меню
export function useContextMenu(onSupplyAction?: (supplyId: string, action: string) => void) {
  const [contextMenu, setContextMenu] = useState<ContextMenuState>({
    isOpen: false,
    position: { x: 0, y: 0 },
    supplyId: null,
  })
  const [cancelDialogOpen, setCancelDialogOpen] = useState(false)

  // Открытие контекстного меню
  const handleRightClick = useCallback((e: React.MouseEvent, supplyId: string) => {
    e.preventDefault()
    e.stopPropagation()
    
    setContextMenu({
      isOpen: true,
      position: { x: e.clientX, y: e.clientY },
      supplyId,
    })
  }, [])

  // Закрытие контекстного меню
  const handleCloseContextMenu = useCallback(() => {
    setContextMenu(prev => ({ ...prev, isOpen: false }))
  }, [])

  // Обработка отмены из контекстного меню
  const handleCancelFromContextMenu = useCallback(() => {
    handleCloseContextMenu()
    setCancelDialogOpen(true)
  }, [handleCloseContextMenu])

  // Подтверждение отмены
  const handleConfirmCancel = useCallback(() => {
    if (contextMenu.supplyId) {
      onSupplyAction?.(contextMenu.supplyId, 'cancel')
    }
    setCancelDialogOpen(false)
    setContextMenu(prev => ({ ...prev, supplyId: null }))
  }, [contextMenu.supplyId, onSupplyAction])

  return {
    contextMenu,
    cancelDialogOpen,
    setCancelDialogOpen,
    handleRightClick,
    handleCloseContextMenu,
    handleCancelFromContextMenu,
    handleConfirmCancel,
  }
}