From 5660aefdc589c52ee184e943876181d91e4de952 Mon Sep 17 00:00:00 2001 From: Juan Gilsanz Polo Date: Mon, 1 May 2023 19:00:06 +0200 Subject: [PATCH] Adapted app updater --- lib/base.dart | 22 ++++++++++++++++------ lib/screens/settings/settings.dart | 2 +- lib/widgets/update_modal.dart | 26 ++++++++++++++++++++++---- 3 files changed, 39 insertions(+), 11 deletions(-) diff --git a/lib/base.dart b/lib/base.dart index c4c3c68..1c5ad7d 100644 --- a/lib/base.dart +++ b/lib/base.dart @@ -55,15 +55,25 @@ class _BaseState extends State with WidgetsBindingObserver { } Future checkInstallationSource() async { - if (Platform.isAndroid) { - Source installationSource = await StoreChecker.getSource; - if (installationSource != Source.IS_INSTALLED_FROM_PLAY_STORE) { - final result = await checkAppUpdatesGitHub(); - if (result['result'] == 'success') { - if (updateExists(widget.appConfigProvider.getAppInfo!.version, result['body'].tagName)) { + final result = await checkAppUpdatesGitHub(); + if (result['result'] == 'success') { + final update = updateExists(widget.appConfigProvider.getAppInfo!.version, result['body'].tagName); + if (update == true) { + if (Platform.isAndroid) { + Source installationSource = await StoreChecker.getSource; + if (installationSource == Source.IS_INSTALLED_FROM_PLAY_STORE) { + return null; + } + else { return result['body']; } } + else if (Platform.isIOS) { + return null; + } + else { + return result['body']; + } } } return null; diff --git a/lib/screens/settings/settings.dart b/lib/screens/settings/settings.dart index 9d983d2..74f8a40 100644 --- a/lib/screens/settings/settings.dart +++ b/lib/screens/settings/settings.dart @@ -231,7 +231,7 @@ class SettingsWidget extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - IconButton( + if (Platform.isAndroid) IconButton( onPressed: () => openUrl(Urls.playStore), icon: SvgPicture.asset( 'assets/resources/google-play.svg', diff --git a/lib/widgets/update_modal.dart b/lib/widgets/update_modal.dart index b3acc8d..a6f456a 100644 --- a/lib/widgets/update_modal.dart +++ b/lib/widgets/update_modal.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; @@ -22,14 +24,30 @@ class UpdateModal extends StatefulWidget { class _UpdateModalState extends State { bool doNotRemember = false; - String getDownloadLink() { - return widget.gitHubRelease.assets.firstWhere((item) => item.browserDownloadUrl.contains('apk')).browserDownloadUrl; + String? getDownloadLink() { + if (Platform.isAndroid) { + return widget.gitHubRelease.assets.firstWhere((item) => item.browserDownloadUrl.contains('apk')).browserDownloadUrl; + } + else if (Platform.isMacOS) { + return widget.gitHubRelease.assets.firstWhere((item) => item.browserDownloadUrl.contains('macOS')).browserDownloadUrl; // macOS package is a zip + } + else if (Platform.isWindows) { + return widget.gitHubRelease.assets.firstWhere((item) => item.browserDownloadUrl.contains('exe')).browserDownloadUrl; + } + else if (Platform.isLinux) { + return widget.gitHubRelease.assets.firstWhere((item) => item.browserDownloadUrl.contains('deb')).browserDownloadUrl; + } + else { + return null; + } } @override Widget build(BuildContext context) { final appConfigProvider = Provider.of(context); + final downloadLink = getDownloadLink(); + return AlertDialog( scrollable: true, title: Column( @@ -104,10 +122,10 @@ class _UpdateModalState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - TextButton( + if (downloadLink != null) TextButton( onPressed: () { Navigator.pop(context); - widget.onDownload(getDownloadLink(), widget.gitHubRelease.tagName); + widget.onDownload(downloadLink, widget.gitHubRelease.tagName); }, child: Text(AppLocalizations.of(context)!.download) ),