From c2a7e4a0d2edc2c17ccd17c03d1c1d8dc7aaf6e3 Mon Sep 17 00:00:00 2001 From: Imran Remtulla Date: Sun, 28 Aug 2022 18:17:03 -0400 Subject: [PATCH] Bugfix - update checking on app load was broken --- lib/main.dart | 15 +++++++-------- lib/providers/apps_provider.dart | 16 ++++++++++++++-- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index bb6349a..6d6b6f6 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -17,10 +17,10 @@ const String currentReleaseTag = void bgTaskCallback() { // Background update checking process Workmanager().executeTask((task, taskName) async { - var appsProvider = AppsProvider(bg: true); var notificationsProvider = NotificationsProvider(); await notificationsProvider.notify(checkingUpdatesNotification); try { + var appsProvider = AppsProvider(); await notificationsProvider .cancel(ErrorCheckingUpdatesNotification('').id); await appsProvider.loadApps(); @@ -52,7 +52,11 @@ void main() async { ); runApp(MultiProvider( providers: [ - ChangeNotifierProvider(create: (context) => AppsProvider()), + ChangeNotifierProvider( + create: (context) => AppsProvider( + shouldLoadApps: true, + shouldCheckUpdatesAfterLoad: true, + shouldDeleteAPKs: true)), ChangeNotifierProvider(create: (context) => SettingsProvider()), Provider(create: (context) => NotificationsProvider()) ], @@ -71,12 +75,7 @@ class MyApp extends StatelessWidget { AppsProvider appsProvider = context.read(); if (settingsProvider.prefs == null) { - settingsProvider.initializeSettings().then((value) { - // Delete past downloads and check for updates every time the app is launched - // Only runs once as the settings are only initialized once (so not on every build) - appsProvider.deleteSavedAPKs(); - appsProvider.checkUpdates(); - }); + settingsProvider.initializeSettings(); } else { // Register the background update task according to the user's setting Workmanager().registerPeriodicTask('bg-update-check', 'bg-update-check', diff --git a/lib/providers/apps_provider.dart b/lib/providers/apps_provider.dart index a6c466e..6a0efc9 100644 --- a/lib/providers/apps_provider.dart +++ b/lib/providers/apps_provider.dart @@ -39,14 +39,26 @@ class AppsProvider with ChangeNotifier { late Stream foregroundStream; late StreamSubscription foregroundSubscription; - AppsProvider({bool bg = false}) { + AppsProvider( + {bool shouldLoadApps = false, + bool shouldCheckUpdatesAfterLoad = false, + bool shouldDeleteAPKs = false}) { // Subscribe to changes in the app foreground status foregroundStream = FGBGEvents.stream.asBroadcastStream(); foregroundSubscription = foregroundStream.listen((event) async { isForeground = event == FGBGType.foreground; if (isForeground) await loadApps(); }); - loadApps(); + if (shouldDeleteAPKs) { + deleteSavedAPKs(); + } + if (shouldLoadApps) { + loadApps().then((_) { + if (shouldCheckUpdatesAfterLoad) { + checkUpdates(); + } + }); + } } Future downloadApp(String apkUrl, String appId) async {