From 04b3c8ad7d1f0414cd25d5984d5d91be4575dcea Mon Sep 17 00:00:00 2001 From: Imran Remtulla Date: Sun, 30 Apr 2023 00:15:53 -0400 Subject: [PATCH] Bugfix for prev. commit --- lib/pages/apps.dart | 41 ++++++++++++---------------- lib/providers/apps_provider.dart | 8 +++++- lib/providers/settings_provider.dart | 7 +++-- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/lib/pages/apps.dart b/lib/pages/apps.dart index 11c69da..c240676 100644 --- a/lib/pages/apps.dart +++ b/lib/pages/apps.dart @@ -615,7 +615,7 @@ class AppsPageState extends State { items: formItems.map((e) => [e]).toList(), initValid: true, ); - }).then((values) { + }).then((values) async { if (values != null) { if (values.isEmpty) { values = getDefaultValuesFromFormItems([formItems]); @@ -623,29 +623,22 @@ class AppsPageState extends State { bool shouldInstallUpdates = values['updates'] == true; bool shouldInstallNew = values['installs'] == true; bool shouldMarkTrackOnlies = values['trackonlies'] == true; - (() async { - List toInstall = []; - if (shouldInstallUpdates) { - toInstall.addAll(existingUpdateIdsAllOrSelected); - } - if (shouldInstallNew) { - toInstall.addAll(newInstallIdsAllOrSelected); - } - if (shouldMarkTrackOnlies) { - toInstall.addAll(trackOnlyUpdateIdsAllOrSelected); - } - if (toInstall.length > 1) { - // Permission is requested automatically, but if there are more than 1 installs, - // We want to explicitly request it and wait for the result to avoid multiple requests - await settingsProvider.getInstallPermission( - enforce: false); - } - appsProvider - .downloadAndInstallLatestApps( - toInstall, globalNavigatorKey.currentContext) - .catchError((e) { - showError(e, context); - }); + List toInstall = []; + if (shouldInstallUpdates) { + toInstall.addAll(existingUpdateIdsAllOrSelected); + } + if (shouldInstallNew) { + toInstall.addAll(newInstallIdsAllOrSelected); + } + if (shouldMarkTrackOnlies) { + toInstall.addAll(trackOnlyUpdateIdsAllOrSelected); + } + appsProvider + .downloadAndInstallLatestApps( + toInstall, globalNavigatorKey.currentContext, + settingsProvider: settingsProvider) + .catchError((e) { + showError(e, context); }); } }); diff --git a/lib/providers/apps_provider.dart b/lib/providers/apps_provider.dart index 46d57c4..6af3f10 100644 --- a/lib/providers/apps_provider.dart +++ b/lib/providers/apps_provider.dart @@ -351,7 +351,8 @@ class AppsProvider with ChangeNotifier { // If user input is needed and the App is in the background, a notification is sent to get the user's attention // Returns an array of Ids for Apps that were successfully downloaded, regardless of installation result Future> downloadAndInstallLatestApps( - List appIds, BuildContext? context) async { + List appIds, BuildContext? context, + {SettingsProvider? settingsProvider}) async { List appsToInstall = []; List trackOnlyAppsToUpdate = []; // For all specified Apps, filter out those for which: @@ -440,6 +441,11 @@ class AppsProvider with ChangeNotifier { silentUpdates = moveObtainiumToStart(silentUpdates); regularInstalls = moveObtainiumToStart(regularInstalls); + if (!(await settingsProvider?.getInstallPermission(enforce: false) ?? + true)) { + throw ObtainiumError(tr('cancelled')); + } + // // Install silent updates (uncomment when it works - TODO) // for (var u in silentUpdates) { // await installApk(u, silent: true); // Would need to add silent option diff --git a/lib/providers/settings_provider.dart b/lib/providers/settings_provider.dart index 3be2151..2bc3005 100644 --- a/lib/providers/settings_provider.dart +++ b/lib/providers/settings_provider.dart @@ -120,19 +120,20 @@ class SettingsProvider with ChangeNotifier { return result; } - Future getInstallPermission({bool enforce = false}) async { + Future getInstallPermission({bool enforce = false}) async { while (!(await Permission.requestInstallPackages.isGranted)) { // Explicit request as InstallPlugin request sometimes bugged Fluttertoast.showToast( msg: tr('pleaseAllowInstallPerm'), toastLength: Toast.LENGTH_LONG); if ((await Permission.requestInstallPackages.request()) == PermissionStatus.granted) { - break; + return true; } if (!enforce) { - break; + return false; } } + return true; } bool get showAppWebpage {