add global music folder selector

This commit is contained in:
jeffvli
2025-11-17 01:46:04 -08:00
parent 199a67fdf3
commit a92a829ca7
28 changed files with 782 additions and 351 deletions
@@ -266,6 +266,7 @@ const genreListSort = {
const genreListParameters = paginationParameters.extend({
_sort: z.nativeEnum(genreListSort).optional(),
library_id: z.array(z.string()).optional(),
name: z.string().optional(),
});
@@ -308,6 +309,7 @@ const albumArtistList = z.array(albumArtist);
const albumArtistListParameters = paginationParameters.extend({
_sort: z.nativeEnum(NDAlbumArtistListSort).optional(),
genre_id: z.string().optional(),
library_id: z.array(z.string()).optional(),
missing: z.boolean().optional(),
name: z.string().optional(),
role: z.string().optional(),
@@ -374,6 +376,7 @@ const albumListParameters = paginationParameters.extend({
genre_id: z.union([z.string(), z.string().array()]).optional(),
has_rating: z.boolean().optional(),
id: z.string().optional(),
library_id: z.array(z.string()).optional(),
name: z.string().optional(),
recently_added: z.boolean().optional(),
recently_played: z.boolean().optional(),
@@ -456,6 +459,7 @@ const songListParameters = paginationParameters.extend({
artist_id: z.array(z.string()).optional(),
artists_id: z.array(z.string()).optional(),
genre_id: z.array(z.string()).optional(),
library_id: z.array(z.string()).optional(),
path: z.string().optional(),
starred: z.boolean().optional(),
title: z.string().optional(),
+12 -11
View File
@@ -89,6 +89,7 @@ export type QueueSong = Song & {
export type ServerListItem = {
features?: ServerFeatures;
id: string;
musicFolderId?: string[];
name: string;
preferInstantMix?: boolean;
savePassword?: boolean;
@@ -280,7 +281,7 @@ export interface GenreListQuery extends BaseQuery<GenreListSort> {
navidrome?: null;
};
limit?: number;
musicFolderId?: string;
musicFolderId?: string | string[];
searchTerm?: string;
startIndex: number;
}
@@ -436,7 +437,7 @@ export interface AlbumListQuery extends AlbumListNavidromeQuery, BaseQuery<Album
limit?: number;
maxYear?: number;
minYear?: number;
musicFolderId?: string;
musicFolderId?: string | string[];
searchTerm?: string;
startIndex: number;
}
@@ -564,7 +565,7 @@ export interface SongListQuery extends BaseQuery<SongListSort> {
limit?: number;
maxYear?: number;
minYear?: number;
musicFolderId?: string;
musicFolderId?: string | string[];
searchTerm?: string;
startIndex: number;
}
@@ -667,7 +668,7 @@ export type AlbumArtistListCountArgs = BaseEndpointArgs & {
export interface AlbumArtistListQuery extends BaseQuery<AlbumArtistListSort> {
_custom?: Record<string, any>;
limit?: number;
musicFolderId?: string;
musicFolderId?: string | string[];
searchTerm?: string;
startIndex: number;
}
@@ -759,7 +760,7 @@ export type ArtistListCountArgs = BaseEndpointArgs & { query: ListCountQuery<Art
export interface ArtistListQuery extends BaseQuery<ArtistListSort> {
_custom?: Record<string, any>;
limit?: number;
musicFolderId?: string;
musicFolderId?: string | string[];
role?: string;
searchTerm?: string;
startIndex: number;
@@ -1058,7 +1059,7 @@ export type ArtistInfoArgs = BaseEndpointArgs & { query: ArtistInfoQuery };
export type ArtistInfoQuery = {
artistId: string;
limit: number;
musicFolderId?: string;
musicFolderId?: string | string[];
};
export type FullLyricsMetadata = Omit<InternetProviderLyricResponse, 'id' | 'lyrics' | 'source'> & {
@@ -1104,7 +1105,7 @@ export type RandomSongListQuery = {
limit?: number;
maxYear?: number;
minYear?: number;
musicFolderId?: string;
musicFolderId?: string | string[];
played: Played;
};
@@ -1127,14 +1128,14 @@ export type ScrobbleResponse = null;
export type SearchAlbumArtistsQuery = {
albumArtistLimit?: number;
albumArtistStartIndex?: number;
musicFolderId?: string;
musicFolderId?: string | string[];
query?: string;
};
export type SearchAlbumsQuery = {
albumLimit?: number;
albumStartIndex?: number;
musicFolderId?: string;
musicFolderId?: string | string[];
query?: string;
};
@@ -1147,7 +1148,7 @@ export type SearchQuery = {
albumArtistStartIndex?: number;
albumLimit?: number;
albumStartIndex?: number;
musicFolderId?: string;
musicFolderId?: string | string[];
query?: string;
songLimit?: number;
songStartIndex?: number;
@@ -1160,7 +1161,7 @@ export type SearchResponse = {
};
export type SearchSongsQuery = {
musicFolderId?: string;
musicFolderId?: string | string[];
query?: string;
songLimit?: number;
songStartIndex?: number;
+1
View File
@@ -4,6 +4,7 @@ export enum ServerFeature {
BFR = 'bfr',
LYRICS_MULTIPLE_STRUCTURED = 'lyricsMultipleStructured',
LYRICS_SINGLE_STRUCTURED = 'lyricsSingleStructured',
MUSIC_FOLDER_MULTISELECT = 'musicFolderMultiselect',
PLAYLISTS_SMART = 'playlistsSmart',
PUBLIC_PLAYLIST = 'publicPlaylist',
SHARING_ALBUM_SONG = 'sharingAlbumSong',