"use client";

import { useEffect, useCallback } from "react";
import { useErrorStore } from "@/stores/error-store";

/**
 * 监听浏览器网络状态变化 (navigator.onLine)
 * 当网络断开时更新全局错误状态
 */
export function useNetworkStatus(): void {
  const setIsOffline = useErrorStore((state) => state.setIsOffline);

  const handleOnline = useCallback(() => {
    setIsOffline(false);
  }, [setIsOffline]);

  const handleOffline = useCallback(() => {
    setIsOffline(true);
  }, [setIsOffline]);

  useEffect(() => {
    // 只在客户端执行
    if (typeof window === "undefined") return;

    // 初始化当前状态
    setIsOffline(!navigator.onLine);

    // 监听网络状态变化
    window.addEventListener("online", handleOnline);
    window.addEventListener("offline", handleOffline);

    return () => {
      window.removeEventListener("online", handleOnline);
      window.removeEventListener("offline", handleOffline);
    };
  }, [handleOnline, handleOffline, setIsOffline]);
}

/**
 * Hook 返回当前网络状态（用于组件内部使用）
 */
export function useIsOffline(): boolean {
  return useErrorStore((state) => state.isOffline);
}
