From a0968caa5c8839be96ea9625e3b8422fa49647b9 Mon Sep 17 00:00:00 2001 From: Imran Remtulla Date: Fri, 7 Oct 2022 12:22:16 -0400 Subject: [PATCH] Tweaked update checking, fixed an issue on App page --- lib/pages/app.dart | 30 +++++++++++++++++------------- lib/providers/apps_provider.dart | 18 +++++------------- 2 files changed, 22 insertions(+), 26 deletions(-) diff --git a/lib/pages/app.dart b/lib/pages/app.dart index f3119b7..7dfc5bd 100644 --- a/lib/pages/app.dart +++ b/lib/pages/app.dart @@ -19,20 +19,27 @@ class AppPage extends StatefulWidget { } class _AppPageState extends State { + AppInMemory? prevApp; + @override Widget build(BuildContext context) { var appsProvider = context.watch(); var settingsProvider = context.watch(); - var sourceProvider = SourceProvider(); - AppInMemory? app = appsProvider.apps[widget.appId]; - var source = app != null ? sourceProvider.getSource(app.app.url) : null; - if (!appsProvider.areDownloadsRunning() && app != null) { - appsProvider.getUpdate(app.app.id).catchError((e) { + getUpdate(String id) { + appsProvider.getUpdate(id).catchError((e) { ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text(e.toString())), ); }); } + + var sourceProvider = SourceProvider(); + AppInMemory? app = appsProvider.apps[widget.appId]; + var source = app != null ? sourceProvider.getSource(app.app.url) : null; + if (!appsProvider.areDownloadsRunning() && prevApp == null && app != null) { + prevApp = app; + getUpdate(app.app.id); + } return Scaffold( appBar: settingsProvider.showAppWebpage ? AppBar() : null, backgroundColor: Theme.of(context).colorScheme.surface, @@ -105,13 +112,7 @@ class _AppPageState extends State { ), onRefresh: () async { if (app != null) { - try { - await appsProvider.getUpdate(app.app.id); - } catch (e) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(e.toString())), - ); - } + getUpdate(app.app.id); } }), bottomSheet: Padding( @@ -244,7 +245,10 @@ class _AppPageState extends State { var name = values.removeLast(); changedApp.name = name; changedApp.additionalData = values; - appsProvider.saveApps([changedApp]); + appsProvider.saveApps( + [changedApp]).then((value) { + getUpdate(changedApp.id); + }); } }); }, diff --git a/lib/providers/apps_provider.dart b/lib/providers/apps_provider.dart index 5dfbb9b..dd0b431 100644 --- a/lib/providers/apps_provider.dart +++ b/lib/providers/apps_provider.dart @@ -307,20 +307,12 @@ class AppsProvider with ChangeNotifier { sourceProvider.getSource(currentApp.url), currentApp.url, currentApp.additionalData); - if (newApp.latestVersion != currentApp.latestVersion) { - newApp.installedVersion = currentApp.installedVersion; - if (currentApp.preferredApkIndex < newApp.apkUrls.length) { - newApp.preferredApkIndex = currentApp.preferredApkIndex; - } - await saveApps([newApp]); - return newApp; - } else if ((newApp.lastUpdateCheck?.microsecondsSinceEpoch ?? 0) - - (currentApp.lastUpdateCheck?.microsecondsSinceEpoch ?? 0) > - 5000000) { - currentApp.lastUpdateCheck = newApp.lastUpdateCheck; - await saveApps([currentApp]); + newApp.installedVersion = currentApp.installedVersion; + if (currentApp.preferredApkIndex < newApp.apkUrls.length) { + newApp.preferredApkIndex = currentApp.preferredApkIndex; } - return null; + await saveApps([newApp]); + return newApp.latestVersion != currentApp.latestVersion ? newApp : null; } Future> checkUpdates({DateTime? ignoreAfter}) async {