From 682026ed0a2c4aadf566597c9f0e92c9ccded8f7 Mon Sep 17 00:00:00 2001 From: Imran Remtulla Date: Sun, 2 Apr 2023 18:14:43 -0400 Subject: [PATCH] Added a source filter to the Apps page --- lib/main.dart | 2 +- lib/pages/apps.dart | 30 +++++++++++++++++++++++++++--- pubspec.yaml | 2 +- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index e01a503..b9f36b6 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -21,7 +21,7 @@ import 'package:easy_localization/src/easy_localization_controller.dart'; // ignore: implementation_imports import 'package:easy_localization/src/localization.dart'; -const String currentVersion = '0.11.21'; +const String currentVersion = '0.11.22'; const String currentReleaseTag = 'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES diff --git a/lib/pages/apps.dart b/lib/pages/apps.dart index 84b77c9..733e8b2 100644 --- a/lib/pages/apps.dart +++ b/lib/pages/apps.dart @@ -56,6 +56,7 @@ class AppsPageState extends State { Widget build(BuildContext context) { var appsProvider = context.watch(); var settingsProvider = context.watch(); + var sourceProvider = SourceProvider(); var listedApps = appsProvider.apps.values.toList(); var currentFilterIsUpdatesOnly = filter.isIdenticalTo(updatesOnlyFilter, settingsProvider); @@ -110,6 +111,11 @@ class AppsPageState extends State { .isEmpty) { return false; } + if (filter.sourceFilter.isNotEmpty && + sourceProvider.getSource(app.app.url).runtimeType.toString() != + filter.sourceFilter) { + return false; + } return true; }).toList(); @@ -892,6 +898,19 @@ class AppsPageState extends State { GeneratedFormSwitch('nonInstalledApps', label: tr('nonInstalledApps'), defaultValue: vals['nonInstalledApps']) + ], + [ + GeneratedFormDropdown( + 'sourceFilter', + label: tr('appSource'), + defaultValue: filter.sourceFilter, + [ + MapEntry('', tr('none')), + ...sourceProvider.sources + .map((e) => + MapEntry(e.runtimeType.toString(), e.name)) + .toList() + ]) ] ], additionalWidgets: [ @@ -1015,20 +1034,23 @@ class AppsFilter { late bool includeUptodate; late bool includeNonInstalled; late Set categoryFilter; + late String sourceFilter; AppsFilter( {this.nameFilter = '', this.authorFilter = '', this.includeUptodate = true, this.includeNonInstalled = true, - this.categoryFilter = const {}}); + this.categoryFilter = const {}, + this.sourceFilter = ''}); Map toFormValuesMap() { return { 'appName': nameFilter, 'author': authorFilter, 'upToDateApps': includeUptodate, - 'nonInstalledApps': includeNonInstalled + 'nonInstalledApps': includeNonInstalled, + 'sourceFilter': sourceFilter }; } @@ -1037,6 +1059,7 @@ class AppsFilter { authorFilter = values['author']!; includeUptodate = values['upToDateApps']; includeNonInstalled = values['nonInstalledApps']; + sourceFilter = values['sourceFilter']; } bool isIdenticalTo(AppsFilter other, SettingsProvider settingsProvider) => @@ -1044,5 +1067,6 @@ class AppsFilter { nameFilter.trim() == other.nameFilter.trim() && includeUptodate == other.includeUptodate && includeNonInstalled == other.includeNonInstalled && - settingsProvider.setEqual(categoryFilter, other.categoryFilter); + settingsProvider.setEqual(categoryFilter, other.categoryFilter) && + sourceFilter.trim() == other.sourceFilter.trim(); } diff --git a/pubspec.yaml b/pubspec.yaml index 75372bd..13d0b38 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -17,7 +17,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 0.11.21+143 # When changing this, update the tag in main() accordingly +version: 0.11.22+144 # When changing this, update the tag in main() accordingly environment: sdk: '>=2.18.2 <3.0.0'