From 52b1147275bf6d93976ce23d20fa6a2311525e61 Mon Sep 17 00:00:00 2001 From: zarzet Date: Mon, 27 Jul 2026 01:15:51 +0700 Subject: [PATCH] feat(library): add missing-ISRC metadata filter --- lib/l10n/app_localizations.dart | 10 ++++++++-- lib/l10n/app_localizations_de.dart | 3 +++ lib/l10n/app_localizations_en.dart | 7 +++++-- lib/l10n/app_localizations_es.dart | 3 +++ lib/l10n/app_localizations_fr.dart | 3 +++ lib/l10n/app_localizations_id.dart | 3 +++ lib/l10n/app_localizations_ja.dart | 3 +++ lib/l10n/app_localizations_ko.dart | 3 +++ lib/l10n/app_localizations_pt.dart | 3 +++ lib/l10n/app_localizations_ru.dart | 3 +++ lib/l10n/app_localizations_tr.dart | 3 +++ lib/l10n/app_localizations_uk.dart | 3 +++ lib/l10n/arb/app_en.arb | 8 ++++++-- lib/screens/queue_tab.dart | 9 +++++++++ lib/services/library_database_queue_sql.dart | 3 +++ 15 files changed, 61 insertions(+), 6 deletions(-) diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index d11ae441..a87c0981 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -3727,7 +3727,7 @@ abstract class AppLocalizations { /// Tutorial welcome page title /// /// In en, this message translates to: - /// **'Welcome to SpotiFLAC!'** + /// **'Welcome to SpotiFLAC Mobile!'** String get tutorialWelcomeTitle; /// Tutorial welcome page description @@ -3739,7 +3739,7 @@ abstract class AppLocalizations { /// Tutorial welcome tip 1 /// /// In en, this message translates to: - /// **'Download music from Spotify, Deezer, or paste any supported URL'** + /// **'Search music or paste a link from any source your installed extensions support'** String get tutorialWelcomeTip1; /// Tutorial welcome tip 2 @@ -6760,6 +6760,12 @@ abstract class AppLocalizations { /// **'Incorrect ISRC format'** String get libraryFilterMetadataIncorrectIsrcFormat; + /// Filter option - items without any ISRC tag + /// + /// In en, this message translates to: + /// **'Missing ISRC'** + String get libraryFilterMetadataMissingIsrc; + /// Filter option - items missing record label /// /// In en, this message translates to: diff --git a/lib/l10n/app_localizations_de.dart b/lib/l10n/app_localizations_de.dart index 032d44ca..ed35e7e2 100644 --- a/lib/l10n/app_localizations_de.dart +++ b/lib/l10n/app_localizations_de.dart @@ -4112,6 +4112,9 @@ class AppLocalizationsDe extends AppLocalizations { @override String get libraryFilterMetadataIncorrectIsrcFormat => 'Falsches ISRC-Format'; + @override + String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; + @override String get libraryFilterMetadataMissingLabel => 'Label fehlt'; diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 4d14a53f..3ff91144 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -2076,7 +2076,7 @@ class AppLocalizationsEn extends AppLocalizations { } @override - String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!'; + String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC Mobile!'; @override String get tutorialWelcomeDesc => @@ -2084,7 +2084,7 @@ class AppLocalizationsEn extends AppLocalizations { @override String get tutorialWelcomeTip1 => - 'Download music from Spotify, Deezer, or paste any supported URL'; + 'Search music or paste a link from any source your installed extensions support'; @override String get tutorialWelcomeTip2 => @@ -4067,6 +4067,9 @@ class AppLocalizationsEn extends AppLocalizations { String get libraryFilterMetadataIncorrectIsrcFormat => 'Incorrect ISRC format'; + @override + String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; + @override String get libraryFilterMetadataMissingLabel => 'Missing label'; diff --git a/lib/l10n/app_localizations_es.dart b/lib/l10n/app_localizations_es.dart index 73f285f7..9bff40cc 100644 --- a/lib/l10n/app_localizations_es.dart +++ b/lib/l10n/app_localizations_es.dart @@ -4061,6 +4061,9 @@ class AppLocalizationsEs extends AppLocalizations { String get libraryFilterMetadataIncorrectIsrcFormat => 'Incorrect ISRC format'; + @override + String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; + @override String get libraryFilterMetadataMissingLabel => 'Missing label'; diff --git a/lib/l10n/app_localizations_fr.dart b/lib/l10n/app_localizations_fr.dart index 8b50f585..405a0c20 100644 --- a/lib/l10n/app_localizations_fr.dart +++ b/lib/l10n/app_localizations_fr.dart @@ -4176,6 +4176,9 @@ class AppLocalizationsFr extends AppLocalizations { String get libraryFilterMetadataIncorrectIsrcFormat => 'Format ISRC incorrect'; + @override + String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; + @override String get libraryFilterMetadataMissingLabel => 'Label manquant'; diff --git a/lib/l10n/app_localizations_id.dart b/lib/l10n/app_localizations_id.dart index 92fc66dd..9036e7ff 100644 --- a/lib/l10n/app_localizations_id.dart +++ b/lib/l10n/app_localizations_id.dart @@ -4070,6 +4070,9 @@ class AppLocalizationsId extends AppLocalizations { String get libraryFilterMetadataIncorrectIsrcFormat => 'Incorrect ISRC format'; + @override + String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; + @override String get libraryFilterMetadataMissingLabel => 'Missing label'; diff --git a/lib/l10n/app_localizations_ja.dart b/lib/l10n/app_localizations_ja.dart index 4df93bc5..6903820d 100644 --- a/lib/l10n/app_localizations_ja.dart +++ b/lib/l10n/app_localizations_ja.dart @@ -4056,6 +4056,9 @@ class AppLocalizationsJa extends AppLocalizations { String get libraryFilterMetadataIncorrectIsrcFormat => 'Incorrect ISRC format'; + @override + String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; + @override String get libraryFilterMetadataMissingLabel => 'Missing label'; diff --git a/lib/l10n/app_localizations_ko.dart b/lib/l10n/app_localizations_ko.dart index 95b4721d..e08bf5d8 100644 --- a/lib/l10n/app_localizations_ko.dart +++ b/lib/l10n/app_localizations_ko.dart @@ -3944,6 +3944,9 @@ class AppLocalizationsKo extends AppLocalizations { @override String get libraryFilterMetadataIncorrectIsrcFormat => 'ISRC 형식이 잘못됨'; + @override + String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; + @override String get libraryFilterMetadataMissingLabel => '레이블 누락'; diff --git a/lib/l10n/app_localizations_pt.dart b/lib/l10n/app_localizations_pt.dart index d2743294..dc142aa0 100644 --- a/lib/l10n/app_localizations_pt.dart +++ b/lib/l10n/app_localizations_pt.dart @@ -4061,6 +4061,9 @@ class AppLocalizationsPt extends AppLocalizations { String get libraryFilterMetadataIncorrectIsrcFormat => 'Incorrect ISRC format'; + @override + String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; + @override String get libraryFilterMetadataMissingLabel => 'Missing label'; diff --git a/lib/l10n/app_localizations_ru.dart b/lib/l10n/app_localizations_ru.dart index 564e1980..931e30a8 100644 --- a/lib/l10n/app_localizations_ru.dart +++ b/lib/l10n/app_localizations_ru.dart @@ -4098,6 +4098,9 @@ class AppLocalizationsRu extends AppLocalizations { String get libraryFilterMetadataIncorrectIsrcFormat => 'Incorrect ISRC format'; + @override + String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; + @override String get libraryFilterMetadataMissingLabel => 'Missing label'; diff --git a/lib/l10n/app_localizations_tr.dart b/lib/l10n/app_localizations_tr.dart index 32b488e2..1b06a401 100644 --- a/lib/l10n/app_localizations_tr.dart +++ b/lib/l10n/app_localizations_tr.dart @@ -4097,6 +4097,9 @@ class AppLocalizationsTr extends AppLocalizations { String get libraryFilterMetadataIncorrectIsrcFormat => 'Incorrect ISRC format'; + @override + String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; + @override String get libraryFilterMetadataMissingLabel => 'Missing label'; diff --git a/lib/l10n/app_localizations_uk.dart b/lib/l10n/app_localizations_uk.dart index faadf8e1..cff78cd4 100644 --- a/lib/l10n/app_localizations_uk.dart +++ b/lib/l10n/app_localizations_uk.dart @@ -4115,6 +4115,9 @@ class AppLocalizationsUk extends AppLocalizations { String get libraryFilterMetadataIncorrectIsrcFormat => 'Incorrect ISRC format'; + @override + String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; + @override String get libraryFilterMetadataMissingLabel => 'Missing label'; diff --git a/lib/l10n/arb/app_en.arb b/lib/l10n/arb/app_en.arb index fb2eac57..6b1f94f2 100644 --- a/lib/l10n/arb/app_en.arb +++ b/lib/l10n/arb/app_en.arb @@ -2751,7 +2751,7 @@ } } }, - "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", + "tutorialWelcomeTitle": "Welcome to SpotiFLAC Mobile!", "@tutorialWelcomeTitle": { "description": "Tutorial welcome page title" }, @@ -2759,7 +2759,7 @@ "@tutorialWelcomeDesc": { "description": "Tutorial welcome page description" }, - "tutorialWelcomeTip1": "Download music from Spotify, Deezer, or paste any supported URL", + "tutorialWelcomeTip1": "Search music or paste a link from any source your installed extensions support", "@tutorialWelcomeTip1": { "description": "Tutorial welcome tip 1" }, @@ -5298,6 +5298,10 @@ "@libraryFilterMetadataIncorrectIsrcFormat": { "description": "Filter option - items with an invalid ISRC format" }, + "libraryFilterMetadataMissingIsrc": "Missing ISRC", + "@libraryFilterMetadataMissingIsrc": { + "description": "Filter option - items without any ISRC tag" + }, "libraryFilterMetadataMissingLabel": "Missing label", "@libraryFilterMetadataMissingLabel": { "description": "Filter option - items missing record label" diff --git a/lib/screens/queue_tab.dart b/lib/screens/queue_tab.dart index 349b1b0a..22ec76c6 100644 --- a/lib/screens/queue_tab.dart +++ b/lib/screens/queue_tab.dart @@ -954,6 +954,15 @@ class _QueueTabState extends ConsumerState { () => tempMetadata = 'incorrect-isrc-format', ), ), + FilterChip( + label: Text( + context.l10n.libraryFilterMetadataMissingIsrc, + ), + selected: tempMetadata == 'missing-isrc', + onSelected: (_) => setSheetState( + () => tempMetadata = 'missing-isrc', + ), + ), FilterChip( label: Text( context diff --git a/lib/services/library_database_queue_sql.dart b/lib/services/library_database_queue_sql.dart index 961c1e39..0a5f3871 100644 --- a/lib/services/library_database_queue_sql.dart +++ b/lib/services/library_database_queue_sql.dart @@ -462,6 +462,9 @@ extension _LibraryDbQueueSql on LibraryDatabase { case 'incorrect-isrc-format': where.add('($hasIncorrectIsrc)'); break; + case 'missing-isrc': + where.add('TRIM(COALESCE($isrcExpr, \'\')) = \'\''); + break; case 'missing-label': where.add('NOT ($hasLabel)'); break;