diff --git a/.DS_Store b/.DS_Store index 340fe96d..60b378a6 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/components/missions/missions-admin-panel.tsx b/components/missions/missions-admin-panel.tsx index b63ba8cd..56a55ece 100644 --- a/components/missions/missions-admin-panel.tsx +++ b/components/missions/missions-admin-panel.tsx @@ -427,12 +427,37 @@ export function MissionsAdminPanel() { } // Handle file uploads after mission creation if needed - if (selectedLogoFile || selectedAttachments.length > 0) { - // TODO: Implement file upload handling - console.log('Files to be uploaded:', { - logo: selectedLogoFile, - attachments: selectedAttachments - }); + if (data?.mission?.id && (selectedLogoFile || selectedAttachments.length > 0)) { + // Upload logo + if (selectedLogoFile) { + const result = await import('@/lib/s3').then(mod => mod.uploadMissionFile({ + missionId: data.mission.id, + file: selectedLogoFile, + type: 'logo', + })); + if (!result.success) { + toast({ + title: "Erreur", + description: result.error || "Erreur lors de l'upload du logo", + variant: "destructive", + }); + } + } + // Upload attachments + for (const file of selectedAttachments) { + const result = await import('@/lib/s3').then(mod => mod.uploadMissionFile({ + missionId: data.mission.id, + file, + type: 'attachment', + })); + if (!result.success) { + toast({ + title: "Erreur", + description: result.error || `Erreur lors de l'upload du fichier ${file.name}`, + variant: "destructive", + }); + } + } } toast({ diff --git a/lib/s3.ts b/lib/s3.ts new file mode 100644 index 00000000..28261fda --- /dev/null +++ b/lib/s3.ts @@ -0,0 +1,27 @@ +export async function uploadMissionFile({ + missionId, + file, + type, // 'logo' or 'attachment' +}: { + missionId: string; + file: File; + type: 'logo' | 'attachment'; +}): Promise<{ success: boolean; data?: any; error?: string }> { + const formData = new FormData(); + formData.append('missionId', missionId); + formData.append('type', type); + formData.append('file', file); + + const res = await fetch('/api/missions/upload', { + method: 'POST', + body: formData, + }); + + if (!res.ok) { + const err = await res.json().catch(() => ({})); + return { success: false, error: err.error || 'Upload failed' }; + } + + const data = await res.json(); + return { success: true, data }; +} \ No newline at end of file diff --git a/logo.png b/logo.png new file mode 100644 index 00000000..26a8c68e Binary files /dev/null and b/logo.png differ