From 6196cd369a36167a022e0a6b67e6c06da18e709c Mon Sep 17 00:00:00 2001 From: Juan Gilsanz Polo Date: Mon, 8 May 2023 21:41:43 +0200 Subject: [PATCH] Fixed crash version check --- lib/functions/compare_versions.dart | 148 +++++++++++++++------------- 1 file changed, 80 insertions(+), 68 deletions(-) diff --git a/lib/functions/compare_versions.dart b/lib/functions/compare_versions.dart index 39b78cd..b99bd8f 100644 --- a/lib/functions/compare_versions.dart +++ b/lib/functions/compare_versions.dart @@ -2,19 +2,23 @@ bool compareVersions({ required String currentVersion, required String newVersion }) { - final currentSplit = currentVersion.split('.').map((e) => int.parse(e)).toList(); - final newSplit = newVersion.split('.').map((e) => int.parse(e)).toList(); + try { + final currentSplit = currentVersion.split('.').map((e) => int.parse(e)).toList(); + final newSplit = newVersion.split('.').map((e) => int.parse(e)).toList(); - if (newSplit[0] > currentSplit[0]) { - return true; - } - else if (newSplit[1] > currentSplit[1]) { - return true; - } - else if (newSplit[2] > currentSplit[2]) { - return true; - } - else { + if (newSplit[0] > currentSplit[0]) { + return true; + } + else if (newSplit[1] > currentSplit[1]) { + return true; + } + else if (newSplit[2] > currentSplit[2]) { + return true; + } + else { + return false; + } + } catch (e) { return false; } } @@ -23,25 +27,29 @@ bool compareBetaVersions({ required String currentVersion, required String newVersion }) { - final currentSplit = currentVersion.split('-')[0].split('.').map((e) => int.parse(e)).toList(); - final newSplit = newVersion.split('-')[0].split('.').map((e) => int.parse(e)).toList(); + try { + final currentSplit = currentVersion.split('-')[0].split('.').map((e) => int.parse(e)).toList(); + final newSplit = newVersion.split('-')[0].split('.').map((e) => int.parse(e)).toList(); - final currentBeta = int.parse(currentVersion.split('-')[1].replaceAll('b.', '')); - final newBeta = int.parse(newVersion.split('-')[1].replaceAll('b.', '')); - - if (newSplit[0] > currentSplit[0]) { - return true; - } - else if (newSplit[1] > currentSplit[1]) { - return true; - } - else if (newSplit[2] > currentSplit[2]) { - return true; - } - else if (newBeta > currentBeta) { - return true; - } - else { + final currentBeta = int.parse(currentVersion.split('-')[1].replaceAll('b.', '')); + final newBeta = int.parse(newVersion.split('-')[1].replaceAll('b.', '')); + + if (newSplit[0] > currentSplit[0]) { + return true; + } + else if (newSplit[1] > currentSplit[1]) { + return true; + } + else if (newSplit[2] > currentSplit[2]) { + return true; + } + else if (newBeta > currentBeta) { + return true; + } + else { + return false; + } + } catch (e) { return false; } } @@ -51,19 +59,47 @@ bool serverVersionIsAhead({ required String referenceVersion, String? referenceVersionBeta }) { - final current = currentVersion.replaceAll('v', ''); - final reference = referenceVersion.replaceAll('v', ''); - final referenceBeta = referenceVersionBeta?.replaceAll('v', ''); + try { + final current = currentVersion.replaceAll('v', ''); + final reference = referenceVersion.replaceAll('v', ''); + final referenceBeta = referenceVersionBeta?.replaceAll('v', ''); - if (current.contains('beta')) { - if (referenceBeta != null) { - final currentSplit = current.split('-')[0].split('.').map((e) => int.parse(e)).toList(); - final newSplit = referenceBeta.split('-')[0].split('.').map((e) => int.parse(e)).toList(); + if (current.contains('b')) { + if (referenceBeta != null) { + final currentSplit = current.split('-')[0].split('.').map((e) => int.parse(e)).toList(); + final newSplit = referenceBeta.split('-')[0].split('.').map((e) => int.parse(e)).toList(); - final currentBeta = int.parse(current.split('-')[1].replaceAll('b.', '')); - final newBeta = int.parse(referenceBeta.split('-')[1].replaceAll('b.', '')); - - if (newSplit[0] == currentSplit[0] && newSplit[1] == currentSplit[1] && newSplit[2] == currentSplit[2] && newBeta == currentBeta) { + final currentBeta = int.parse(current.split('-')[1].replaceAll('b.', '')); + final newBeta = int.parse(referenceBeta.split('-')[1].replaceAll('b.', '')); + + if (newSplit[0] == currentSplit[0] && newSplit[1] == currentSplit[1] && newSplit[2] == currentSplit[2] && newBeta == currentBeta) { + return true; + } + else if (newSplit[0] < currentSplit[0]) { + return true; + } + else if (newSplit[1] < currentSplit[1]) { + return true; + } + else if (newSplit[2] < currentSplit[2]) { + return true; + } + else if (newBeta < currentBeta) { + return true; + } + else { + return false; + } + } + else { + return false; + } + } + else { + final currentSplit = current.split('.').map((e) => int.parse(e)).toList(); + final newSplit = reference.split('.').map((e) => int.parse(e)).toList(); + + if (newSplit[0] == currentSplit[0] && newSplit[1] == currentSplit[1] && newSplit[2] == currentSplit[2]) { return true; } else if (newSplit[0] < currentSplit[0]) { @@ -74,36 +110,12 @@ bool serverVersionIsAhead({ } else if (newSplit[2] < currentSplit[2]) { return true; - } - else if (newBeta < currentBeta) { - return true; - } + } else { return false; } } - else { - return false; - } - } - else { - final currentSplit = current.split('.').map((e) => int.parse(e)).toList(); - final newSplit = reference.split('.').map((e) => int.parse(e)).toList(); - - if (newSplit[0] == currentSplit[0] && newSplit[1] == currentSplit[1] && newSplit[2] == currentSplit[2]) { - return true; - } - else if (newSplit[0] < currentSplit[0]) { - return true; - } - else if (newSplit[1] < currentSplit[1]) { - return true; - } - else if (newSplit[2] < currentSplit[2]) { - return true; - } - else { - return false; - } + } catch (e) { + return false; } } \ No newline at end of file