38 lines
1.3 KiB
TypeScript
38 lines
1.3 KiB
TypeScript
import { AlbumTrack, Playlist } from '@/store/music/types';
|
|
import { asyncFetchStore, fetchApi } from './lib';
|
|
|
|
const playlistOptions = {
|
|
SortBy: 'SortName',
|
|
SortOrder: 'Ascending',
|
|
IncludeItemTypes: 'Playlist',
|
|
Recursive: 'true',
|
|
Fields: 'PrimaryImageAspectRatio,SortName,BasicSyncInfo,DateCreated',
|
|
ImageTypeLimit: '1',
|
|
EnableImageTypes: 'Primary,Backdrop,Banner,Thumb'
|
|
};
|
|
|
|
/**
|
|
* Retrieve all albums that are available on the Jellyfin server
|
|
*/
|
|
export async function retrieveAllPlaylists() {
|
|
const playlistParams = new URLSearchParams(playlistOptions).toString();
|
|
|
|
return fetchApi<{ Items: Playlist[] }>(({ user_id }) => `/Users/${user_id}/Items?${playlistParams}`)
|
|
.then((d) => d!.Items);
|
|
}
|
|
|
|
/**
|
|
* Retrieve all albums that are available on the Jellyfin server
|
|
*/
|
|
export async function retrievePlaylistTracks(ItemId: string) {
|
|
const credentials = asyncFetchStore().getState().settings.credentials;
|
|
const singlePlaylistOptions = {
|
|
SortBy: 'IndexNumber,SortName',
|
|
UserId: credentials?.user_id || '',
|
|
};
|
|
const singlePlaylistParams = new URLSearchParams(singlePlaylistOptions).toString();
|
|
|
|
return fetchApi<{ Items: AlbumTrack[] }>(`/Playlists/${ItemId}/Items?${singlePlaylistParams}`)
|
|
.then((d) => d.Items);
|
|
}
|