import { View, Text, ScrollView, Pressable, Alert } from "react-native"; import React, { useState } from "react"; import Page from "../../layouts/Page"; import { background } from "../../assets"; import GradientButton from "../../components/GradientButton"; import { navigate } from "../../navigation/NavigationService"; import { Routes } from "../../navigation"; import { gutters } from "../../styles"; import { useUser } from "../../providers/UserDataProvider"; import { responsiveHeight } from "react-native-responsive-dimensions"; const Studio = () => { const [selected, setSelected] = useState(null); const { userProjects: projects, selectProject } = useUser(); 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 = selected === p; 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 ( setSelected(p)} style={{ backgroundColor: "#0F0C1933", borderRadius: 12, padding: 12, borderWidth: isSelected ? 2 : 0, borderColor: isSelected ? "#F94697" : "transparent", }} > {p?.title || "Sans titre"} {!!createdLabel && ( {createdLabel} )} {!!preview && ( {preview} )} {p?.config?.style && ( Style: {String(p.config.style)} )} ); })} )} { if (selected.musicStatus === "GENERATING") { Alert.alert( "Attention", "La chanson est en cours de génération. Veuillez patienter.", ); } else { selectProject(selected.id); navigate(Routes.Compose); } }} /> {selected?.musicUrls?.length > 0 && ( <> { selectProject(selected.id); navigate(Routes.SongReady); }} /> { selectProject(selected.id); navigate(Routes.PouchReady); }} /> )} ); }; export default Studio;