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