From 0e0a39a40f802d9bc08807e93d210dd2a7d36afc Mon Sep 17 00:00:00 2001 From: Imran Remtulla Date: Sat, 12 Nov 2022 10:05:46 -0500 Subject: [PATCH] Allow App downgrades if com.berdik.letmedowngrade installed --- lib/providers/apps_provider.dart | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/providers/apps_provider.dart b/lib/providers/apps_provider.dart index 76db693..4cc62dd 100644 --- a/lib/providers/apps_provider.dart +++ b/lib/providers/apps_provider.dart @@ -182,6 +182,15 @@ class AppsProvider with ChangeNotifier { } } + Future canDowngradeApps() async { + try { + await InstalledApps.getAppInfo('com.berdik.letmedowngrade'); + return true; + } catch (e) { + return false; + } + } + // Unfortunately this 'await' does not actually wait for the APK to finish installing // So we only know that the install prompt was shown, but the user could still cancel w/o us knowing // If appropriate criteria are met, the update (never a fresh install) happens silently in the background @@ -195,7 +204,8 @@ class AppsProvider with ChangeNotifier { // OK } if (appInfo != null && - int.parse(newInfo.buildNumber) < appInfo.versionCode!) { + int.parse(newInfo.buildNumber) < appInfo.versionCode! && + !(await canDowngradeApps())) { throw DowngradeError(); } if (appInfo == null ||