diff --git a/src/layouts/Page.js b/src/layouts/Page.js index 132ab72..f97e949 100644 --- a/src/layouts/Page.js +++ b/src/layouts/Page.js @@ -35,6 +35,7 @@ export default ({ headerTitleStyle = {}, hideBackButton = false, width = undefined, + maxWidth = null, }) => { // const { currentUID } = useUserData(); @@ -73,6 +74,7 @@ export default ({ paddingBottom: 0, ...(isWeb ? { maxHeight: "100svh" } : {}), width: computedWidth, + maxWidth: maxWidth ? maxWidth : null, alignSelf: isWeb ? "center" : "auto", ...containerStyle, }} diff --git a/src/navigation/BottomTab.js b/src/navigation/BottomTab.js index 1ea7678..920a466 100644 --- a/src/navigation/BottomTab.js +++ b/src/navigation/BottomTab.js @@ -11,7 +11,7 @@ import TabBar from "./TabBar"; import { Platform } from "react-native"; import HitParade from "../screens/HitParade/HitParade.js"; -import Library from "../screens/Library/Library.js"; +import Library from "../screens/Library/Library"; import Playbacks from "../screens/Playbacks/Playbacks"; import Profile from "../screens/Profile/Profile.js"; import HomeStack from "./HomeStack"; diff --git a/src/screens/Library/AllMyPlaylist.web.js b/src/screens/Library/AllMyPlaylist.web.js index 2c9bbe5..f24fd8c 100644 --- a/src/screens/Library/AllMyPlaylist.web.js +++ b/src/screens/Library/AllMyPlaylist.web.js @@ -47,19 +47,6 @@ const AllMyPlaylist = ({ route }) => { backgroundImg={background.libraryBG} title="Mes Playlists" width={"80%"} - rightComponent={() => ( - - SheetManager.show("Playlist", { payload: { startAtCreate: true } }) - } - > - - - )} contentContainerStyle={{ paddingBottom: gutters * 2, }} diff --git a/src/screens/Library/Library.js b/src/screens/Library/Library.js index fd76250..06a71a4 100644 --- a/src/screens/Library/Library.js +++ b/src/screens/Library/Library.js @@ -1,22 +1,28 @@ -import { View, Image, ScrollView, Pressable, Platform } from 'react-native'; -import React from 'react'; -import Page from '../../layouts/Page'; -import { background, icons } from '../../assets'; -import SearchBar from '../../components/SearchBar'; -import MyMusic from './components/MyMusic'; -import BackTracks from './components/BackTracks'; -import MyClips from './components/MyClips'; -import LikedMusic from './components/LikedMusic'; -import LikedPlayback from './components/LikedPlayback'; -import LikedClips from './components/LikedClips'; -import { responsiveHeight } from 'react-native-responsive-dimensions'; -import MyPlaylist from './components/MyPlaylist'; -import { navigate } from '../../navigation/NavigationService'; -import { Routes } from '../../navigation'; -import { useUser } from '../../providers/UserDataProvider'; -import { Text } from 'react-native'; -import { Palette } from '../../styles'; -import { FONT_FAMILY } from '../../styles/Fonts'; +import React from "react"; +import { + Image, + Platform, + Pressable, + ScrollView, + Text, + View, +} from "react-native"; +import { responsiveHeight } from "react-native-responsive-dimensions"; +import { background, icons } from "../../assets"; +import SearchBar from "../../components/SearchBar"; +import Page from "../../layouts/Page"; +import { Routes } from "../../navigation"; +import { navigate } from "../../navigation/NavigationService"; +import { useUser } from "../../providers/UserDataProvider"; +import { Palette } from "../../styles"; +import { FONT_FAMILY } from "../../styles/Fonts"; +import BackTracks from "./components/BackTracks"; +import LikedClips from "./components/LikedClips"; +import LikedMusic from "./components/LikedMusic"; +import LikedPlayback from "./components/LikedPlayback"; +import MyClips from "./components/MyClips"; +import MyMusic from "./components/MyMusic"; +import MyPlaylist from "./components/MyPlaylist"; const Library = () => { const { @@ -49,9 +55,9 @@ const Library = () => { hasLikedClips; return ( - + - + navigate(Routes.Research)}> { flexGrow: 1, gap: 20, paddingBottom: responsiveHeight(20), - paddingTop: Platform.OS !== 'android' ? 20 : 0, + paddingTop: Platform.OS !== "android" ? 20 : 0, }} - showsVerticalScrollIndicator={false}> + showsVerticalScrollIndicator={false} + > {hasMyMusic && } {hasBackTracks && } {hasLikedMusic && } @@ -82,18 +89,20 @@ const Library = () => { + }} + > + textAlign: "center", + }} + > Rien n'est disponible encore ici diff --git a/src/screens/Library/Library.web.js b/src/screens/Library/Library.web.js new file mode 100644 index 0000000..0ea11ff --- /dev/null +++ b/src/screens/Library/Library.web.js @@ -0,0 +1,157 @@ +import React from "react"; +import { + Image, + Platform, + Pressable, + ScrollView, + Text, + View, +} from "react-native"; +import { responsiveHeight } from "react-native-responsive-dimensions"; +import { background, icons } from "../../assets"; +import SearchBar from "../../components/SearchBar"; +import Page from "../../layouts/Page"; +import { Routes } from "../../navigation"; +import { navigate } from "../../navigation/NavigationService"; +import { useUser } from "../../providers/UserDataProvider"; +import { Palette, Style } from "../../styles"; +import { FONT_FAMILY } from "../../styles/Fonts"; +import BackTracks from "./components/BackTracks"; +import LikedClips from "./components/LikedClips"; +import LikedMusic from "./components/LikedMusic"; +import LikedPlayback from "./components/LikedPlayback"; +import MyClips from "./components/MyClips"; +import MyMusic from "./components/MyMusic"; +import MyPlaylist from "./components/MyPlaylist"; +const Library = () => { + const { + userProjects = [], + userPlaybacks = [], + userLikedProjects = [], + userLikedPlaybacks = [], + userPlaylists = [], + } = useUser() || {}; + + const hasMyMusic = Array.isArray(userProjects) && userProjects.length > 0; + const hasBackTracks = + Array.isArray(userPlaybacks) && userPlaybacks.length > 0; + const hasLikedMusic = + Array.isArray(userLikedProjects) && userLikedProjects.length > 0; + const hasLikedPlayback = + Array.isArray(userLikedPlaybacks) && userLikedPlaybacks.length > 0; + const hasPlaylists = Array.isArray(userPlaylists) && userPlaylists.length > 0; + + const hasMyClips = false; // À modifier quand les vraies données seront disponibles + const hasLikedClips = false; // À modifier quand les vraies données seront disponibles + + const hasAnySection = + hasMyMusic || + hasBackTracks || + hasLikedMusic || + hasLikedPlayback || + hasPlaylists || + hasMyClips || + hasLikedClips; + + return ( + + + + navigate(Routes.Research)}> + navigate(Routes.Research), + }} + /> + + + + + + {hasMyMusic && ( + + + + )} + {hasPlaylists && ( + + + + )} + + + + {hasBackTracks && ( + + + + )} + {hasMyClips && ( + + + + )} + + + + {hasLikedMusic && ( + + + + )} + {hasLikedPlayback && ( + + + + )} + + + {hasLikedClips && } + + {!hasAnySection && ( + + + Rien n'est disponible encore ici + + + )} + + + + ); +}; + +export default Library; diff --git a/src/screens/Library/components/LikedMusic.js b/src/screens/Library/components/LikedMusic.js index 90e4e48..578f12a 100644 --- a/src/screens/Library/components/LikedMusic.js +++ b/src/screens/Library/components/LikedMusic.js @@ -7,19 +7,20 @@ import { useWindowDimensions, } from "react-native"; import { img } from "../../../assets"; +import useLayoutType from "../../../hooks/useLayoutType"; import { Routes } from "../../../navigation"; import { navigate } from "../../../navigation/NavigationService"; import { useUser } from "../../../providers/UserDataProvider"; import CardContainer from "./CardContainer"; - const LikedMusic = () => { const { userLikedProjects = [] } = useUser(); const items = Array.isArray(userLikedProjects) ? userLikedProjects.slice(0, 3) : []; const { width: screenWidth } = useWindowDimensions(); + const { isWeb } = useLayoutType(); const [containerWidth, setContainerWidth] = useState(screenWidth); - const numColumns = 3; + const numColumns = isWeb ? 2 : 3; const gap = 8; const itemWidth = Math.max( 0, @@ -42,7 +43,7 @@ const LikedMusic = () => { data={items} numColumns={numColumns} key={numColumns} - contentContainerStyle={{}} + contentContainerStyle={{ gap: gap }} columnWrapperStyle={numColumns > 1 ? { gap } : null} keyExtractor={(item) => item.id} renderItem={({ item }) => (