diff --git a/src/navigation/MainStack.js b/src/navigation/MainStack.js
index 17c519e..b52ad5f 100644
--- a/src/navigation/MainStack.js
+++ b/src/navigation/MainStack.js
@@ -46,9 +46,8 @@ import ChooseDecor from "../screens/Playback/ChooseDecor";
import CreatingDecor from "../screens/Playback/CreatingDecor";
import VideoFinalize from "../screens/Playback/VideoFinalize";
import GeneratingSong from "../screens/Studio/GeneratingSong";
-import AllMyMusic from "../screens/Library/AllMyMusic";
import AllMyPlaylist from "../screens/Library/AllMyPlaylist";
-import AllMyLikedMusic from "../screens/Library/AllMyLikedMusic";
+import AllMyList from "../screens/Library/AllMyList";
import Research from "../screens/Library/Research";
import MusicDetails from "../screens/Library/MusicDetails";
import PlaylistDetails from "../screens/Library/PlaylistDetails";
@@ -227,10 +226,6 @@ const screens = [
name: Routes.VideoFinalize,
component: VideoFinalize,
},
- {
- name: Routes.AllMyMusic,
- component: AllMyMusic,
- },
{
name: Routes.AllMyPlaylist,
component: AllMyPlaylist,
@@ -240,8 +235,8 @@ const screens = [
component: PlaylistDetails,
},
{
- name: Routes.AllMyLikedMusic,
- component: AllMyLikedMusic,
+ name: Routes.AllMyList,
+ component: AllMyList,
},
{
name: Routes.Research,
diff --git a/src/navigation/Routes.js b/src/navigation/Routes.js
index 6936f2b..7541dbe 100644
--- a/src/navigation/Routes.js
+++ b/src/navigation/Routes.js
@@ -64,10 +64,9 @@ export const Routes = {
Playbacks: "Playbacks",
Library: "Library",
- AllMyMusic: "AllMyMusic",
AllMyPlaylist: "AllMyPlaylist",
PlaylistDetails: "PlaylistDetails",
- AllMyLikedMusic: "AllMyLikedMusic",
+ AllMyList: "AllMyList",
Research: "Research",
MusicDetails: "MusicDetails",
diff --git a/src/screens/Library/AllMyLikedMusic.js b/src/screens/Library/AllMyList.js
similarity index 58%
rename from src/screens/Library/AllMyLikedMusic.js
rename to src/screens/Library/AllMyList.js
index afe81f3..7b28ddf 100644
--- a/src/screens/Library/AllMyLikedMusic.js
+++ b/src/screens/Library/AllMyList.js
@@ -1,33 +1,65 @@
-import { BlurView } from "expo-blur";
+import { useRoute } from "@react-navigation/core";
import React, { useState } from "react";
import { View } from "react-native";
import { background } from "../../assets";
+import MoreMenu from "../../components/MoreMenu";
import Page from "../../layouts/Page";
import { Routes } from "../../navigation";
import { navigate } from "../../navigation/NavigationService";
import { useUser } from "../../providers/UserDataProvider";
-import { gutters, Palette } from "../../styles";
-import { FONT_FAMILY } from "../../styles/Fonts";
+import { gutters } from "../../styles";
import MusicCard from "./components/MusicCard";
-import MoreMenu from "../../components/MoreMenu";
-const AllMyLikedMusic = () => {
+export default function AllMyList() {
+ const route = useRoute();
+ const {
+ title = "Mes éléments",
+ scope = "music",
+ liked = false,
+ } = route?.params || {};
+
+ const { userProjects, userLikedProjects, userPlaybacks, userLikedPlaybacks } =
+ useUser();
+
+ const items = (() => {
+ if (scope === "playback") {
+ return Array.isArray(liked ? userLikedPlaybacks : userPlaybacks)
+ ? liked
+ ? userLikedPlaybacks
+ : userPlaybacks
+ : [];
+ }
+ // music (projects)
+ return Array.isArray(liked ? userLikedProjects : userProjects)
+ ? liked
+ ? userLikedProjects
+ : userProjects
+ : [];
+ })();
+
const [top, setTop] = useState(0);
const [showMenu, setShowMenu] = useState(false);
const [selectedProjectId, setSelectedProjectId] = useState(null);
- const { userLikedProjects: projects } = useUser();
+
+ const onPressItem = (item) => {
+ if (scope === "playback") {
+ navigate(Routes.Playbacks, { projectId: item.id });
+ } else {
+ navigate(Routes.MusicDetails, { projectId: item.id });
+ }
+ };
return (
- {Array.isArray(projects) &&
- projects.map((item) => (
+ {Array.isArray(items) &&
+ items.map((item) => (
{
subtitle={"MusicLand"}
projectId={item?.id}
likedBy={item?.likedBy || []}
- onPress={() =>
- navigate(Routes.MusicDetails, { projectId: item.id })
- }
+ onPress={() => onPressItem(item)}
onPressMore={(posTop) => {
setSelectedProjectId(item.id);
setTop(posTop);
@@ -56,6 +86,4 @@ const AllMyLikedMusic = () => {
);
-};
-
-export default AllMyLikedMusic;
+}
diff --git a/src/screens/Library/AllMyMusic.js b/src/screens/Library/AllMyMusic.js
deleted file mode 100644
index 03d587e..0000000
--- a/src/screens/Library/AllMyMusic.js
+++ /dev/null
@@ -1,93 +0,0 @@
-import { View, Text, FlatList, Pressable, Image as RNImage } from "react-native";
-import { Image as ExpoImage } from "expo-image";
-import React, { useState } from "react";
-import Page from "../../layouts/Page";
-import { background, img } from "../../assets";
-import CreateLyricsHeader from "../Writing/components/CreateLyricsHeader";
-import { gutters, Palette } from "../../styles";
-import { FONT_FAMILY } from "../../styles/Fonts";
-import useLayoutType from "../../hooks/useLayoutType";
-import { useUser } from "../../providers/UserDataProvider";
-import { navigate } from "../../navigation/NavigationService";
-import { Routes } from "../../navigation";
-
-const AllMyMusic = () => {
- const [containerLayout, setContainerLayout] = useState(null);
- const { isWeb } = useLayoutType();
- const { userProjects: projects } = useUser();
-
- return (
-
- setContainerLayout(e.nativeEvent.layout)}
- >
-
- item.id}
- // Projects are provided by provider with a live listener
- renderItem={({ item }) => (
-
- navigate(Routes.MusicDetails, { projectId: item.id })
- }
- >
- {item?.coverUrl ? (
-
- ) : (
-
- )}
-
- {item?.title || "Sans titre"}
-
-
- )}
- />
-
-
-
- );
-};
-
-export default AllMyMusic;
diff --git a/src/screens/Library/components/BackTracks.js b/src/screens/Library/components/BackTracks.js
index f78c154..54a9874 100644
--- a/src/screens/Library/components/BackTracks.js
+++ b/src/screens/Library/components/BackTracks.js
@@ -23,7 +23,16 @@ const BackTracks = () => {
);
return (
-
+
+ navigate(Routes.AllMyList, {
+ title: "Mes playbacks",
+ scope: "playback",
+ liked: false,
+ })
+ }
+ >
{items.length > 0 && (
{
return (
navigate(Routes.AllMyLikedMusic)}
+ onPress={() =>
+ navigate(Routes.AllMyList, {
+ title: "Musiques likées",
+ scope: "music",
+ liked: true,
+ })
+ }
>
setContainerWidth(e.nativeEvent.layout.width)}
diff --git a/src/screens/Library/components/LikedPlayback.js b/src/screens/Library/components/LikedPlayback.js
index b1b3073..f1ec13e 100644
--- a/src/screens/Library/components/LikedPlayback.js
+++ b/src/screens/Library/components/LikedPlayback.js
@@ -25,7 +25,16 @@ const LikedPlayback = () => {
Math.floor((containerWidth - gap * (numColumns - 1)) / numColumns)
);
return (
-
+
+ navigate(Routes.AllMyList, {
+ title: "Playbacks likés",
+ scope: "playback",
+ liked: true,
+ })
+ }
+ >
{items.length > 0 && (
{
return (
navigate(Routes.AllMyMusic)}
+ onPress={() =>
+ navigate(Routes.AllMyList, {
+ title: "Mes musiques",
+ scope: "music",
+ liked: false,
+ })
+ }
>
{Array.isArray(projects) &&