'use client';

import { useCallback, useEffect, useState } from 'react';
import { InstallationRequestSummary } from '@/models/teltoinstall/_index';
import { InstallationRequestRepository } from '@/repositories/teltoinstall/_index';

export function useInstallationRequests() {
  const [requests, setRequests] = useState<InstallationRequestSummary[]>([]);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState<string | null>(null);
  const [reloadKey, setReloadKey] = useState(0);

  const reload = useCallback(() => {
    setLoading(true);
    setReloadKey((k) => k + 1);
  }, []);

  useEffect(() => {
    let active = true;
    InstallationRequestRepository.list()
      .then((data) => {
        if (active) {
          setRequests(data);
          setError(null);
        }
      })
      .catch(() => {
        if (active) setError('requests.loadError');
      })
      .finally(() => {
        if (active) setLoading(false);
      });
    return () => {
      active = false;
    };
  }, [reloadKey]);

  return { requests, loading, error, reload };
}
