From 55585db2f1694d99e887ca491a9fe49a228452cc Mon Sep 17 00:00:00 2001 From: alma Date: Fri, 9 Jan 2026 14:05:04 +0100 Subject: [PATCH] Mission Refactor Big --- app/missions/[missionId]/page.tsx | 250 +++++++++++++++++++++++------- 1 file changed, 192 insertions(+), 58 deletions(-) diff --git a/app/missions/[missionId]/page.tsx b/app/missions/[missionId]/page.tsx index ef410abc..92c1a637 100644 --- a/app/missions/[missionId]/page.tsx +++ b/app/missions/[missionId]/page.tsx @@ -374,18 +374,6 @@ export default function MissionDetailPage() { Général - - - Documents - {mission.attachments && mission.attachments.length > 0 && ( - - {mission.attachments.length} - - )} - Plan d'actions + + + Équipe + {mission.missionUsers && mission.missionUsers.length > 0 && ( + + {mission.missionUsers.length + 1} + + )} + + + + Ressources + {mission.attachments && mission.attachments.length > 0 && ( + + {mission.attachments.length} + + )} + {/* General Tab */} @@ -526,52 +538,6 @@ export default function MissionDetailPage() { - {/* Documents Tab */} - -
-

Documents attachés

- - {mission.attachments && mission.attachments.length > 0 ? ( -
- {mission.attachments.map((attachment) => ( - -
- -
-
-

{attachment.filename}

-

- {attachment.fileType.split('/')[1]?.toUpperCase() || 'Fichier'} -

-

- {(attachment.fileSize / 1024).toFixed(1)} KB -

-
-
- ))} -
- ) : ( -
-
- -
-

- Aucun document -

-

- Cette mission n'a pas de documents attachés. -

-
- )} -
-
- {/* Plan d'actions Tab */}
@@ -697,6 +663,174 @@ export default function MissionDetailPage() { )}
+ + {/* Equipe Tab */} + + {/* Creator Section */} +
+

Créateur de la mission

+
+
+ {mission.creator.email.slice(0, 2).toUpperCase()} +
+
+

{mission.creator.email}

+

Créateur

+
+
+
+ + {/* Guardians Section */} + {(() => { + const guardians = mission.missionUsers.filter(mu => + mu.role === 'gardien-temps' || mu.role === 'gardien-parole' || mu.role === 'gardien-memoire' + ); + + if (guardians.length === 0) return null; + + const getRoleLabel = (role: string) => { + switch(role) { + case 'gardien-temps': return 'Gardien du Temps'; + case 'gardien-parole': return 'Gardien de la Parole'; + case 'gardien-memoire': return 'Gardien de la Mémoire'; + default: return role; + } + }; + + const getRoleColor = (role: string) => { + switch(role) { + case 'gardien-temps': return 'bg-amber-50 border-amber-100 text-amber-600'; + case 'gardien-parole': return 'bg-purple-50 border-purple-100 text-purple-600'; + case 'gardien-memoire': return 'bg-green-50 border-green-100 text-green-600'; + default: return 'bg-gray-50 border-gray-100 text-gray-600'; + } + }; + + return ( +
+

Les Gardiens de l'Intention

+
+ {guardians.map((guardian) => ( +
+
+ {guardian.user.email.slice(0, 2).toUpperCase()} +
+
+

{guardian.user.email}

+

+ {getRoleLabel(guardian.role)} +

+
+
+ ))} +
+
+ ); + })()} + + {/* Volunteers/Other Members Section */} + {(() => { + const volunteers = mission.missionUsers.filter(mu => mu.role === 'volontaire'); + + if (volunteers.length === 0) return null; + + return ( +
+

Volontaires

+
+ {volunteers.map((volunteer) => ( +
+
+ {volunteer.user.email.slice(0, 2).toUpperCase()} +
+
+

{volunteer.user.email}

+

Volontaire

+
+
+ ))} +
+
+ ); + })()} + + {/* Empty state if no team members */} + {mission.missionUsers.length === 0 && ( +
+
+
+ +
+

+ Aucun membre assigné +

+

+ Cette mission n'a pas encore de membres assignés en dehors du créateur. +

+
+
+ )} +
+ + {/* Documents/Ressources Tab */} + +
+

Ressources

+ + {mission.attachments && mission.attachments.length > 0 ? ( +
+ {mission.attachments.map((attachment) => ( + +
+ +
+
+

{attachment.filename}

+

+ {attachment.fileType.split('/')[1]?.toUpperCase() || 'Fichier'} +

+

+ {(attachment.fileSize / 1024).toFixed(1)} KB +

+
+
+ ))} +
+ ) : ( +
+
+ +
+

+ Aucune ressource +

+

+ Cette mission n'a pas de ressources attachées. +

+
+ )} +
+
);