From 8b7980308abc494b35d4e6e70f9370ffc1c8e8bc Mon Sep 17 00:00:00 2001 From: leon-morival Date: Fri, 29 Aug 2025 15:13:07 +0200 Subject: [PATCH] singer profile --- src/screens/Profile/SingerProfile.js | 43 +++++++++++++++++++++------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/src/screens/Profile/SingerProfile.js b/src/screens/Profile/SingerProfile.js index 76f07ad..714400d 100644 --- a/src/screens/Profile/SingerProfile.js +++ b/src/screens/Profile/SingerProfile.js @@ -14,23 +14,23 @@ import { useGlobal } from "reactn"; import { background, icons, img } from "../../assets"; import BorderGradient from "../../components/BorderGradient/BorderGradient"; import GradientButton from "../../components/GradientButton"; +import MoreMenu from "../../components/MoreMenu"; import { followsRef, projectsRef } from "../../config/firebase"; import useDataFromRef from "../../hooks/useDataFromRef"; import Page from "../../layouts/Page"; +import { Routes } from "../../navigation"; +import { navigate } from "../../navigation/NavigationService"; import { useUser } from "../../providers/UserDataProvider"; import { getFollowersCount, getFollowingCount } from "../../services/follows"; import { gutters, Palette } from "../../styles"; import { FONT_FAMILY } from "../../styles/Fonts"; import Style, { size } from "../../styles/Style"; import MusicCard from "../Library/components/MusicCard"; -import { navigate } from "../../navigation/NavigationService"; -import { Routes } from "../../navigation"; const SingerProfile = ({ route }) => { const { userId } = route.params; const { getUserByUid, followUser, unfollowUser } = useUser(); const [currentUID] = useGlobal("currentUID"); - console.log("user id ", userId); - const [selected, setSelected] = useState(null); + const [selected, setSelected] = useState("Chansons"); const [userData, setUserData] = useState(null); const [following, setFollowing] = useState(0); const [followers, setFollowers] = useState(0); @@ -56,7 +56,6 @@ const SingerProfile = ({ route }) => { } catch (_) {} })(); }, [userId, currentUID]); - console.log("following", following); const onPressMenu = (item) => { if (selected === item) { setSelected(null); @@ -65,10 +64,15 @@ const SingerProfile = ({ route }) => { } }; const [isFollowing, setIsFollowing] = useState(false); + const [menuTop, setMenuTop] = useState(0); + const [showMenu, setShowMenu] = useState(false); + const [selectedProjectId, setSelectedProjectId] = useState(null); const userProjectsQueryRef = useMemo(() => { try { if (!userId) return null; - return projectsRef.where("userId", "==", userId).orderBy("updatedAt", "desc"); + return projectsRef + .where("userId", "==", userId) + .orderBy("updatedAt", "desc"); } catch (e) { return null; } @@ -125,8 +129,10 @@ const SingerProfile = ({ route }) => { { - {Array.isArray(userProjects) ? userProjects.length : 0} + + {Array.isArray(userProjects) ? userProjects.length : 0} + playbacks @@ -255,13 +263,26 @@ const SingerProfile = ({ route }) => { imageUri={item?.coverUrl || null} projectId={item?.id} likedBy={item?.likedBy || []} - onPress={() => navigate(Routes.MusicDetails, { projectId: item.id })} - onPressMore={() => {}} + onPress={() => + navigate(Routes.MusicDetails, { projectId: item.id }) + } + onPressMore={(posTop) => { + setSelectedProjectId(item.id); + setMenuTop(posTop); + setShowMenu((prev) => !prev || posTop !== menuTop); + }} /> )} /> )} + setShowMenu(false)} + inPlaylist={false} + projectId={selectedProjectId} + /> );