This commit is contained in:
2025-09-03 16:36:00 +02:00
parent 4e5390e97b
commit 482dd3f964
5 changed files with 69 additions and 29 deletions
+3 -1
View File
@@ -66,6 +66,8 @@ const HitParade = () => {
style={{ style={{
...Style.containerRow, ...Style.containerRow,
justifyContent: "space-between", justifyContent: "space-between",
gap: "10%",
width: "auto",
}} }}
> >
{/*{["Chansons", "Playbacks", "Clips"].map((item, index) => (*/} {/*{["Chansons", "Playbacks", "Clips"].map((item, index) => (*/}
@@ -76,7 +78,7 @@ const HitParade = () => {
onPress={() => setSelected(item)} onPress={() => setSelected(item)}
tint={selected === item ? "light" : "dark"} tint={selected === item ? "light" : "dark"}
containerStyle={{ containerStyle={{
width: 100, width: "50%",
}} }}
titleStyle={{ titleStyle={{
fontSize: 16, fontSize: 16,
+2 -2
View File
@@ -525,8 +525,8 @@ export default MusicDetails;
const styles = StyleSheet.create({ const styles = StyleSheet.create({
img: { img: {
width: 292, width: 160,
height: 290, height: 160,
borderRadius: 24, borderRadius: 24,
alignSelf: "center", alignSelf: "center",
}, },
+36 -10
View File
@@ -1,21 +1,47 @@
import { View, Text, Image } from "react-native"; import React, { useState } from "react";
import React from "react"; import { FlatList, Image, Text, View, useWindowDimensions } from "react-native";
import { img } from "../../../assets"; import { useUserData } from "../../../providers/UserDataProvider";
import { Style } from "../../../styles"; import { Style } from "../../../styles";
import CardContainer from "./CardContainer"; import CardContainer from "./CardContainer";
const BackTracks = () => { const BackTracks = () => {
const { userPlaybacks } = useUserData();
const items = Array.isArray(userPlaybacks) ? userPlaybacks.slice(0, 3) : [];
const { width: screenWidth } = useWindowDimensions();
const [containerWidth, setContainerWidth] = useState(screenWidth);
const numColumns = 3;
const gap = 8;
const itemWidth = Math.max(
0,
Math.floor((containerWidth - gap * (numColumns - 1)) / numColumns)
);
return ( return (
<CardContainer label="Mes Playbacks"> <CardContainer label="Mes Playbacks">
<View style={{ ...Style.containerRow, gap: 6 }}> <View>
{Array.from({ length: 3 }).map((_, index) => ( {items.length > 0 ? (
<View style={{ flex: 1 }} key={index}> <FlatList
onLayout={(e) => setContainerWidth(e.nativeEvent.layout.width)}
data={items}
numColumns={numColumns}
key={numColumns}
columnWrapperStyle={{ gap }}
keyExtractor={(item) => item.id}
renderItem={({ item }) => (
<View style={{ width: itemWidth }} key={item.id}>
<Image <Image
source={img.placeholder3} source={{ uri: item.coverUrl || "" }}
style={{ width: "100%", height: 172, borderRadius: 10 }} style={{
width: "100%",
height: Math.round((itemWidth * 16) / 9),
borderRadius: 10,
}}
/> />
</View> </View>
))} )}
/>
) : (
<Text>Aucun playback pour l'instant</Text>
)}
</View> </View>
</CardContainer> </CardContainer>
); );
+23 -12
View File
@@ -1,6 +1,11 @@
import React from "react";
import { FlatList, Pressable, useWindowDimensions, Image as RNImage } from "react-native";
import { Image as ExpoImage } from "expo-image"; import { Image as ExpoImage } from "expo-image";
import React, { useState } from "react";
import {
FlatList,
Pressable,
Image as RNImage,
useWindowDimensions,
} from "react-native";
import { img } from "../../../assets"; import { img } from "../../../assets";
import { Routes } from "../../../navigation"; import { Routes } from "../../../navigation";
import { navigate } from "../../../navigation/NavigationService"; import { navigate } from "../../../navigation/NavigationService";
@@ -10,29 +15,33 @@ import CardContainer from "./CardContainer";
const LikedMusic = () => { const LikedMusic = () => {
const { userLikedProjects = [] } = useUser(); const { userLikedProjects = [] } = useUser();
const items = Array.isArray(userLikedProjects) const items = Array.isArray(userLikedProjects)
? userLikedProjects.slice(0, 6) ? userLikedProjects.slice(0, 3)
: []; : [];
const { width: screenWidth } = useWindowDimensions(); const { width: screenWidth } = useWindowDimensions();
const [containerWidth, setContainerWidth] = useState(screenWidth);
const numColumns = 3; const numColumns = 3;
const gap = 6; const gap = 8;
const containerGap = 10; const itemWidth = Math.max(
const totalGap = gap * (numColumns - 1) + containerGap * 2; 0,
const itemWidth = (screenWidth - totalGap) / numColumns; Math.floor((containerWidth - gap * (numColumns - 1)) / numColumns)
);
return ( return (
<CardContainer <CardContainer
label="Musiques likées" label="Musiques likées"
onPress={() => navigate(Routes.AllMyLikedMusic)} onPress={() => navigate(Routes.AllMyLikedMusic)}
> >
<FlatList <FlatList
onLayout={(e) => setContainerWidth(e.nativeEvent.layout.width)}
scrollEnabled={false} scrollEnabled={false}
data={items} data={items}
numColumns={numColumns} numColumns={numColumns}
contentContainerStyle={{ gap: containerGap }} key={numColumns}
columnWrapperStyle={{ gap }} contentContainerStyle={{}}
columnWrapperStyle={numColumns > 1 ? { gap } : null}
keyExtractor={(item) => item.id} keyExtractor={(item) => item.id}
renderItem={({ item }) => ( renderItem={({ item }) => (
<Pressable <Pressable
style={{ flex: 1 }} style={{ width: itemWidth }}
onPress={() => onPress={() =>
navigate(Routes.MusicDetails, { projectId: item.id }) navigate(Routes.MusicDetails, { projectId: item.id })
} }
@@ -45,7 +54,8 @@ const LikedMusic = () => {
contentFit="cover" contentFit="cover"
transition={100} transition={100}
style={{ style={{
height: itemWidth - containerGap, width: "100%",
height: itemWidth,
borderRadius: 10, borderRadius: 10,
}} }}
/> />
@@ -53,7 +63,8 @@ const LikedMusic = () => {
<RNImage <RNImage
source={img.placeholder3} source={img.placeholder3}
style={{ style={{
height: itemWidth - containerGap, width: "100%",
height: itemWidth,
borderRadius: 10, borderRadius: 10,
}} }}
/> />
+2 -1
View File
@@ -65,7 +65,7 @@ const Profile = () => {
setFollowers( setFollowers(
Array.isArray(currentUserData?.followedBy) Array.isArray(currentUserData?.followedBy)
? currentUserData.followedBy.length ? currentUserData.followedBy.length
: 0, : 0
); );
return; return;
} }
@@ -119,6 +119,7 @@ const Profile = () => {
data={data} data={data}
contentContainerStyle={{ contentContainerStyle={{
gap: 10, gap: 10,
marginBottom: 80,
}} }}
keyExtractor={(item) => item.id} keyExtractor={(item) => item.id}
renderItem={({ item }) => ( renderItem={({ item }) => (