import React, { useState } from "react"; import { Text, View } from "react-native"; import { SheetManager } from "react-native-actions-sheet"; import { useGlobal } from "reactn"; import GradientButton from "../../../components/GradientButton"; import MoreMenu from "../../../components/MoreMenu"; import { projectsRef } from "../../../config/firebase"; import useNavigateToMusicDetails from "../../../hooks/useNavigateToMusicDetails"; import { Routes } from "../../../navigation"; import { navigate } from "../../../navigation/NavigationService"; import { useUser } from "../../../providers/UserDataProvider"; import { Palette } from "../../../styles"; import { FONT_FAMILY } from "../../../styles/Fonts"; import { getProjectLikes, LIKE_TARGET } from "../../../utils/likes"; import CardContainer from "./CardContainer"; import MusicCard from "./MusicCard"; const MyMusic = () => { const { userProjects = [] } = useUser(); const [menuPosition, setMenuPosition] = useState(null); const [showMenu, setShowMenu] = useState(false); const [selectedProjectId, setSelectedProjectId] = useState(null); const projects = Array.isArray(userProjects) ? userProjects.slice(0, 3) : []; const hasProjects = projects.length > 0; const [, setTooltip] = useGlobal("_tooltip"); const navigateToMusicDetails = useNavigateToMusicDetails(); return ( navigate(Routes.AllMyList, { title: "Mes musiques", scope: "music", liked: false, }) } onPressPlus={() => navigate(Routes.WritingLyrics)} > {hasProjects ? ( {Array.isArray(projects) && projects.map((p) => ( navigateToMusicDetails({ projectId: p.id, songUrl: p?.songUrl, project: p, }) } onPressMore={(posTop) => { setSelectedProjectId(p.id); setMenuPosition(posTop); setShowMenu( (prev) => !prev || posTop?.top !== (menuPosition?.top ?? null) ); }} /> ))} setShowMenu(false)} inPlaylist={false} projectId={selectedProjectId} extraItems={[ { label: "Supprimer", onPress: () => SheetManager.show("Delete", { payload: { title: "Supprimer le projet", message: "Cette action supprimera définitivement ce projet.", onConfirm: async () => { try { if (!selectedProjectId) return; await projectsRef.doc(selectedProjectId).delete(); setTooltip({ type: "success", text: "Projet supprimé", }); } catch (e) { setTooltip({ type: "error", text: e?.message || "Suppression impossible", }); } }, }, }), }, ]} /> ) : ( Aucune musique pour l'instant navigate(Routes.WritingLyrics)} title=" Créer une musique" /> )} ); }; export default MyMusic;