import { useEffect, useRef } from "react";
import { clientFetch } from "@/lib/api";

interface UseKeepOnlineOptions {
  interval?: number; // in milliseconds
  enabled?: boolean;
  onError?: (error: any) => void;
}

export const useKeepOnline = (options: UseKeepOnlineOptions = {}) => {
  const { 
    interval = 1000 * 60 * 1, 
    enabled = true,
    onError 
  } = options;
  
  const intervalRef = useRef<NodeJS.Timeout | null>(null);

  useEffect(() => {
    if (!enabled) {
      return;
    }

    const updateOnlineStatus = async () => {
      try {
        console.log("Updating online status...");
        await clientFetch('/auth/me');
      } catch (error) {
        console.error("Failed to update online status:", error);
        onError?.(error);
      }
    };

    // Initial call
    updateOnlineStatus();

    // Set up interval
    intervalRef.current = setInterval(updateOnlineStatus, interval);

    return () => {
      if (intervalRef.current) {
        clearInterval(intervalRef.current);
        intervalRef.current = null;
      }
    };
  }, [enabled, interval, onError]);

  return {
    isActive: enabled && intervalRef.current !== null,
    stop: () => {
      if (intervalRef.current) {
        clearInterval(intervalRef.current);
        intervalRef.current = null;
      }
    }
  };
}; 