mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-04-22 06:49:11 +00:00
Adapted version checker to new tag name
This commit is contained in:
parent
15147bf16d
commit
6fcd03f899
6 changed files with 62 additions and 65 deletions
|
@ -39,9 +39,10 @@ class _BaseState extends State<Base> with WidgetsBindingObserver {
|
|||
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
||||
final appConfigProvider = Provider.of<AppConfigProvider>(context, listen: false);
|
||||
final result = await checkAppUpdates(
|
||||
appVersion: appConfigProvider.getAppInfo!.version,
|
||||
currentBuildNumber: appConfigProvider.getAppInfo!.buildNumber,
|
||||
installationSource: appConfigProvider.installationSource,
|
||||
setUpdateAvailable: appConfigProvider.setAppUpdatesAvailable
|
||||
setUpdateAvailable: appConfigProvider.setAppUpdatesAvailable,
|
||||
isBeta: appConfigProvider.getAppInfo!.version.contains('beta'),
|
||||
);
|
||||
|
||||
if (result != null && appConfigProvider.doNotRememberVersion != result.tagName) {
|
||||
|
|
|
@ -3,11 +3,12 @@ import 'dart:io';
|
|||
import 'package:adguard_home_manager/models/github_release.dart';
|
||||
|
||||
String? getAppUpdateDownloadLink(GitHubRelease gitHubRelease) {
|
||||
try {
|
||||
if (Platform.isAndroid) {
|
||||
return gitHubRelease.assets.firstWhere((item) => item.browserDownloadUrl.contains('apk')).browserDownloadUrl;
|
||||
}
|
||||
else if (Platform.isMacOS) {
|
||||
return gitHubRelease.assets.firstWhere((item) => item.browserDownloadUrl.contains('macOS')).browserDownloadUrl; // macOS package is a zip
|
||||
return gitHubRelease.assets.firstWhere((item) => item.browserDownloadUrl.contains('macOS')).browserDownloadUrl;
|
||||
}
|
||||
else if (Platform.isWindows) {
|
||||
return gitHubRelease.assets.firstWhere((item) => item.browserDownloadUrl.contains('exe')).browserDownloadUrl;
|
||||
|
@ -18,4 +19,7 @@ String? getAppUpdateDownloadLink(GitHubRelease gitHubRelease) {
|
|||
else {
|
||||
return null;
|
||||
}
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -7,17 +7,22 @@ import 'package:adguard_home_manager/models/github_release.dart';
|
|||
import 'package:adguard_home_manager/services/http_requests.dart';
|
||||
|
||||
Future<GitHubRelease?> checkAppUpdates({
|
||||
required String appVersion,
|
||||
required String currentBuildNumber,
|
||||
required void Function(GitHubRelease?) setUpdateAvailable,
|
||||
required Source installationSource
|
||||
required Source installationSource,
|
||||
required bool isBeta
|
||||
}) async {
|
||||
final result = await checkAppUpdatesGitHub();
|
||||
|
||||
if (result['result'] == 'success') {
|
||||
final update = gitHubUpdateExists(appVersion, result['body']);
|
||||
final update = gitHubUpdateExists(
|
||||
currentBuildNumber: currentBuildNumber,
|
||||
gitHubReleases: result['body'],
|
||||
isBeta: isBeta
|
||||
);
|
||||
|
||||
if (update == true) {
|
||||
final release = appVersion.contains('beta')
|
||||
final release = isBeta == true
|
||||
? result['body'].firstWhere((release) => release.prerelease == true)
|
||||
: result['body'].firstWhere((release) => release.prerelease == false);
|
||||
|
||||
|
|
|
@ -149,52 +149,36 @@ bool serverVersionIsAhead({
|
|||
}
|
||||
}
|
||||
|
||||
bool gitHubUpdateExists(String appVersion, List<GitHubRelease> gitHubReleases) {
|
||||
if (appVersion.contains('beta')) {
|
||||
final gitHubVersion = gitHubReleases.firstWhere((release) => release.prerelease == true).tagName;
|
||||
bool gitHubUpdateExists({
|
||||
required String currentBuildNumber,
|
||||
required List<GitHubRelease> gitHubReleases,
|
||||
required bool isBeta
|
||||
}) {
|
||||
final release = isBeta == true
|
||||
? gitHubReleases.firstWhere((release) => release.prerelease == true)
|
||||
: gitHubReleases.firstWhere((release) => release.prerelease == false);
|
||||
|
||||
final appBetaSplit = appVersion.split('-');
|
||||
final gitHubBetaSplit = gitHubVersion.split('-');
|
||||
final versionNumberRegex = RegExp(r'\(\d+\)');
|
||||
final releaseNumberExtracted = versionNumberRegex.allMatches(release.tagName).first.group(0);
|
||||
|
||||
final List<int> appVersionSplit = List<int>.from(appBetaSplit[0].split('.').map((e) => int.parse(e)));
|
||||
final int appBetaNumber = int.parse(appBetaSplit[1].split('.')[1]);
|
||||
|
||||
final List<int> gitHubVersionSplit = List<int>.from(gitHubBetaSplit[0].split('.').map((e) => int.parse(e)));
|
||||
final int gitHubBetaNumber = int.parse(gitHubBetaSplit[1].split('.')[1]);
|
||||
|
||||
if (gitHubVersionSplit[0] > appVersionSplit[0]) {
|
||||
return true;
|
||||
}
|
||||
else if (gitHubVersionSplit[0] == appVersionSplit[0] && gitHubVersionSplit[1] > appVersionSplit[1]) {
|
||||
return true;
|
||||
}
|
||||
else if (gitHubVersionSplit[0] == appVersionSplit[0] && gitHubVersionSplit[1] == appVersionSplit[1] && gitHubVersionSplit[2] > appVersionSplit[2]) {
|
||||
return true;
|
||||
}
|
||||
else if (gitHubVersionSplit[0] == appVersionSplit[0] && gitHubVersionSplit[1] == appVersionSplit[1] && gitHubVersionSplit[2] == appVersionSplit[2] && gitHubBetaNumber > appBetaNumber) {
|
||||
if (releaseNumberExtracted != null) {
|
||||
final releaseNumber = releaseNumberExtracted.replaceAll(RegExp(r'\(|\)'), '');
|
||||
try {
|
||||
final newReleaseParsed = int.parse(releaseNumber);
|
||||
final currentReleaseParsed = int.parse(currentBuildNumber);
|
||||
if (newReleaseParsed > currentReleaseParsed) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
final gitHubVersion = gitHubReleases.firstWhere((release) => release.prerelease == false).tagName;
|
||||
|
||||
final List<int> appVersionSplit = List<int>.from(appVersion.split('.').map((e) => int.parse(e)));
|
||||
final List<int> gitHubVersionSplit = List<int>.from(gitHubVersion.split('.').map((e) => int.parse(e)));
|
||||
|
||||
if (gitHubVersionSplit[0] > appVersionSplit[0]) {
|
||||
return true;
|
||||
}
|
||||
else if (gitHubVersionSplit[0] == appVersionSplit[0] && gitHubVersionSplit[1] > appVersionSplit[1]) {
|
||||
return true;
|
||||
}
|
||||
else if (gitHubVersionSplit[0] == appVersionSplit[0] && gitHubVersionSplit[1] == appVersionSplit[1] && gitHubVersionSplit[2] > appVersionSplit[2]) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
} catch (e) {
|
||||
Sentry.captureMessage("Invalid release number. Current release: $currentBuildNumber. New release: $releaseNumber");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
Sentry.captureMessage("Invalid release number. Tagname: ${release.tagName}");
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -57,9 +57,10 @@ class _GeneralSettingsState extends State<GeneralSettings> {
|
|||
setState(() => appUpdatesStatus = AppUpdatesStatus.checking);
|
||||
|
||||
final res = await checkAppUpdates(
|
||||
appVersion: appConfigProvider.getAppInfo!.version,
|
||||
currentBuildNumber: appConfigProvider.getAppInfo!.buildNumber,
|
||||
setUpdateAvailable: appConfigProvider.setAppUpdatesAvailable,
|
||||
installationSource: appConfigProvider.installationSource
|
||||
installationSource: appConfigProvider.installationSource,
|
||||
isBeta: appConfigProvider.getAppInfo!.version.contains('beta'),
|
||||
);
|
||||
|
||||
if (res != null) {
|
||||
|
|
|
@ -60,7 +60,7 @@ class _UpdateModalState extends State<UpdateModal> {
|
|||
),
|
||||
const SizedBox(height: 10),
|
||||
Text(
|
||||
"${AppLocalizations.of(context)!.newVersion}: ${widget.gitHubRelease.tagName}",
|
||||
"${AppLocalizations.of(context)!.newVersion}: ${widget.gitHubRelease.name.replaceAll('v', '')}",
|
||||
style: TextStyle(
|
||||
color: Theme.of(context).colorScheme.onSurfaceVariant
|
||||
),
|
||||
|
@ -101,7 +101,9 @@ class _UpdateModalState extends State<UpdateModal> {
|
|||
),
|
||||
actions: [
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
mainAxisAlignment: downloadLink != null
|
||||
? MainAxisAlignment.spaceBetween
|
||||
: MainAxisAlignment.end,
|
||||
children: [
|
||||
if (downloadLink != null) TextButton(
|
||||
onPressed: () {
|
||||
|
|
Loading…
Add table
Reference in a new issue