diff --git a/app/lib/dialogs/update.dart b/app/lib/dialogs/update.dart index 97f4b18..9e21cb0 100644 --- a/app/lib/dialogs/update.dart +++ b/app/lib/dialogs/update.dart @@ -23,9 +23,9 @@ class _UpdateDialogState extends State { } Future _checkForUpdates() async { - bool isLatestVersion = await UpdateHelper.isLatestVersion(); + bool isUpdateAvailable = await UpdateHelper.isUpdateAvailable(); setState(() { - _isUpdateAvailable = !isLatestVersion; + _isUpdateAvailable = isUpdateAvailable; _isLoading = false; }); } diff --git a/app/lib/helpers/update.dart b/app/lib/helpers/update.dart index 37199e0..51401b6 100644 --- a/app/lib/helpers/update.dart +++ b/app/lib/helpers/update.dart @@ -16,7 +16,20 @@ import 'package:shared_preferences/shared_preferences.dart'; class UpdateHelper { static late GitHubRelease _latestRelease; - static Future isLatestVersion() async { + static bool _isVersionSuperior(String version) { + final currentVersion = Env.version.split('.').map(int.parse).toList(); + final newVersion = version.split('.').map(int.parse).toList(); + + for (var i = 0; i < currentVersion.length; i++) { + if (currentVersion[i] < newVersion[i]) { + return true; + } + } + + return false; + } + + static Future isUpdateAvailable() async { if (!Platform.isWindows) { throw UnimplementedError('Platform not supported'); } @@ -27,21 +40,21 @@ class UpdateHelper { if (prefs.getString('skipUpdate') == _latestRelease.tag_name) { logger.i('Skipping update: ${_latestRelease.tag_name}'); - return true; - } else if (_latestRelease.tag_name == Env.version) { + return false; + } else if (!_isVersionSuperior(_latestRelease.tag_name)) { logger.i('No new version available'); - return true; + return false; } logger.i('New version available: ${_latestRelease.tag_name}'); for (final asset in _latestRelease.assets) { if (Platform.isWindows && asset.name.contains('windows_x64')) { - return false; + return true; } } - return true; + return false; } static Future downloadAndInstallLatestVersion() async { diff --git a/app/lib/main.dart b/app/lib/main.dart index 0e3aa61..6c824df 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -103,9 +103,9 @@ class _MyAppState extends State { } void _checkForUpdates() { - UpdateHelper.isLatestVersion().then( - (isLatestVersion) { - if (!isLatestVersion) { + UpdateHelper.isUpdateAvailable().then( + (updateAvailable) { + if (updateAvailable) { SnackBarHelpers.showSnackBar( AppLocalizations.of(scaffoldMessengerKey.currentState!.context) .snackBarUpdateTitle,