feat(library): indicate active filters in browse view

Badge the mobile Library options icon with a dot while filters are
active, and replace the "This library is empty" state with a
"No items match the active filters" message plus a reset button.

close #1470
This commit is contained in:
edde746
2026-07-04 20:36:23 +02:00
parent 8fe66f6e36
commit eb8796fa26
6 changed files with 117 additions and 18 deletions
+2
View File
@@ -736,6 +736,8 @@
"allLibrariesHidden": "All libraries are hidden",
"hiddenLibrariesCount": "Hidden libraries (${count})",
"thisLibraryIsEmpty": "This library is empty",
"noItemsMatchFilters": "No items match the active filters",
"resetFilters": "Reset filters",
"all": "All",
"clearAll": "Clear All",
"scanLibraryConfirm": "Are you sure you want to scan \"${title}\"?",
+1 -1
View File
@@ -4,7 +4,7 @@
/// To regenerate, run: `dart run slang`
///
/// Locales: 16
/// Strings: 20716 (1294 per locale)
/// Strings: 20718 (1294 per locale)
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
+10 -2
View File
@@ -2269,6 +2269,12 @@ class TranslationsLibrariesEn {
/// en: 'This library is empty'
String get thisLibraryIsEmpty => 'This library is empty';
/// en: 'No items match the active filters'
String get noItemsMatchFilters => 'No items match the active filters';
/// en: 'Reset filters'
String get resetFilters => 'Reset filters';
/// en: 'All'
String get all => 'All';
@@ -5261,6 +5267,8 @@ extension on Translations {
'libraries.allLibrariesHidden' => 'All libraries are hidden',
'libraries.hiddenLibrariesCount' => ({required Object count}) => 'Hidden libraries (${count})',
'libraries.thisLibraryIsEmpty' => 'This library is empty',
'libraries.noItemsMatchFilters' => 'No items match the active filters',
'libraries.resetFilters' => 'Reset filters',
'libraries.all' => 'All',
'libraries.clearAll' => 'Clear All',
'libraries.scanLibraryConfirm' => ({required Object title}) => 'Are you sure you want to scan "${title}"?',
@@ -5597,10 +5605,10 @@ extension on Translations {
'shaders.shaderImportFailed' => 'Failed to import shader',
'shaders.deleteShader' => 'Delete Shader',
'shaders.deleteShaderConfirm' => ({required Object name}) => 'Delete "${name}"?',
'companionRemote.title' => 'Companion Remote',
'companionRemote.connectedTo' => ({required Object name}) => 'Connected to ${name}',
_ => null,
} ?? switch (path) {
'companionRemote.title' => 'Companion Remote',
'companionRemote.connectedTo' => ({required Object name}) => 'Connected to ${name}',
'companionRemote.unknownDevice' => 'Unknown Device',
'companionRemote.session.startingServer' => 'Starting remote server...',
'companionRemote.session.failedToCreate' => 'Failed to start remote server:',