diff --git a/lib/screens/libraries/library_browse_grouping.dart b/lib/screens/libraries/library_browse_grouping.dart index 9b4d799f..2ed238e0 100644 --- a/lib/screens/libraries/library_browse_grouping.dart +++ b/lib/screens/libraries/library_browse_grouping.dart @@ -40,12 +40,16 @@ List libraryBrowseGroupingOptions(MediaLibrary library, {required bool c }; } -String defaultLibraryBrowseGrouping(MediaLibrary library) { +String defaultLibraryBrowseGrouping(MediaLibrary library, {required bool canGroupByFolders}) { if (library.isShared) return browseGroupingAll; return switch (library.kind) { MediaKind.show => browseGroupingShows, MediaKind.movie => browseGroupingMovies, MediaKind.artist => browseGroupingArtists, + // Home-video libraries are folder-organized on the server, so open them + // grouped by folders like the official clients do (#966). An explicitly + // saved grouping still wins — this is only the unset-preference fallback. + MediaKind.clip when canGroupByFolders => browseGroupingFolders, _ => browseGroupingAll, }; } @@ -54,6 +58,6 @@ String normalizeLibraryBrowseGrouping(MediaLibrary library, String? grouping, {r final options = libraryBrowseGroupingOptions(library, canGroupByFolders: canGroupByFolders); if (grouping != null && options.contains(grouping)) return grouping; - final fallback = defaultLibraryBrowseGrouping(library); + final fallback = defaultLibraryBrowseGrouping(library, canGroupByFolders: canGroupByFolders); return options.contains(fallback) ? fallback : options.first; } diff --git a/lib/screens/libraries/tabs/library_browse_tab.dart b/lib/screens/libraries/tabs/library_browse_tab.dart index 1bcdb146..a287e78b 100644 --- a/lib/screens/libraries/tabs/library_browse_tab.dart +++ b/lib/screens/libraries/tabs/library_browse_tab.dart @@ -758,7 +758,7 @@ class _LibraryBrowseTabState extends BaseLibraryTabState