import { useState, useEffect } from "react";

const useNetworkStatus = () => {
  const [isOnline, setIsOnline] = useState(navigator.onLine);
  const [wasOffline, setWasOffline] = useState(false);

  useEffect(() => {
    const handleOnline = () => {
      setIsOnline(true);
      // Если пользователь был офлайн и теперь онлайн, сбрасываем флаг
      if (wasOffline) {
        setWasOffline(false);
      }
    };

    const handleOffline = () => {
      setIsOnline(false);
      setWasOffline(true);
    };

    // Добавляем слушатели событий
    window.addEventListener("online", handleOnline);
    window.addEventListener("offline", handleOffline);

    // Очистка слушателей при размонтировании
    return () => {
      window.removeEventListener("online", handleOnline);
      window.removeEventListener("offline", handleOffline);
    };
  }, [wasOffline]);

  // Дополнительная проверка через fetch для более надежного определения
  const checkNetworkConnection = async () => {
    try {
      const response = await fetch("/favicon.ico", {
        method: "HEAD",
        mode: "no-cors",
        cache: "no-cache",
      });
      return true;
    } catch (error) {
      return false;
    }
  };

  return {
    isOnline,
    wasOffline,
    checkNetworkConnection,
  };
};

export default useNetworkStatus;
