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({
|
2023-05-28 03:08:25 +02:00
|
|
|
required String currentBuildNumber,
|
2023-05-25 21:14:26 +02:00
|
|
|
required void Function(GitHubRelease?) setUpdateAvailable,
|
2023-05-28 03:08:25 +02:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2023-05-28 03:08:25 +02:00
|
|
|
final update = gitHubUpdateExists(
|
|
|
|
currentBuildNumber: currentBuildNumber,
|
2023-10-27 14:39:07 +02:00
|
|
|
gitHubRelease: gitHubRelease,
|
2023-05-28 03:08:25 +02:00
|
|
|
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;
|
|
|
|
}
|