import { CounterType } from 'B/constants';
import { useEffect, useState } from 'react';
import axios from 'B/axios';

export type CounterResultType = {
  id: number;
  value: number;
  reset_value: number;
  diff_value: number;
  created_at: string;
};

export type MeasurementResultType = {
  id: number;
  value: number;
  created_at: string;
};

export type Setting = {
  isActive: boolean;
  nextTime: string | null;
  results: (CounterResultType | MeasurementResultType)[];
  type?: CounterType;
};

export function useFetchOverview(configID: number, getData: boolean) {
  const [isLoading, setIsLoading] = useState(true);
  const [isError, setIsError] = useState(false);
  const [overview, setOverview] = useState<Setting>(null);

  useEffect(() => {
    const fetch = async () => {
      try {
        setIsLoading(true);
        const result = await axios.get<Setting>(`overview/${configID}`);
        setOverview(result.data);
        setIsLoading(false);
      } catch (e) {
        setIsError(true);
        setIsLoading(false);
      }
    };

    if (getData) {
      setOverview(null);
      fetch();
    }
  }, [configID, getData]);

  return { isLoading, isError, overview };
}
