import { BlurView } from "expo-blur"; import React, { useMemo, useState } from "react"; import { FlatList, Image, Platform, Text, View } from "react-native"; import { responsiveHeight } from "react-native-responsive-dimensions"; import { useGlobal } from "reactn"; import { background, img } from "../../assets"; import alert from "../../components/Alert"; import GradientButton from "../../components/GradientButton"; import MoreMenu from "../../components/MoreMenu"; import { projectsRef } from "../../config/firebase"; import Page from "../../layouts/Page"; import { Routes } from "../../navigation"; import { navigate } from "../../navigation/NavigationService"; import { useUser } from "../../providers/UserDataProvider"; import { getArtistDisplayName } from "../../utils/artistName"; import { getProjectLikes, LIKE_TARGET } from "../../utils/likes"; import { Palette } from "../../styles"; import { FONT_FAMILY } from "../../styles/Fonts"; import MusicCard from "../Library/components/MusicCard"; const HomeSave = () => { const { userProjects = [], resetSelectedProject, selectProject, currentUserData, } = useUser(); const projects = useMemo( () => (Array.isArray(userProjects) ? userProjects : []), [userProjects] ); const ownerDisplayName = useMemo( () => getArtistDisplayName(currentUserData, "MusicLand"), [currentUserData] ); const [, setTooltip] = useGlobal("_tooltip"); const [menuPosition, setMenuPosition] = useState(null); const [showMenu, setShowMenu] = useState(false); const [menuProjectId, setMenuProjectId] = useState(null); return ( {projects.length > 0 && ( Musiques en cours item.id} contentContainerStyle={{ gap: 10, paddingBottom: 10 }} renderItem={({ item }) => ( { selectProject(item.id); navigate(Routes.Home); }} onPressMore={(posTop) => { setMenuProjectId(item.id); setMenuPosition(posTop); setShowMenu( (prev) => !prev || posTop?.top !== (menuPosition?.top ?? null) ); }} /> )} /> setShowMenu(false)} inPlaylist={false} projectId={menuProjectId} extraItems={[ { label: "Supprimer", onPress: () => alert( "Confirmer la suppression", "Cette action supprimera définitivement ce projet.", [ { text: "Annuler", style: "cancel" }, { text: "Supprimer", style: "destructive", onPress: async () => { try { if (!menuProjectId) return; await projectsRef.doc(menuProjectId).delete(); setTooltip({ type: "success", text: "Projet supprimé", }); } catch (e) { setTooltip({ type: "error", text: e?.message || "Suppression impossible", }); } }, }, ], { cancelable: true } ), }, ]} /> )} { resetSelectedProject(); navigate(Routes.Home); }} /> ); }; export default Home;