diff --git a/src/assets/UI/libraryBgWeb.png b/src/assets/UI/libraryBgWeb.png index e679c67..7110bcf 100644 Binary files a/src/assets/UI/libraryBgWeb.png and b/src/assets/UI/libraryBgWeb.png differ diff --git a/src/components/player/GlobalAudioPlayer.js b/src/components/player/GlobalAudioPlayer.js index d47ce77..9e165e1 100644 --- a/src/components/player/GlobalAudioPlayer.js +++ b/src/components/player/GlobalAudioPlayer.js @@ -5,8 +5,8 @@ import { useSafeAreaInsets } from "react-native-safe-area-context"; import { icons, img } from "../../assets"; import { arrayRemove, arrayUnion, projectsRef } from "../../config/firebase"; -import { isWeb } from "../../hooks/useLayoutType"; import useDataFromRef from "../../hooks/useDataFromRef"; +import { isWeb } from "../../hooks/useLayoutType"; import usePlayer from "../../hooks/usePlayer"; import { useUser } from "../../providers/UserDataProvider"; import { gutters, Palette } from "../../styles"; @@ -65,11 +65,9 @@ const GlobalAudioPlayer = () => { return likedByList.includes(currentUID); }, [likedByList, projectId, currentUID]); - const effectiveIsLiked = - pendingLike !== null ? pendingLike : likedFromDoc; + const effectiveIsLiked = pendingLike !== null ? pendingLike : likedFromDoc; - const isLikeProcessing = - pendingLike !== null && pendingLike !== likedFromDoc; + const isLikeProcessing = pendingLike !== null && pendingLike !== likedFromDoc; useEffect(() => { setPendingLike(null); @@ -96,12 +94,7 @@ const GlobalAudioPlayer = () => { } catch (_error) { setPendingLike(null); } - }, [ - currentUID, - effectiveIsLiked, - isLikeProcessing, - projectId, - ]); + }, [currentUID, effectiveIsLiked, isLikeProcessing, projectId]); const insets = useSafeAreaInsets(); @@ -130,7 +123,7 @@ const GlobalAudioPlayer = () => { const TAB_BAR_HEIGHT = 64; const GAP_WITH_TAB = 8; - const bottomOffset = (isWeb ? gutters : 3) + TAB_BAR_HEIGHT + GAP_WITH_TAB; + const bottomOffset = (isWeb ? gutters : 5) + TAB_BAR_HEIGHT + GAP_WITH_TAB; if (!hasTrack) return null; diff --git a/src/navigation/TabBar.js b/src/navigation/TabBar.js index 1ae0195..a5b1fc7 100644 --- a/src/navigation/TabBar.js +++ b/src/navigation/TabBar.js @@ -15,7 +15,7 @@ const TabBar = ({ state = {}, descriptors = {}, navigation = {} }) => { { }, [dropdownVisible, closeDropdown]); return ( - + @@ -207,7 +211,7 @@ const Library = () => { showsVerticalScrollIndicator={false} > { - + @@ -235,7 +248,7 @@ const Library = () => { - + {!hasAnySection && ( { const { userPlaybacks } = useUserData(); @@ -40,7 +44,7 @@ const BackTracks = () => { onPressPlus={() => navigate(Routes.WritingLyrics)} > - {items.length > 0 && ( + {items.length > 0 ? ( setContainerWidth(e.nativeEvent.layout.width)} data={items} @@ -67,6 +71,24 @@ const BackTracks = () => { )} /> + ) : ( + + + Aucun playback pour l'instant + + navigate(Routes.WritingLyrics)} + title=" Créer un playback" + > + )} diff --git a/src/screens/Library/components/LikedMusic.js b/src/screens/Library/components/LikedMusic.js index e31f879..863cca4 100644 --- a/src/screens/Library/components/LikedMusic.js +++ b/src/screens/Library/components/LikedMusic.js @@ -4,14 +4,19 @@ import { FlatList, Pressable, Image as RNImage, + Text, useWindowDimensions, + View, } from "react-native"; import { img } from "../../../assets"; +import GradientButton from "../../../components/GradientButton"; import useLayoutType from "../../../hooks/useLayoutType"; import useNavigateToMusicDetails from "../../../hooks/useNavigateToMusicDetails"; 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 CardContainer from "./CardContainer"; const LikedMusic = () => { const { userLikedProjects = [] } = useUser(); @@ -40,51 +45,71 @@ const LikedMusic = () => { } onPressPlus={() => navigate(Routes.WritingLyrics)} > - setContainerWidth(e.nativeEvent.layout.width)} - scrollEnabled={false} - data={items} - numColumns={numColumns} - key={numColumns} - contentContainerStyle={{ gap: gap }} - columnWrapperStyle={numColumns > 1 ? { gap } : null} - keyExtractor={(item) => item.id} - renderItem={({ item }) => ( - - navigateToMusicDetails({ - projectId: item.id, - songUrl: item?.songUrl, - }) - } + {items.length > 0 ? ( + setContainerWidth(e.nativeEvent.layout.width)} + scrollEnabled={false} + data={items} + numColumns={numColumns} + key={numColumns} + contentContainerStyle={{ gap: gap }} + columnWrapperStyle={numColumns > 1 ? { gap } : null} + keyExtractor={(item) => item.id} + renderItem={({ item }) => ( + + navigateToMusicDetails({ + projectId: item.id, + songUrl: item?.songUrl, + }) + } + > + {item?.coverUrl ? ( + + ) : ( + + )} + + )} + /> + ) : ( + + - {item?.coverUrl ? ( - - ) : ( - - )} - - )} - /> + Aucun musique likée pour l'instant + + navigate(Routes.WritingLyrics)} + title=" Créer une musique" + > + + )} ); }; diff --git a/src/screens/Library/components/LikedPlayback.js b/src/screens/Library/components/LikedPlayback.js index 56c9b0f..d8a86fe 100644 --- a/src/screens/Library/components/LikedPlayback.js +++ b/src/screens/Library/components/LikedPlayback.js @@ -3,13 +3,17 @@ import { FlatList, Image, Pressable, + Text, View, useWindowDimensions, } from "react-native"; +import GradientButton from "../../../components/GradientButton"; import useLayoutType from "../../../hooks/useLayoutType"; import { Routes } from "../../../navigation"; import { navigate } from "../../../navigation/NavigationService"; import { useUserData } from "../../../providers/UserDataProvider"; +import { Palette } from "../../../styles"; +import { FONT_FAMILY } from "../../../styles/Fonts"; import CardContainer from "./CardContainer"; const LikedPlayback = () => { const { isWeb } = useLayoutType(); @@ -38,7 +42,7 @@ const LikedPlayback = () => { onPressPlus={() => navigate(Routes.WritingLyrics)} > - {items.length > 0 && ( + {items.length > 0 ? ( setContainerWidth(e.nativeEvent.layout.width)} data={items} @@ -65,6 +69,24 @@ const LikedPlayback = () => { )} /> + ) : ( + + + Aucun playback liké pour l'instant + + navigate(Routes.WritingLyrics)} + title=" Créer un playback" + > + )} diff --git a/src/screens/Playbacks/components/PlaybackItem.web.js b/src/screens/Playbacks/components/PlaybackItem.web.js index 862560d..5cee8db 100644 --- a/src/screens/Playbacks/components/PlaybackItem.web.js +++ b/src/screens/Playbacks/components/PlaybackItem.web.js @@ -1,4 +1,3 @@ -import useSharedAudioPlayer from "../../../hooks/useSharedAudioPlayer"; import { BlurView } from "expo-blur"; import React, { useCallback, @@ -24,6 +23,7 @@ import { projectsRef, usersRef, } from "../../../config/firebase"; +import useSharedAudioPlayer from "../../../hooks/useSharedAudioPlayer"; import { Routes } from "../../../navigation"; import { navigate } from "../../../navigation/NavigationService"; import { useUser } from "../../../providers/UserDataProvider"; @@ -145,7 +145,11 @@ const PlaybackItem = ({ }, [item?.likedBy, currentUID]); const audioPlayer = useSharedAudioPlayer(audioSource || undefined, { - id: item?.id ? `playback-${item.id}` : audioSource?.uri ? `playback-${audioSource.uri}` : undefined, + id: item?.id + ? `playback-${item.id}` + : audioSource?.uri + ? `playback-${audioSource.uri}` + : undefined, title: typeof item?.title === "string" ? item.title : "", artist: typeof item?.userName === "string" ? item.userName : "", artwork: item?.coverUrl || null, @@ -521,13 +525,16 @@ const PlaybackItem = ({ navigate(Routes.SingerProfile, { userId: item?.userId }); }} > - {owner?.profilePictureURL ? ( + {owner?.profilePictureURL && ( - ) : ( - )} {owner?.id && currentUID && owner.id !== currentUID && (