diff --git a/src/screens/HitParade/HitParade.js b/src/screens/HitParade/HitParade.js index ab9bd3c..0761d2d 100644 --- a/src/screens/HitParade/HitParade.js +++ b/src/screens/HitParade/HitParade.js @@ -1,5 +1,13 @@ -import React, { useState } from "react"; -import { FlatList, Image, Pressable, Text, View } from "react-native"; +import React, { useMemo, useState } from "react"; +import { + FlatList, + Image, + Platform, + Pressable, + ScrollView, + Text, + View, +} from "react-native"; import { responsiveHeight } from "react-native-responsive-dimensions"; import { background, icons } from "../../assets"; import BorderGradientButton from "../../components/BorderGradientButton"; @@ -16,12 +24,14 @@ import SongCard from "./components/SongCard"; const HitParade = () => { const [selected, setSelected] = useState("Chansons"); + const { data: topSongs } = useDataFromRef({ ref: projectsRef.where("views", ">", 0).orderBy("views", "desc").limit(10), simpleRef: false, listener: true, condition: true, }); + const { data: topPlaybacks } = useDataFromRef({ ref: projectsRef.where("views", ">", 0).orderBy("views", "desc").limit(50), format: (docs) => docs.filter((d) => d?.playbackUrl != null).slice(0, 10), @@ -30,6 +40,148 @@ const HitParade = () => { condition: true, }); + // Découpe en 2 colonnes (pour le web uniquement) + const [songsCol1, songsCol2] = useMemo(() => { + const arr = Array.isArray(topSongs) ? topSongs : []; + return [arr.slice(0, 5), arr.slice(5)]; + }, [topSongs]); + + const [playbacksCol1, playbacksCol2] = useMemo(() => { + const arr = Array.isArray(topPlaybacks) ? topPlaybacks : []; + return [arr.slice(0, 5), arr.slice(5)]; + }, [topPlaybacks]); + + // === RENDUS PAR PLATEFORME === + const renderSongsMobile = () => ( + item.id} + renderItem={({ item, index }) => ( + navigate(Routes.MusicDetails, { projectId: item.id })} + /> + )} + /> + ); + + const renderPlaybacksMobile = () => ( + item.id} + renderItem={({ item, index }) => ( + navigate(Routes.Playbacks, { projectId: item.id })} + /> + )} + /> + ); + + const renderSongsWeb = () => ( + + + {/* Colonne gauche (1..5) */} + + {songsCol1.map((item, idx) => ( + + navigate(Routes.MusicDetails, { projectId: item.id }) + } + /> + ))} + + {/* Colonne droite (6..N) */} + + {songsCol2.length > 0 && ( + + {songsCol2.map((item, idx) => ( + + navigate(Routes.MusicDetails, { projectId: item.id }) + } + /> + ))} + + )} + + + ); + + const renderPlaybacksWeb = () => ( + + + {/* Colonne gauche (1..5) */} + + {playbacksCol1.map((item, idx) => ( + navigate(Routes.Playbacks, { projectId: item.id })} + /> + ))} + + + {/* Colonne droite (6..N) */} + {playbacksCol2.length > 0 && ( + + {playbacksCol2.map((item, idx) => ( + + navigate(Routes.Playbacks, { projectId: item.id }) + } + /> + ))} + + )} + + + ); + + const isWeb = Platform.OS === "web"; + return ( @@ -44,9 +196,7 @@ const HitParade = () => { style={{ alignSelf: "center" }} /> { + - {/*{["Chansons", "Playbacks", "Clips"].map((item, index) => (*/} {["Chansons", "Playbacks"].map((item, index) => ( setSelected(item)} tint={selected === item ? "light" : "dark"} - containerStyle={{ - width: "47%", - }} + containerStyle={{ flex: 1 }} titleStyle={{ fontSize: 16, fontFamily: FONT_FAMILY.HelveticaNeueBold, @@ -94,58 +241,12 @@ const HitParade = () => { /> ))} - {selected === "Chansons" && ( - item.id} - renderItem={({ item, index }) => ( - - navigate(Routes.MusicDetails, { projectId: item.id }) - } - /> - )} - /> - )} - {selected === "Playbacks" && ( - item.id} - renderItem={({ item, index }) => ( - - navigate(Routes.Playbacks, { projectId: item.id }) - } - /> - )} - /> - )} - {selected === "Clips" && ( - } - /> - )} + + {selected === "Chansons" && + (isWeb ? renderSongsWeb() : renderSongsMobile())} + {selected === "Playbacks" && + (isWeb ? renderPlaybacksWeb() : renderPlaybacksMobile())} + {/* "Clips" pourra reprendre la même logique si tu le réactives */} diff --git a/src/screens/cover/PouchReady.js b/src/screens/cover/PouchReady.js index b555123..c085252 100644 --- a/src/screens/cover/PouchReady.js +++ b/src/screens/cover/PouchReady.js @@ -109,6 +109,7 @@ const PouchReady = () => { height: 300, borderRadius: 20, backgroundColor: "#00000040", + alignSelf: "center", ...Style.containerCenter, }} >