mirror of
https://github.com/Jellify-Music/App.git
synced 2026-05-02 16:49:40 -05:00
Adding favorites bits
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import { QueryKeys } from "@/enums/query-keys";
|
||||
import { Api } from "@jellyfin/sdk";
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import { fetchFavoriteAlbums, fetchFavoriteArtists, fetchFavoriteTracks } from "./functions/favorites";
|
||||
|
||||
export const useFavoriteArtists = (api: Api, libraryId: string) => useQuery({
|
||||
queryKey: [QueryKeys.FavoriteArtists, api, libraryId],
|
||||
queryFn: ({ queryKey }) => {
|
||||
const api: Api = queryKey[1] as Api;
|
||||
const libraryId : string = queryKey[2] as string;
|
||||
|
||||
return fetchFavoriteArtists(api, libraryId)
|
||||
}
|
||||
});
|
||||
|
||||
export const useFavoriteAlbums = (api: Api, libraryId: string) => useQuery({
|
||||
queryKey: [QueryKeys.FavoriteAlbums, api, libraryId],
|
||||
queryFn: ({ queryKey }) => {
|
||||
const api: Api = queryKey[1] as Api;
|
||||
const libraryId : string = queryKey[2] as string;
|
||||
|
||||
return fetchFavoriteAlbums(api, libraryId)
|
||||
}
|
||||
});
|
||||
|
||||
export const useFavoriteTracks = (api: Api, libraryId: string) => useQuery({
|
||||
queryKey: [QueryKeys.FavoriteTracks, api, libraryId],
|
||||
queryFn: ({ queryKey }) => {
|
||||
const api: Api = queryKey[1] as Api;
|
||||
const libraryId : string = queryKey[2] as string;
|
||||
|
||||
return fetchFavoriteTracks(api, libraryId)
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,102 @@
|
||||
import { Api } from "@jellyfin/sdk";
|
||||
import { BaseItemDto, BaseItemKind, ItemSortBy, SortOrder } from "@jellyfin/sdk/lib/generated-client/models";
|
||||
import { getItemsApi } from "@jellyfin/sdk/lib/utils/api";
|
||||
|
||||
export function fetchFavoriteArtists(api: Api, musicLibraryId: string): Promise<BaseItemDto[]> {
|
||||
console.debug(`Fetching user's favorite artists`);
|
||||
|
||||
return new Promise(async (resolve, reject) => {
|
||||
getItemsApi(api)
|
||||
.getItems({
|
||||
includeItemTypes: [
|
||||
BaseItemKind.MusicArtist
|
||||
],
|
||||
isFavorite: true,
|
||||
parentId: musicLibraryId,
|
||||
recursive: true,
|
||||
sortBy: [
|
||||
ItemSortBy.SortName
|
||||
],
|
||||
sortOrder: [
|
||||
SortOrder.Descending
|
||||
]
|
||||
})
|
||||
.then((response) => {
|
||||
console.debug(`Received favorite artist response`, response);
|
||||
|
||||
if (response.data.Items)
|
||||
resolve(response.data.Items)
|
||||
else
|
||||
resolve([]);
|
||||
}).catch((error) => {
|
||||
console.error(error);
|
||||
reject(error);
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export function fetchFavoriteAlbums(api: Api, musicLibraryId: string): Promise<BaseItemDto[]> {
|
||||
console.debug(`Fetching user's favorite albums`);
|
||||
|
||||
return new Promise(async (resolve, reject) => {
|
||||
getItemsApi(api)
|
||||
.getItems({
|
||||
includeItemTypes: [
|
||||
BaseItemKind.MusicAlbum
|
||||
],
|
||||
isFavorite: true,
|
||||
parentId: musicLibraryId,
|
||||
recursive: true,
|
||||
sortBy: [
|
||||
ItemSortBy.SortName
|
||||
],
|
||||
sortOrder: [
|
||||
SortOrder.Descending
|
||||
]
|
||||
})
|
||||
.then((response) => {
|
||||
console.debug(`Received favorite album response`, response);
|
||||
|
||||
if (response.data.Items)
|
||||
resolve(response.data.Items)
|
||||
else
|
||||
resolve([]);
|
||||
}).catch((error) => {
|
||||
console.error(error);
|
||||
reject(error);
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export function fetchFavoriteTracks(api: Api, musicLibraryId: string): Promise<BaseItemDto[]> {
|
||||
console.debug(`Fetching user's favorite artists`);
|
||||
|
||||
return new Promise(async (resolve, reject) => {
|
||||
getItemsApi(api)
|
||||
.getItems({
|
||||
includeItemTypes: [
|
||||
BaseItemKind.Audio
|
||||
],
|
||||
isFavorite: true,
|
||||
parentId: musicLibraryId,
|
||||
recursive: true,
|
||||
sortBy: [
|
||||
ItemSortBy.SortName
|
||||
],
|
||||
sortOrder: [
|
||||
SortOrder.Descending
|
||||
]
|
||||
})
|
||||
.then((response) => {
|
||||
console.debug(`Received favorite artist response`, response);
|
||||
|
||||
if (response.data.Items)
|
||||
resolve(response.data.Items)
|
||||
else
|
||||
resolve([]);
|
||||
}).catch((error) => {
|
||||
console.error(error);
|
||||
reject(error);
|
||||
})
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user