adguard-home-manager/lib/functions/check_app_updates.dart

61 lines
1.6 KiB
Dart
Raw Normal View History

2023-05-25 21:14:26 +02:00
import 'dart:io';
import 'package:store_checker/store_checker.dart';
import 'package:adguard_home_manager/functions/compare_versions.dart';
import 'package:adguard_home_manager/models/github_release.dart';
import 'package:adguard_home_manager/services/http_requests.dart';
Future<GitHubRelease?> checkAppUpdates({
required String currentBuildNumber,
2023-05-25 21:14:26 +02:00
required void Function(GitHubRelease?) setUpdateAvailable,
required Source installationSource,
required bool isBeta
2023-05-25 21:14:26 +02:00
}) async {
2023-10-27 14:39:07 +02:00
var result = isBeta
? await getReleasesGitHub()
: await getLatestReleaseGitHub();
2023-05-25 21:14:26 +02:00
if (result['result'] == 'success') {
2023-10-27 14:39:07 +02:00
late GitHubRelease gitHubRelease;
if (isBeta) {
gitHubRelease = (result['body'] as List<GitHubRelease>).firstWhere((r) => r.prerelease == true);
}
else {
gitHubRelease = result['body'] as GitHubRelease;
}
final update = gitHubUpdateExists(
currentBuildNumber: currentBuildNumber,
2023-10-27 14:39:07 +02:00
gitHubRelease: gitHubRelease,
isBeta: isBeta
);
2023-05-25 21:14:26 +02:00
if (update == true) {
2023-10-27 14:39:07 +02:00
setUpdateAvailable(gitHubRelease);
2023-05-25 21:14:26 +02:00
if (Platform.isAndroid) {
if (
installationSource == Source.IS_INSTALLED_FROM_LOCAL_SOURCE ||
installationSource == Source.IS_INSTALLED_FROM_PLAY_PACKAGE_INSTALLER ||
installationSource == Source.UNKNOWN
) {
2023-10-27 14:39:07 +02:00
return gitHubRelease;
2023-05-25 21:14:26 +02:00
}
else {
return null;
}
}
else if (Platform.isIOS) {
return null;
}
else {
2023-10-27 14:39:07 +02:00
return gitHubRelease;
2023-05-25 21:14:26 +02:00
}
}
else {
setUpdateAvailable(null);
}
}
return null;
}