'use client';

import { useState } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { useRouter } from 'next/navigation';
import { useTranslation } from 'react-i18next';
import { RootState } from '@/store';
import { resetInstallation } from '@/store/slices/installation-slice';
import { InstallationRepository } from '@/repositories/teltoinstall/_index';
import { apiErrorMessage } from '@/utils/teltoinstall/_index';
import { InstallationStatus } from '@/models/teltoinstall/_index';

export function useSummaryStep() {
  const { t } = useTranslation();
  const router = useRouter();
  const dispatch = useDispatch();
  const installation = useSelector((state: RootState) => state.installation);
  const [loading, setLoading] = useState(false);
  const [error, setError] = useState<string | null>(null);
  const [success, setSuccess] = useState(false);
  const [resultStatus, setResultStatus] = useState<InstallationStatus | null>(null);

  async function submitInstallation() {
    if (!installation.installationId) return;
    setLoading(true);
    setError(null);
    try {
      const result = await InstallationRepository.validate(installation.installationId);
      // Le statut final dépend du test GPS (validée ou erreur GPS).
      setResultStatus(result?.status ?? null);
      // Show the full-screen success confirmation; navigation is then driven
      // by the user from that screen (history or a new installation).
      setSuccess(true);
    } catch (err) {
      setError(apiErrorMessage(err, t('errors.generic')));
    } finally {
      setLoading(false);
    }
  }

  function goToHistory() {
    // Clear the persisted wizard state so the next session starts clean
    // instead of reopening an already-validated installation.
    dispatch(resetInstallation());
    router.push('/history');
  }

  function startNewInstallation() {
    dispatch(resetInstallation());
    router.push('/installation');
  }

  return { installation, loading, error, success, resultStatus, submitInstallation, goToHistory, startNewInstallation };
}
