diff --git a/app/missions/[missionId]/edit/page.tsx b/app/missions/[missionId]/edit/page.tsx
new file mode 100644
index 00000000..8dd05227
--- /dev/null
+++ b/app/missions/[missionId]/edit/page.tsx
@@ -0,0 +1,59 @@
+"use client";
+
+import { useState, useEffect } from "react";
+import { Button } from "@/components/ui/button";
+import { useToast } from "@/components/ui/use-toast";
+import { useParams, useRouter } from "next/navigation";
+
+export default function EditMissionPage() {
+ const [loading, setLoading] = useState(true);
+ const { toast } = useToast();
+ const params = useParams();
+ const router = useRouter();
+ const missionId = params.missionId as string;
+
+ useEffect(() => {
+ toast({
+ title: "Fonctionnalité en développement",
+ description: "L'édition de mission sera bientôt disponible.",
+ variant: "default",
+ });
+
+ setLoading(false);
+ }, [toast]);
+
+ return (
+
+
+
Modifier la mission
+
+ {loading ? (
+
+ ) : (
+
+
+ La fonctionnalité d'édition de mission est en cours de développement et sera disponible prochainement.
+
+
+
+
+
+
+
+
+ )}
+
+
+ );
+}
\ No newline at end of file
diff --git a/app/missions/[missionId]/page.tsx b/app/missions/[missionId]/page.tsx
index 29084211..79f907e9 100644
--- a/app/missions/[missionId]/page.tsx
+++ b/app/missions/[missionId]/page.tsx
@@ -2,9 +2,9 @@
import { useState, useEffect } from "react";
import { Button } from "@/components/ui/button";
-import { FileIcon, Calendar, Eye, MapPin, Users, Clock, ThumbsUp, Languages, BarChart } from "lucide-react";
+import { FileIcon, Calendar, Eye, MapPin, Users, Clock, ThumbsUp, Languages, BarChart, Edit, Trash2 } from "lucide-react";
import { useToast } from "@/components/ui/use-toast";
-import { useParams } from "next/navigation";
+import { useParams, useRouter } from "next/navigation";
// Define types for mission details
interface User {
@@ -45,8 +45,10 @@ interface Mission {
export default function MissionDetailPage() {
const [mission, setMission] = useState(null);
const [loading, setLoading] = useState(true);
+ const [deleting, setDeleting] = useState(false);
const { toast } = useToast();
const params = useParams();
+ const router = useRouter();
const missionId = params.missionId as string;
// Fetch mission details
@@ -133,6 +135,46 @@ export default function MissionDetailPage() {
};
};
+ // Handle edit mission
+ const handleEditMission = () => {
+ router.push(`/missions/${missionId}/edit`);
+ };
+
+ // Handle delete mission
+ const handleDeleteMission = async () => {
+ if (!confirm("Êtes-vous sûr de vouloir supprimer cette mission ? Cette action est irréversible.")) {
+ return;
+ }
+
+ try {
+ setDeleting(true);
+ const response = await fetch(`/api/missions/${missionId}`, {
+ method: 'DELETE',
+ });
+
+ if (!response.ok) {
+ throw new Error('Failed to delete mission');
+ }
+
+ toast({
+ title: "Mission supprimée",
+ description: "La mission a été supprimée avec succès",
+ });
+
+ // Redirect back to missions list
+ router.push('/missions');
+ } catch (error) {
+ console.error('Error deleting mission:', error);
+ toast({
+ title: "Erreur",
+ description: "Impossible de supprimer la mission",
+ variant: "destructive",
+ });
+ } finally {
+ setDeleting(false);
+ }
+ };
+
// Loading state
if (loading) {
return (
@@ -349,6 +391,32 @@ export default function MissionDetailPage() {
)}
+
+ {/* Action Buttons */}
+
+
+
+
+
);
}
\ No newline at end of file