mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-07-30 12:30:16 +02:00
Bugfix #405 + general categories bugfixes
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.18';
|
||||
const String currentVersion = '0.11.19';
|
||||
const String currentReleaseTag =
|
||||
'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES
|
||||
|
||||
|
@@ -448,7 +448,8 @@ class AppsPageState extends State<AppsPage> {
|
||||
.app
|
||||
.categories
|
||||
.map((e) =>
|
||||
Color(settingsProvider.categories[e]!).withAlpha(255))
|
||||
Color(settingsProvider.categories[e] ?? transparent)
|
||||
.withAlpha(255))
|
||||
.toList(),
|
||||
Color(transparent)
|
||||
])),
|
||||
|
@@ -133,7 +133,7 @@ class _ImportExportPageState extends State<ImportExportPage> {
|
||||
}
|
||||
}
|
||||
});
|
||||
settingsProvider.categories = cats;
|
||||
appsProvider.addMissingCategories(settingsProvider);
|
||||
showError(tr('importedX', args: [plural('apps', value)]), context);
|
||||
});
|
||||
} else {
|
||||
|
@@ -6,6 +6,7 @@ import 'package:obtainium/components/custom_app_bar.dart';
|
||||
import 'package:obtainium/components/generated_form.dart';
|
||||
import 'package:obtainium/custom_errors.dart';
|
||||
import 'package:obtainium/main.dart';
|
||||
import 'package:obtainium/providers/apps_provider.dart';
|
||||
import 'package:obtainium/providers/logs_provider.dart';
|
||||
import 'package:obtainium/providers/settings_provider.dart';
|
||||
import 'package:obtainium/providers/source_provider.dart';
|
||||
@@ -444,6 +445,7 @@ class _CategoryEditorSelectorState extends State<CategoryEditorSelector> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var settingsProvider = context.watch<SettingsProvider>();
|
||||
var appsProvider = context.watch<AppsProvider>();
|
||||
storedValues = settingsProvider.categories.map((key, value) => MapEntry(
|
||||
key,
|
||||
MapEntry(value,
|
||||
@@ -467,8 +469,9 @@ class _CategoryEditorSelectorState extends State<CategoryEditorSelector> {
|
||||
if (!isBuilding) {
|
||||
storedValues =
|
||||
values['categories'] as Map<String, MapEntry<int, bool>>;
|
||||
settingsProvider.categories =
|
||||
storedValues.map((key, value) => MapEntry(key, value.key));
|
||||
settingsProvider.setCategories(
|
||||
storedValues.map((key, value) => MapEntry(key, value.key)),
|
||||
appsProvider: appsProvider);
|
||||
if (widget.onSelected != null) {
|
||||
widget.onSelected!(storedValues.keys
|
||||
.where((k) => storedValues[k]!.value)
|
||||
|
@@ -757,6 +757,18 @@ class AppsProvider with ChangeNotifier {
|
||||
await intent.launch();
|
||||
}
|
||||
|
||||
addMissingCategories(SettingsProvider settingsProvider) {
|
||||
var cats = settingsProvider.categories;
|
||||
apps.forEach((key, value) {
|
||||
for (var c in value.app.categories) {
|
||||
if (!cats.containsKey(c)) {
|
||||
cats[c] = generateRandomLightColor().value;
|
||||
}
|
||||
}
|
||||
});
|
||||
settingsProvider.setCategories(cats, appsProvider: this);
|
||||
}
|
||||
|
||||
Future<App?> checkUpdate(String appId) async {
|
||||
App? currentApp = apps[appId]!.app;
|
||||
SourceProvider sourceProvider = SourceProvider();
|
||||
|
@@ -7,6 +7,8 @@ import 'package:flutter/material.dart';
|
||||
import 'package:fluttertoast/fluttertoast.dart';
|
||||
import 'package:obtainium/app_sources/github.dart';
|
||||
import 'package:obtainium/main.dart';
|
||||
import 'package:obtainium/providers/apps_provider.dart';
|
||||
import 'package:obtainium/providers/source_provider.dart';
|
||||
import 'package:permission_handler/permission_handler.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
@@ -160,7 +162,22 @@ class SettingsProvider with ChangeNotifier {
|
||||
Map<String, int> get categories =>
|
||||
Map<String, int>.from(jsonDecode(prefs?.getString('categories') ?? '{}'));
|
||||
|
||||
set categories(Map<String, int> cats) {
|
||||
void setCategories(Map<String, int> cats, {AppsProvider? appsProvider}) {
|
||||
if (appsProvider != null) {
|
||||
List<App> changedApps = appsProvider.apps.values
|
||||
.map((a) {
|
||||
var n1 = a.app.categories.length;
|
||||
a.app.categories.removeWhere((c) => cats.keys.contains(c));
|
||||
return n1 > a.app.categories.length ? a.app : null;
|
||||
})
|
||||
.where((element) => element != null)
|
||||
.map((e) => e as App)
|
||||
.toList();
|
||||
if (changedApps.isNotEmpty) {
|
||||
appsProvider.saveApps(changedApps,
|
||||
attemptToCorrectInstallStatus: false);
|
||||
}
|
||||
}
|
||||
prefs?.setString('categories', jsonEncode(cats));
|
||||
notifyListeners();
|
||||
}
|
||||
|
@@ -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.18+140 # When changing this, update the tag in main() accordingly
|
||||
version: 0.11.19+141 # When changing this, update the tag in main() accordingly
|
||||
|
||||
environment:
|
||||
sdk: '>=2.18.2 <3.0.0'
|
||||
|
Reference in New Issue
Block a user