mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-04-19 05:19:11 +00:00
Fixed GitHub update notifier
This commit is contained in:
parent
211a0b0298
commit
80b3c004d6
4 changed files with 92 additions and 18 deletions
|
@ -3,6 +3,7 @@ class Urls {
|
|||
static const String gitHub = "https://github.com/JGeek00/adguard-home-manager";
|
||||
static const String customRuleDocs = "https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters";
|
||||
static const String getReleasesGitHub = "https://api.github.com/repos/JGeek00/adguard-home-manager/releases";
|
||||
static const String getLatestReleaseGitHub = "https://api.github.com/repos/JGeek00/adguard-home-manager/releases/latest";
|
||||
static const String adGuardHomeReleasesTags = "https://api.github.com/repos/AdGuardTeam/AdGuardHome/releases/tags";
|
||||
static const String googleSearchUrl = "https://www.google.com/search";
|
||||
static const String connectionInstructions = "https://github.com/JGeek00/adguard-home-manager/wiki/Create-a-connection";
|
||||
|
|
|
@ -12,21 +12,27 @@ Future<GitHubRelease?> checkAppUpdates({
|
|||
required Source installationSource,
|
||||
required bool isBeta
|
||||
}) async {
|
||||
final result = await checkAppUpdatesGitHub();
|
||||
var result = isBeta
|
||||
? await getReleasesGitHub()
|
||||
: await getLatestReleaseGitHub();
|
||||
|
||||
if (result['result'] == 'success') {
|
||||
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,
|
||||
gitHubReleases: result['body'],
|
||||
gitHubRelease: gitHubRelease,
|
||||
isBeta: isBeta
|
||||
);
|
||||
|
||||
if (update == true) {
|
||||
final release = isBeta == true
|
||||
? result['body'].firstWhere((release) => release.prerelease == true)
|
||||
: result['body'].firstWhere((release) => release.prerelease == false);
|
||||
|
||||
setUpdateAvailable(release);
|
||||
setUpdateAvailable(gitHubRelease);
|
||||
|
||||
if (Platform.isAndroid) {
|
||||
if (
|
||||
|
@ -34,7 +40,7 @@ Future<GitHubRelease?> checkAppUpdates({
|
|||
installationSource == Source.IS_INSTALLED_FROM_PLAY_PACKAGE_INSTALLER ||
|
||||
installationSource == Source.UNKNOWN
|
||||
) {
|
||||
return release;
|
||||
return gitHubRelease;
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
|
@ -44,7 +50,7 @@ Future<GitHubRelease?> checkAppUpdates({
|
|||
return null;
|
||||
}
|
||||
else {
|
||||
return release;
|
||||
return gitHubRelease;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -151,15 +151,11 @@ bool serverVersionIsAhead({
|
|||
|
||||
bool gitHubUpdateExists({
|
||||
required String currentBuildNumber,
|
||||
required List<GitHubRelease> gitHubReleases,
|
||||
required GitHubRelease gitHubRelease,
|
||||
required bool isBeta
|
||||
}) {
|
||||
final release = isBeta == true
|
||||
? gitHubReleases.firstWhere((release) => release.prerelease == true)
|
||||
: gitHubReleases.firstWhere((release) => release.prerelease == false);
|
||||
|
||||
final versionNumberRegex = RegExp(r'\(\d+\)');
|
||||
final releaseNumberExtractedMatches = versionNumberRegex.allMatches(release.tagName);
|
||||
final releaseNumberExtractedMatches = versionNumberRegex.allMatches(gitHubRelease.tagName);
|
||||
|
||||
if (releaseNumberExtractedMatches.isNotEmpty) {
|
||||
final releaseNumberExtracted = releaseNumberExtractedMatches.first.group(0);
|
||||
|
@ -181,12 +177,12 @@ bool gitHubUpdateExists({
|
|||
}
|
||||
}
|
||||
else {
|
||||
Sentry.captureMessage("Invalid release number. Tagname: ${release.tagName}");
|
||||
Sentry.captureMessage("Invalid release number. Tagname: ${gitHubRelease.tagName}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
Sentry.captureMessage("No matches. ${release.tagName}");
|
||||
Sentry.captureMessage("No matches. ${gitHubRelease.tagName}");
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -2322,7 +2322,7 @@ class ApiClient {
|
|||
}
|
||||
}
|
||||
|
||||
Future checkAppUpdatesGitHub() async {
|
||||
Future getReleasesGitHub() async {
|
||||
try {
|
||||
HttpClient httpClient = HttpClient();
|
||||
HttpClientRequest request = await httpClient.getUrl(Uri.parse(Urls.getReleasesGitHub));
|
||||
|
@ -2391,4 +2391,75 @@ Future checkAppUpdatesGitHub() async {
|
|||
)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Future getLatestReleaseGitHub() async {
|
||||
try {
|
||||
HttpClient httpClient = HttpClient();
|
||||
HttpClientRequest request = await httpClient.getUrl(Uri.parse(Urls.getLatestReleaseGitHub));
|
||||
HttpClientResponse response = await request.close();
|
||||
String reply = await response.transform(utf8.decoder).join();
|
||||
httpClient.close();
|
||||
if (response.statusCode == 200) {
|
||||
return {
|
||||
'result': 'success',
|
||||
'hasResponse': true,
|
||||
'error': false,
|
||||
'statusCode': response.statusCode,
|
||||
'body': GitHubRelease.fromJson(jsonDecode(reply))
|
||||
};
|
||||
}
|
||||
else {
|
||||
return {
|
||||
'result': 'error',
|
||||
'log': AppLog(
|
||||
type: 'update_encryption_settings',
|
||||
dateTime: DateTime.now(),
|
||||
message: 'error_code_not_expected',
|
||||
statusCode: response.statusCode.toString(),
|
||||
resBody: reply,
|
||||
)
|
||||
};
|
||||
}
|
||||
} on SocketException {
|
||||
return {
|
||||
'result': 'no_connection',
|
||||
'message': 'SocketException',
|
||||
'log': AppLog(
|
||||
type: 'check_latest_release_github',
|
||||
dateTime: DateTime.now(),
|
||||
message: 'SocketException'
|
||||
)
|
||||
};
|
||||
} on TimeoutException {
|
||||
return {
|
||||
'result': 'no_connection',
|
||||
'message': 'TimeoutException',
|
||||
'log': AppLog(
|
||||
type: 'check_latest_release_github',
|
||||
dateTime: DateTime.now(),
|
||||
message: 'TimeoutException'
|
||||
)
|
||||
};
|
||||
} on HandshakeException {
|
||||
return {
|
||||
'result': 'ssl_error',
|
||||
'message': 'HandshakeException',
|
||||
'log': AppLog(
|
||||
type: 'check_latest_release_github',
|
||||
dateTime: DateTime.now(),
|
||||
message: 'HandshakeException'
|
||||
)
|
||||
};
|
||||
} catch (e) {
|
||||
return {
|
||||
'result': 'error',
|
||||
'message': e.toString(),
|
||||
'log': AppLog(
|
||||
type: 'check_latest_release_github',
|
||||
dateTime: DateTime.now(),
|
||||
message: e.toString()
|
||||
)
|
||||
};
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue