mirror of
https://github.com/Jellify-Music/App.git
synced 2026-04-21 09:08:56 -05:00
116 lines
3.6 KiB
TypeScript
116 lines
3.6 KiB
TypeScript
import Client from "../../client";
|
|
import { BaseItemDto, BaseItemKind, ItemSortBy, SortOrder, UserItemDataDto } from "@jellyfin/sdk/lib/generated-client/models";
|
|
import { getItemsApi } from "@jellyfin/sdk/lib/utils/api";
|
|
|
|
export function fetchFavoriteArtists(): Promise<BaseItemDto[]> {
|
|
console.debug(`Fetching user's favorite artists`);
|
|
|
|
return new Promise(async (resolve, reject) => {
|
|
getItemsApi(Client.api!)
|
|
.getItems({
|
|
includeItemTypes: [
|
|
BaseItemKind.MusicArtist
|
|
],
|
|
isFavorite: true,
|
|
parentId: Client.library!.musicLibraryId,
|
|
recursive: true,
|
|
sortBy: [
|
|
ItemSortBy.SortName
|
|
],
|
|
sortOrder: [
|
|
SortOrder.Ascending
|
|
]
|
|
})
|
|
.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(): Promise<BaseItemDto[]> {
|
|
console.debug(`Fetching user's favorite albums`);
|
|
|
|
return new Promise(async (resolve, reject) => {
|
|
getItemsApi(Client.api!)
|
|
.getItems({
|
|
includeItemTypes: [
|
|
BaseItemKind.MusicAlbum
|
|
],
|
|
isFavorite: true,
|
|
parentId: Client.library!.musicLibraryId!,
|
|
recursive: true,
|
|
sortBy: [
|
|
ItemSortBy.SortName
|
|
],
|
|
sortOrder: [
|
|
SortOrder.Ascending
|
|
]
|
|
})
|
|
.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(): Promise<BaseItemDto[]> {
|
|
console.debug(`Fetching user's favorite tracks`);
|
|
|
|
return new Promise(async (resolve, reject) => {
|
|
getItemsApi(Client.api!)
|
|
.getItems({
|
|
includeItemTypes: [
|
|
BaseItemKind.Audio
|
|
],
|
|
isFavorite: true,
|
|
parentId: Client.library!.musicLibraryId,
|
|
recursive: true,
|
|
sortBy: [
|
|
ItemSortBy.SortName
|
|
],
|
|
sortOrder: [
|
|
SortOrder.Ascending
|
|
]
|
|
})
|
|
.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 fetchUserData(itemId: string): Promise<UserItemDataDto> {
|
|
return new Promise(async (resolve, reject) => {
|
|
getItemsApi(Client.api!)
|
|
.getItemUserData({
|
|
itemId
|
|
}).then((response) => {
|
|
resolve(response.data)
|
|
}).catch((error) => {
|
|
console.error(error);
|
|
reject(error);
|
|
})
|
|
});
|
|
} |