playlists web
This commit is contained in:
@@ -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 }}>
|
||||||
|
|||||||
@@ -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}
|
||||||
|
|||||||
Reference in New Issue
Block a user