diff --git a/components/Library/component.tsx b/components/Favorites/component.tsx similarity index 81% rename from components/Library/component.tsx rename to components/Favorites/component.tsx index 82062f60..2d0caabb 100644 --- a/components/Library/component.tsx +++ b/components/Favorites/component.tsx @@ -1,24 +1,25 @@ import { createNativeStackNavigator } from "@react-navigation/native-stack"; import React from "react"; import { StackParamList } from "../types"; -import LibraryScreen from "./screens"; +import FavoritesScreen from "./screens"; import { ArtistScreen } from "../Artist/screens"; import { AlbumScreen } from "../Album/screens"; import { PlaylistScreen } from "../Playlist/screens"; import ArtistsScreen from "../Artists/screen"; import AlbumsScreen from "../Albums/screen"; +import TracksScreen from "../Tracks/screen"; const LibraryStack = createNativeStackNavigator(); export default function Library(): React.JSX.Element { return ( + + , + route: RouteProp, navigation: NativeStackNavigationProp }): React.JSX.Element { diff --git a/components/Tracks/component.tsx b/components/Tracks/component.tsx new file mode 100644 index 00000000..c3d0d846 --- /dev/null +++ b/components/Tracks/component.tsx @@ -0,0 +1,41 @@ +import { useFavoriteTracks } from "@/api/queries/favorites"; +import { useApiClientContext } from "../jellyfin-api-provider"; +import { TracksProps } from "../types"; +import { SafeAreaView, useSafeAreaFrame } from "react-native-safe-area-context"; +import { FlatList, RefreshControl } from "react-native"; +import Track from "../Global/components/track"; + +export default function Tracks({ navigation }: TracksProps) : React.JSX.Element { + const { apiClient, library } = useApiClientContext(); + const { data: tracks, refetch, isPending } = useFavoriteTracks(apiClient!, library!.musicLibraryId); + + const { width } = useSafeAreaFrame(); + + return ( + + + } + renderItem={({ index, item: track}) => { + return ( + + + ) + }} + /> + + ) +} \ No newline at end of file diff --git a/components/Tracks/screen.tsx b/components/Tracks/screen.tsx new file mode 100644 index 00000000..755b124d --- /dev/null +++ b/components/Tracks/screen.tsx @@ -0,0 +1,17 @@ +import { RouteProp } from "@react-navigation/native"; +import { StackParamList } from "../types"; +import { NativeStackNavigationProp } from "@react-navigation/native-stack"; +import React from "react"; +import Tracks from "./component"; + +export default function TracksScreen({ + route, + navigation +} : { + route: RouteProp, + navigation: NativeStackNavigationProp +}) : React.JSX.Element { + return ( + + ) +} \ No newline at end of file diff --git a/components/tabs.tsx b/components/tabs.tsx index 2b003094..25a9c109 100644 --- a/components/tabs.tsx +++ b/components/tabs.tsx @@ -5,7 +5,7 @@ import MaterialCommunityIcons from "react-native-vector-icons/MaterialCommunityI import { useColorScheme } from "react-native"; import { Colors } from "../enums/colors"; import Search from "./Search/component"; -import Library from "./Library/component"; +import Favorites from "./Favorites/component"; import Settings from "./Settings/component"; import { Discover } from "./Discover/component"; import { Miniplayer } from "./Player/mini-player"; @@ -51,8 +51,8 @@ export function Tabs() : React.JSX.Element { /> ( diff --git a/components/types.tsx b/components/types.tsx index 578e7864..f12cb718 100644 --- a/components/types.tsx +++ b/components/types.tsx @@ -5,7 +5,7 @@ import { NativeStackScreenProps } from "@react-navigation/native-stack"; export type StackParamList = { Home: undefined; Discover: undefined; - Library: undefined, + Favorites: undefined, Artists: undefined, Albums: undefined, Tracks: undefined, @@ -44,7 +44,7 @@ export type HomePlaylistProps = NativeStackScreenProps; -export type LibraryProps = NativeStackScreenProps; +export type LibraryProps = NativeStackScreenProps; export type ArtistsProps = NativeStackScreenProps;