import React from 'react'; import Link from 'next/link'; import { Play, FileText, Clock, Mic, Calendar } from 'lucide-react'; import { sanitizeHTML } from '../../lib/sanitize'; import { prisma } from '../../lib/prisma'; import { InterviewType } from '@prisma/client'; import EventTimeline from '../../components/EventTimeline'; export const revalidate = 3600; interface Props { searchParams: Promise<{ type?: string }>; } export default async function AfroLifePage({ searchParams }: Props) { const params = await searchParams; const rawFilter = params.type as string || 'ALL'; const allowedFilters = ['ALL', 'EVENT', 'VIDEO', 'ARTICLE']; const filter = allowedFilters.includes(rawFilter) ? rawFilter : 'ALL'; let items: any[] = []; const now = new Date(); try { if (filter === 'EVENT') { const events = await prisma.event.findMany({ where: { status: 'PUBLISHED', publishedAt: { lte: now } }, orderBy: { date: 'desc' } }); items = events.map(e => ({ ...e, guestName: 'Événement', companyName: e.location, excerpt: e.description, type: 'EVENT', duration: new Date(e.date).toLocaleDateString('fr-FR') })); } else { const where: any = { status: 'PUBLISHED', publishedAt: { lte: now } }; if (filter !== 'ALL') { where.type = filter as InterviewType; } const interviews = await prisma.interview.findMany({ where, orderBy: { createdAt: 'desc' } }); items = interviews.map(i => ({ ...i })); // If 'ALL', we might want to also fetch events and mix them if (filter === 'ALL') { const events = await prisma.event.findMany({ where: { status: 'PUBLISHED', publishedAt: { lte: now } }, orderBy: { date: 'desc' }, take: 10 }); const mappedEvents = events.map(e => ({ ...e, guestName: 'Événement', companyName: e.location, excerpt: e.description, type: 'EVENT', duration: new Date(e.date).toLocaleDateString('fr-FR') })); items = [...items, ...mappedEvents].sort((a, b) => new Date(b.createdAt || b.date).getTime() - new Date(a.createdAt || a.date).getTime() ); } } } catch (error) { console.error("Database connection failed on Afro Life page:", error); items = []; } return (
{/* Hero Header */}
Lifestyle & Inspiration

Afro Life

Plongez dans l'intimité des bâtisseurs. Entretiens exclusifs, parcours de vie et leçons de leadership.

{/* Filters */}
Tout voir Vidéos Articles Événements
{/* Grid or Timeline */} {items.length === 0 ? (

Aucun contenu trouvé dans cette catégorie.

) : filter === 'EVENT' ? ( ) : (
{items.map(item => { const isPastEvent = item.type === 'EVENT' && new Date(item.date) < new Date(); return (
{item.title}
{/* Type Badge */}
{item.type === 'VIDEO' ? : item.type === 'EVENT' ? : } {item.type === 'VIDEO' ? 'Vidéo' : item.type === 'EVENT' ? (isPastEvent ? 'Événement Passé' : 'Événement') : 'Interview'}
{/* Play Icon Overlay for Videos */} {item.type === 'VIDEO' && (
)}
{item.guestName} {item.companyName} {item.duration || 'N/A'}

{item.title}

); })}
)}
); }