"use client"; import React, { useState, useEffect } from 'react'; import { BookOpen, Folder, FileText, Loader2 } from 'lucide-react'; interface Mission { id: string; name: string; logoUrl?: string | null; createdAt: string; updatedAt: string; isClosed?: boolean; missionUsers?: Array<{ role: string }>; } interface MissionsViewProps { onMissionSelect: (mission: Mission) => void; selectedMissionId?: string; } export const MissionsView: React.FC = ({ onMissionSelect, selectedMissionId }) => { const [missions, setMissions] = useState([]); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchMissions = async () => { try { setIsLoading(true); setError(null); const response = await fetch('/api/missions/user'); if (!response.ok) { throw new Error('Failed to fetch missions'); } const data = await response.json(); setMissions(data.missions || []); } catch (err) { console.error('Error fetching missions:', err); setError(err instanceof Error ? err.message : 'Failed to load missions'); } finally { setIsLoading(false); } }; fetchMissions(); }, []); if (isLoading) { return (
); } if (error) { return (

Erreur

{error}

); } if (missions.length === 0) { return (

Aucune mission

); } return (

Missions

    {missions.map((mission) => (
  • onMissionSelect(mission)} className={`p-4 hover:bg-carnet-hover cursor-pointer ${ selectedMissionId === mission.id ? 'bg-carnet-hover' : '' }`} >
    {mission.logoUrl ? ( {mission.name} ) : (
    )}

    {mission.name}

    {mission.isClosed && (

    Fermée

    )}
  • ))}
); };