import React, { useMemo, useState } from 'react' import { Pressable, ScrollView, Text, View } from 'react-native' import { responsiveHeight } from 'react-native-responsive-dimensions' import { background } from '../../assets' import alert from '../../components/Alert' import GradientButton from '../../components/GradientButton' import Page from '../../layouts/Page' import { Routes } from '../../navigation' import { navigate } from '../../navigation/NavigationService' import { useUser } from '../../providers/UserDataProvider' import { gutters } from '../../styles' import { isWeb } from '../../hooks/useLayoutType' const Studio = () => { const [selectedProjectId, setSelectedProjectId] = useState(null) const { userProjects: projects, selectProject } = useUser() const selectedProject = useMemo(() => { if (!Array.isArray(projects) || !projects.length) return null return projects.find((p) => p?.id === selectedProjectId) ?? null }, [projects, selectedProjectId]) return ( {projects?.length > 0 && ( Derniers projets générés {projects.map((p) => { const couplet = p?.lyrics?.couplet || '' const preview = couplet.split('\n').slice(0, 2).join(' ') const isSelected = selectedProjectId === p?.id const createdAt = p?.createdAt?.toDate ? p.createdAt.toDate() : p?.createdAt ? new Date(p.createdAt) : null const createdLabel = createdAt && !Number.isNaN(createdAt.getTime()) ? `${createdAt.toLocaleDateString('fr-FR')} • ${createdAt.toLocaleTimeString('fr-FR', { hour: '2-digit', minute: '2-digit' })}` : '' return ( setSelectedProjectId(p?.id ?? null)} style={{ backgroundColor: isSelected ? 'rgba(15, 12, 25, 0.75)' : 'rgba(15, 12, 25, 0.2)', borderRadius: 12, padding: 12, borderWidth: isSelected ? 2 : 0, borderColor: isSelected ? '#F94697' : 'transparent', shadowColor: 'rgba(0, 0, 0, 0.55)', shadowOpacity: isSelected ? 0.6 : 0.35, shadowRadius: isSelected ? 8 : 4, shadowOffset: { width: 0, height: 4 }, elevation: isSelected ? 6 : 1, }} > {p?.title || 'Sans titre'} {!!createdLabel && ( {createdLabel} )} {!!preview && ( {preview} )} {p?.config?.style && ( Style: {String(p.config.style)} )} ) })} )} { if (selectedProject?.musicStatus === 'GENERATING') { alert('Attention', 'La chanson est en cours de génération. Veuillez patienter.') } else { if (!selectedProject?.id) return selectProject(selectedProject.id) navigate(Routes.ComposeSong) } }} /> {selectedProject?.musicUrls?.length > 0 && ( <> { if (!selectedProject?.id) return selectProject(selectedProject.id) navigate(Routes.SongReady) }} /> {!selectedProject?.coverUrl && ( { if (!selectedProject?.id) return selectProject(selectedProject.id) navigate(Routes.PouchReady) }} /> )} )} ) } export default Studio