Tweaked update checking, fixed an issue on App page

This commit is contained in:
Imran Remtulla
2022-10-07 12:22:16 -04:00
parent e3e945d13b
commit a0968caa5c
2 changed files with 22 additions and 26 deletions

View File

@@ -19,20 +19,27 @@ class AppPage extends StatefulWidget {
} }
class _AppPageState extends State<AppPage> { class _AppPageState extends State<AppPage> {
AppInMemory? prevApp;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var appsProvider = context.watch<AppsProvider>(); var appsProvider = context.watch<AppsProvider>();
var settingsProvider = context.watch<SettingsProvider>(); var settingsProvider = context.watch<SettingsProvider>();
var sourceProvider = SourceProvider(); getUpdate(String id) {
AppInMemory? app = appsProvider.apps[widget.appId]; appsProvider.getUpdate(id).catchError((e) {
var source = app != null ? sourceProvider.getSource(app.app.url) : null;
if (!appsProvider.areDownloadsRunning() && app != null) {
appsProvider.getUpdate(app.app.id).catchError((e) {
ScaffoldMessenger.of(context).showSnackBar( ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(e.toString())), 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( return Scaffold(
appBar: settingsProvider.showAppWebpage ? AppBar() : null, appBar: settingsProvider.showAppWebpage ? AppBar() : null,
backgroundColor: Theme.of(context).colorScheme.surface, backgroundColor: Theme.of(context).colorScheme.surface,
@@ -105,13 +112,7 @@ class _AppPageState extends State<AppPage> {
), ),
onRefresh: () async { onRefresh: () async {
if (app != null) { if (app != null) {
try { getUpdate(app.app.id);
await appsProvider.getUpdate(app.app.id);
} catch (e) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(e.toString())),
);
}
} }
}), }),
bottomSheet: Padding( bottomSheet: Padding(
@@ -244,7 +245,10 @@ class _AppPageState extends State<AppPage> {
var name = values.removeLast(); var name = values.removeLast();
changedApp.name = name; changedApp.name = name;
changedApp.additionalData = values; changedApp.additionalData = values;
appsProvider.saveApps([changedApp]); appsProvider.saveApps(
[changedApp]).then((value) {
getUpdate(changedApp.id);
});
} }
}); });
}, },

View File

@@ -307,20 +307,12 @@ class AppsProvider with ChangeNotifier {
sourceProvider.getSource(currentApp.url), sourceProvider.getSource(currentApp.url),
currentApp.url, currentApp.url,
currentApp.additionalData); currentApp.additionalData);
if (newApp.latestVersion != currentApp.latestVersion) {
newApp.installedVersion = currentApp.installedVersion; newApp.installedVersion = currentApp.installedVersion;
if (currentApp.preferredApkIndex < newApp.apkUrls.length) { if (currentApp.preferredApkIndex < newApp.apkUrls.length) {
newApp.preferredApkIndex = currentApp.preferredApkIndex; newApp.preferredApkIndex = currentApp.preferredApkIndex;
} }
await saveApps([newApp]); await saveApps([newApp]);
return newApp; return newApp.latestVersion != currentApp.latestVersion ? newApp : null;
} else if ((newApp.lastUpdateCheck?.microsecondsSinceEpoch ?? 0) -
(currentApp.lastUpdateCheck?.microsecondsSinceEpoch ?? 0) >
5000000) {
currentApp.lastUpdateCheck = newApp.lastUpdateCheck;
await saveApps([currentApp]);
}
return null;
} }
Future<List<App>> checkUpdates({DateTime? ignoreAfter}) async { Future<List<App>> checkUpdates({DateTime? ignoreAfter}) async {