playlists web

This commit is contained in:
2025-09-30 16:38:48 +02:00
parent 063fc18aec
commit cf46c4599a
2 changed files with 117 additions and 48 deletions
+100 -37
View File
@@ -1,6 +1,6 @@
import { BlurView } from "expo-blur"; import { BlurView } from "expo-blur";
import React, { useState } from "react"; import React, { useState } from "react";
import { Image, Platform, Pressable, Text, View } from "react-native"; import { Image, Pressable, Text, View } from "react-native";
import { SheetManager } from "react-native-actions-sheet"; import { SheetManager } from "react-native-actions-sheet";
import { background, icons } from "../../assets"; import { background, icons } from "../../assets";
import MoreMenu from "../../components/MoreMenu"; import MoreMenu from "../../components/MoreMenu";
@@ -16,9 +16,12 @@ import { FONT_FAMILY } from "../../styles/Fonts";
import { size } from "../../styles/Style"; import { size } from "../../styles/Style";
import MusicCard from "./components/MusicCard"; import MusicCard from "./components/MusicCard";
const AllMyPlaylist = () => { const AllMyPlaylist = ({ route }) => {
const { playListId } = route?.params || {};
const { userPlaylists = [] } = useUser(); const { userPlaylists = [] } = useUser();
const [selectedPlaylistId, setSelectedPlaylistId] = useState(null); const [selectedPlaylistId, setSelectedPlaylistId] = useState(
playListId || null
);
const { data: playlist } = useDataFromRef({ const { data: playlist } = useDataFromRef({
ref: selectedPlaylistId ? playlistsRef.doc(selectedPlaylistId) : null, ref: selectedPlaylistId ? playlistsRef.doc(selectedPlaylistId) : null,
simpleRef: true, simpleRef: true,
@@ -67,46 +70,106 @@ const AllMyPlaylist = () => {
flex: 1, flex: 1,
padding: 10, padding: 10,
borderRadius: 12, borderRadius: 12,
backgroundColor: Palette.ultraLightWhite,
...Style.defaultBorder,
}} }}
> >
<View style={{ gap: 8 }}> <View style={{ flex: 1, gap: 12 }}>
{(Array.isArray(userPlaylists) ? userPlaylists : []).map((item) => ( <View style={{ gap: 8 }}>
<Pressable {(Array.isArray(userPlaylists) ? userPlaylists : []).map(
key={item?.id} (item) => {
onPress={() => setSelectedPlaylistId(item?.id)} const isSelected = selectedPlaylistId === item?.id;
return (
<Pressable
key={item?.id}
onPress={() => setSelectedPlaylistId(item?.id)}
>
<View
style={{
borderRadius: 14,
overflow: "hidden",
borderWidth: 1,
borderColor: Palette.transparentWhite,
transform: [{ scaleX: isSelected ? 1.04 : 1 }],
}}
>
<BlurView
intensity={30}
style={{
...Style.containerSpaceBetween,
height: 59,
paddingHorizontal: 16,
}}
>
<Text
style={{
fontSize: isSelected ? 18 : 16,
color: Palette.white,
fontFamily: isSelected
? FONT_FAMILY.InterSemiBold
: FONT_FAMILY.InterRegular,
}}
>
{item?.name || "Sans nom"}
</Text>
<Pressable>
<Image
source={icons.chevronDown}
style={{
...size({ size: 15 }),
transform: [{ rotate: "-90deg" }],
}}
resizeMode="contain"
/>
</Pressable>
</BlurView>
</View>
</Pressable>
);
}
)}
</View>
<Pressable
onPress={() =>
SheetManager.show("Playlist", {
payload: { startAtCreate: true },
})
}
>
<View
style={{
borderRadius: 12,
overflow: "hidden",
borderWidth: 1,
borderColor: Palette.transparentWhite,
}}
> >
<View style={{ borderRadius: 12, overflow: "hidden" }}> <BlurView
<BlurView intensity={30}
intensity={Platform.OS !== "ios" ? 10 : 20} style={{
...Style.containerSpaceBetween,
paddingHorizontal: 16,
height: 59,
}}
>
<Text
style={{ style={{
...Style.containerSpaceBetween, fontSize: 16,
height: 59, color: Palette.white,
paddingHorizontal: 10, fontFamily: FONT_FAMILY.InterSemiBold,
}} }}
> >
<Text Ajouter une playlist
style={{ </Text>
fontSize: 16, <Image
color: Palette.white, source={icons.add}
fontFamily: FONT_FAMILY.InterRegular, style={size({ size: 20 })}
}} resizeMode="contain"
> />
{item?.name || "Sans nom"} </BlurView>
</Text> </View>
<Pressable> </Pressable>
<Image
source={icons.chevronDown}
style={{
...size({ size: 15 }),
transform: [{ rotate: "-90deg" }],
}}
resizeMode="contain"
/>
</Pressable>
</BlurView>
</View>
</Pressable>
))}
</View> </View>
</View> </View>
<View style={{ flex: 2, gap: 10 }}> <View style={{ flex: 2, gap: 10 }}>
+17 -11
View File
@@ -1,20 +1,21 @@
import { View, Text, Pressable, Image, Platform } from "react-native";
import React from "react";
import CardContainer from "./CardContainer";
import { BlurView } from "expo-blur"; import { BlurView } from "expo-blur";
import React from "react";
import { Image, Platform, Pressable, Text, View } from "react-native";
import { icons } from "../../../assets"; import { icons } from "../../../assets";
import Style, { size } from "../../../styles/Style"; import useLayoutType from "../../../hooks/useLayoutType";
import { Routes } from "../../../navigation";
import { navigate } from "../../../navigation/NavigationService";
import { useUser } from "../../../providers/UserDataProvider";
import { Palette } from "../../../styles"; import { Palette } from "../../../styles";
import { FONT_FAMILY } from "../../../styles/Fonts"; import { FONT_FAMILY } from "../../../styles/Fonts";
import { navigate } from "../../../navigation/NavigationService"; import Style, { size } from "../../../styles/Style";
import { Routes } from "../../../navigation"; import CardContainer from "./CardContainer";
import { useUser } from "../../../providers/UserDataProvider";
const MyPlaylist = () => { const MyPlaylist = () => {
const { userPlaylists = [] } = useUser(); const { userPlaylists = [] } = useUser();
const playlists = Array.isArray(userPlaylists) const playlists = Array.isArray(userPlaylists)
? userPlaylists.slice(0, 2) ? userPlaylists.slice(0, 2)
: []; : [];
const { isWeb } = useLayoutType();
return ( return (
<CardContainer <CardContainer
label="Mes Playlists" label="Mes Playlists"
@@ -25,9 +26,14 @@ const MyPlaylist = () => {
<Pressable <Pressable
key={item.id} key={item.id}
style={{ borderRadius: 12, overflow: "hidden" }} style={{ borderRadius: 12, overflow: "hidden" }}
onPress={() => onPress={() => {
navigate(Routes.PlaylistDetails, { playlistId: item.id }) console.log("isWeb", isWeb);
} if (isWeb) {
navigate(Routes.AllMyPlaylist, { playListId: item.id });
} else {
navigate(Routes.PlaylistDetails, { playlistId: item.id });
}
}}
> >
<BlurView <BlurView
intensity={Platform.OS !== "ios" ? 10 : 20} intensity={Platform.OS !== "ios" ? 10 : 20}