import { useEffect, useRef, useCallback } from 'react'
import { useGenAutoChatContent } from './useIm'

interface UseAutoChatTimerOptions {
  aiId: number
  isActive: boolean // 是否在聊天页面
  hasUserSentMessage: boolean // 用户是否发送了消息
  onUserMessage?: () => void // 用户发送消息时的回调
}

/**
 * 自动聊天定时器hook
 * 当用户停留在聊天页面超过3分钟没有发消息时，自动发送消息
 */
export function useAutoChatTimer({
  aiId,
  isActive,
  hasUserSentMessage,
  onUserMessage,
}: UseAutoChatTimerOptions) {
  const timerRef = useRef<NodeJS.Timeout | null>(null)
  const lastMessageTimeRef = useRef<number>(Date.now())
  const { mutateAsync: genAutoChatContent, isPending } = useGenAutoChatContent()

  // 重置定时器
  const resetTimer = useCallback(() => {
    console.log('🤖 用户停留超过3分钟，自动发送聊天内容 resetTimer')
    if (timerRef.current) {
      clearTimeout(timerRef.current)
      timerRef.current = null
    }

    // 设置3分钟定时器
    timerRef.current = setTimeout(
      async () => {
        if (isActive && aiId) {
          try {
            console.log('🤖 用户停留超过3分钟，自动发送聊天内容')
            await genAutoChatContent({ aiId })
          } catch (error) {
            console.error('自动发送聊天内容失败:', error)
          }
        }
      },
      3 * 60 * 1000
    ) // 3分钟
    // }, 1 * 10 * 1000); // 3分钟
  }, [isActive, aiId, genAutoChatContent])

  // 用户发送消息时重置定时器
  const handleUserMessage = useCallback(() => {
    lastMessageTimeRef.current = Date.now()
    resetTimer()
    onUserMessage?.()
  }, [resetTimer, onUserMessage])

  // 当页面激活且用户没有发送消息时启动定时器
  useEffect(() => {
    // if (isActive && aiId && !hasUserSentMessage) {
    //   // resetTimer();
    // } else {
    //   // 页面不活跃或用户已发送消息时清除定时器
    //   if (timerRef.current) {
    //     clearTimeout(timerRef.current);
    //     timerRef.current = null;
    //   }
    // }

    return () => {
      console.log('🤖 用户停留超过3分钟，自动发送聊天内容 Leave')
      if (timerRef.current) {
        clearTimeout(timerRef.current)
        timerRef.current = null
      }
    }
  }, [aiId])

  return {
    handleUserMessage,
    isPending,
  }
}
