display playbacks

This commit is contained in:
2025-09-02 16:54:21 +02:00
parent df707ff5a0
commit 52e486d6db
2 changed files with 74 additions and 7 deletions
+7 -3
View File
@@ -3,7 +3,7 @@ import { useDataFromRef } from "react-native-minuit/src/hooks";
import useMinuit from "react-native-minuit/src/hooks/useMinuit";
import { createContext, useContext, useGlobal } from "reactn";
import { useEffect, useState } from "react";
import { useState } from "react";
import { checkIfEmailIsValid } from "../actions/signupActions";
import firebase, {
arrayRemove,
@@ -48,6 +48,9 @@ export default ({ children }) => {
refreshArray: [currentUID],
});
const userPlaybacks = Array.isArray(userProjects)
? userProjects.filter((project) => project.playbackUrl)
: [];
// Subscribe to user's liked projects
const { data: userLikedProjects = [] } = useDataFromRef({
ref: currentUID
@@ -95,7 +98,7 @@ export default ({ children }) => {
followedBy: arrayUnion(currentUID),
lastFollowersUpdateAt: new Date(),
},
{ merge: true },
{ merge: true }
);
setTooltip({ type: "success", text: "Abonnement mis à jour" });
}
@@ -113,7 +116,7 @@ export default ({ children }) => {
followedBy: arrayRemove(currentUID),
lastFollowersUpdateAt: new Date(),
},
{ merge: true },
{ merge: true }
);
setTooltip({
type: "success",
@@ -242,6 +245,7 @@ export default ({ children }) => {
currentUID,
currentUserData: currentUserDoc,
userProjects,
userPlaybacks,
userLikedProjects,
userPlaylists,
followingCount: userFollowing?.length || 0,
+67 -4
View File
@@ -29,7 +29,8 @@ import MusicCard from "../Library/components/MusicCard";
const Profile = () => {
const [selected, setSelected] = useState("Chansons");
const { userProjects, followingCount, currentUserData } = useUser();
const { userProjects, userPlaybacks, followingCount, currentUserData } =
useUser();
const [, setTooltip] = useGlobal("_tooltip");
const [menuTop, setMenuTop] = useState(0);
const [showMenu, setShowMenu] = useState(false);
@@ -176,9 +177,71 @@ const Profile = () => {
))}
</View>
{selected === "Playbacks" && (
<View style={{ flex: 1 }}>
<EmptyText text={"Aucun playback pour le moment"} />
</View>
<ScrollView style={{ flex: 1 }}>
{Array.isArray(userPlaybacks) && userPlaybacks.length > 0 ? (
<FlatList
data={userPlaybacks}
contentContainerStyle={{
gap: 10,
}}
keyExtractor={(item) => item.id}
renderItem={({ item }) => (
<MusicCard
title={item?.title || "Sans titre"}
subtitle={currentUserData?.userName || "MusicLand"}
imageUri={item?.coverUrl || null}
projectId={item?.id}
likedBy={item?.likedBy || []}
onPress={() =>
navigate(Routes.MusicDetails, { projectId: item.id })
}
onPressMore={(posTop) => {
setSelectedProjectId(item.id);
setMenuTop(posTop);
setShowMenu((prev) => !prev || posTop !== menuTop);
}}
/>
)}
/>
) : (
<EmptyText text={"Aucune chanson pour le moment"} />
)}
<MoreMenu
visible={showMenu}
top={menuTop}
onClose={() => 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",
});
}
},
},
}),
},
]}
/>
</ScrollView>
)}
{selected === "Chansons" && (
<ScrollView style={{ flex: 1 }}>