diff --git a/lib/services/jellyfin_client/parts/browse.dart b/lib/services/jellyfin_client/parts/browse.dart index 8bb303733..33b8c9d59 100644 --- a/lib/services/jellyfin_client/parts/browse.dart +++ b/lib/services/jellyfin_client/parts/browse.dart @@ -137,8 +137,12 @@ const _baseFolderRowFields = 'SortName'; /// count fields are needed; queried with `EnableUserData=false` like the /// filesystem folder rows. Trade-off: fully played albums lose the watched /// checkmark on this row (Jellyfin web's latest-albums row shows no play -/// state either). -const _baseMusicAlbumRowFields = 'PremiereDate,OriginalTitle,SortName'; +/// state either). `DateCreated` stays in the set despite the slimness goal: +/// it is a direct dto property (no COUNT query), and the Latest Albums +/// see-all sheet offers the "Date Added" sort, whose [MediaItem.recencySortKey] +/// degrades to null-comparing no-ops without it — the same gap #1552's +/// DateCreated work closed for catalog and hub rows. +const _baseMusicAlbumRowFields = 'PremiereDate,OriginalTitle,SortName,DateCreated'; /// Played-track hub rows (Recently Played / Most Played): Audio LEAF dtos. /// Keeps `UserData` — a cheap direct lookup on leaves that drives the diff --git a/test/services/jellyfin_client_urls_test.dart b/test/services/jellyfin_client_urls_test.dart index 11e443f01..6043b4613 100644 --- a/test/services/jellyfin_client_urls_test.dart +++ b/test/services/jellyfin_client_urls_test.dart @@ -3005,13 +3005,13 @@ void main() { final artistAlbums = captured[2].queryParameters; final albumTracks = captured[3].queryParameters; - expect(albumBrowse['Fields'], 'PremiereDate,OriginalTitle,SortName'); + expect(albumBrowse['Fields'], 'PremiereDate,OriginalTitle,SortName,DateCreated'); expect(albumBrowse['EnableUserData'], 'false'); expect(trackBrowse['Fields'], 'UserData,PremiereDate,OriginalTitle,SortName'); expect(albumBrowse['IncludeItemTypes'], 'MusicAlbum'); expect(trackBrowse['IncludeItemTypes'], 'Audio'); expect(trackBrowse.containsKey('EnableUserData'), isFalse); - expect(artistAlbums['Fields'], 'PremiereDate,OriginalTitle,SortName'); + expect(artistAlbums['Fields'], 'PremiereDate,OriginalTitle,SortName,DateCreated'); expect(artistAlbums['EnableUserData'], 'false'); expect(albumTracks['Fields'], 'UserData,PremiereDate,OriginalTitle,SortName'); }); @@ -4391,8 +4391,9 @@ void main() { expect(captured!.queryParameters['ParentId'], 'lib-99'); expect(captured!.queryParameters['Limit'], '30'); // Album FOLDER dtos: count/user-data fields would each cost the server - // a recursive per-album COUNT query (#1552). - expect(captured!.queryParameters['Fields'], 'PremiereDate,OriginalTitle,SortName'); + // a recursive per-album COUNT query (#1552). DateCreated is a direct dto + // property and backs the see-all sheet's "Date Added" sort. + expect(captured!.queryParameters['Fields'], 'PremiereDate,OriginalTitle,SortName,DateCreated'); expect(captured!.queryParameters['EnableUserData'], 'false'); client.close(); });