mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-08-01 21:30:16 +02:00
Added a source filter to the Apps page
This commit is contained in:
@@ -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
|
||||
|
||||
|
@@ -56,6 +56,7 @@ class AppsPageState extends State<AppsPage> {
|
||||
Widget build(BuildContext context) {
|
||||
var appsProvider = context.watch<AppsProvider>();
|
||||
var settingsProvider = context.watch<SettingsProvider>();
|
||||
var sourceProvider = SourceProvider();
|
||||
var listedApps = appsProvider.apps.values.toList();
|
||||
var currentFilterIsUpdatesOnly =
|
||||
filter.isIdenticalTo(updatesOnlyFilter, settingsProvider);
|
||||
@@ -110,6 +111,11 @@ class AppsPageState extends State<AppsPage> {
|
||||
.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<AppsPage> {
|
||||
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<String> categoryFilter;
|
||||
late String sourceFilter;
|
||||
|
||||
AppsFilter(
|
||||
{this.nameFilter = '',
|
||||
this.authorFilter = '',
|
||||
this.includeUptodate = true,
|
||||
this.includeNonInstalled = true,
|
||||
this.categoryFilter = const {}});
|
||||
this.categoryFilter = const {},
|
||||
this.sourceFilter = ''});
|
||||
|
||||
Map<String, dynamic> 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();
|
||||
}
|
||||
|
Reference in New Issue
Block a user