
import { useRef, useState } from "react";
import { toast } from "sonner";
import { TripFormData } from "@/components/forms/schemas/tripFormSchema";
import { Trip } from "@/types";
import { useAuth } from "@/contexts/AuthContext";
import { useNavigate } from "react-router-dom";
import { useTripSubmitCore } from "./useTripSubmitCore";

interface UseTripFormSubmitProps {
  initialTrip?: Trip;
  onSuccess?: (tripId: string) => void;
}

export function useTripFormSubmit({ initialTrip, onSuccess }: UseTripFormSubmitProps = {}) {
  const { submitTripData, isEditMode } = useTripSubmitCore({ initialTrip });
  const navigate = useNavigate();
  const [isSubmitting, setIsSubmitting] = useState(false);
  const submittingRef = useRef(false);

  async function onSubmit(values: TripFormData) {
    if (submittingRef.current) return;
    submittingRef.current = true;
    setIsSubmitting(true);

    try {
      console.log("Soumission du formulaire avec les valeurs:", values);
      console.log("Image fournie - Cover:", values.coverImage ? "Oui" : "Non");

      const trip = await submitTripData(values);

      if (trip) {
        console.log("Voyage traité avec succès:", trip);
        if (onSuccess) {
          onSuccess(trip.id);
        } else {
          navigate(`/dashboard/trips/${trip.id}`);
        }
      }
    } catch (error) {
      console.error("Erreur lors de la création/modification du voyage:", error);
      toast.error("Une erreur est survenue lors de l'enregistrement du voyage");
    } finally {
      submittingRef.current = false;
      setIsSubmitting(false);
    }
  }

  return {
    onSubmit,
    isSubmitting,
    isEditMode
  };
}
