diff --git a/lib/app_sources/apkpure.dart b/lib/app_sources/apkpure.dart index d22e9a6..a86fa0d 100644 --- a/lib/app_sources/apkpure.dart +++ b/lib/app_sources/apkpure.dart @@ -22,6 +22,7 @@ class APKPure extends AppSource { APKPure() { host = 'apkpure.com'; allowSubDomains = true; + naiveStandardVersionDetection = true; } @override diff --git a/lib/app_sources/aptoide.dart b/lib/app_sources/aptoide.dart index 9543464..5b92b33 100644 --- a/lib/app_sources/aptoide.dart +++ b/lib/app_sources/aptoide.dart @@ -9,6 +9,7 @@ class Aptoide extends AppSource { host = 'aptoide.com'; name = tr('Aptoide'); allowSubDomains = true; + naiveStandardVersionDetection = true; } @override diff --git a/lib/app_sources/uptodown.dart b/lib/app_sources/uptodown.dart index dd9b68a..7b36cc3 100644 --- a/lib/app_sources/uptodown.dart +++ b/lib/app_sources/uptodown.dart @@ -8,6 +8,7 @@ class Uptodown extends AppSource { Uptodown() { host = 'uptodown.com'; allowSubDomains = true; + naiveStandardVersionDetection = true; } @override diff --git a/lib/main.dart b/lib/main.dart index dfca6a9..1f2815e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -19,7 +19,7 @@ import 'package:easy_localization/src/easy_localization_controller.dart'; // ignore: implementation_imports import 'package:easy_localization/src/localization.dart'; -const String currentVersion = '0.14.21'; +const String currentVersion = '0.14.22'; const String currentReleaseTag = 'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES diff --git a/lib/providers/apps_provider.dart b/lib/providers/apps_provider.dart index a8c6fdf..2dc7498 100644 --- a/lib/providers/apps_provider.dart +++ b/lib/providers/apps_provider.dart @@ -709,14 +709,21 @@ class AppsProvider with ChangeNotifier { } bool isVersionDetectionPossible(AppInMemory? app) { - return app?.app.additionalSettings['trackOnly'] != true && - app?.app.additionalSettings['versionDetection'] != + if (app?.app == null) { + return false; + } + var naiveStandardVersionDetection = SourceProvider() + .getSource(app!.app.url, overrideSource: app.app.overrideSource) + .naiveStandardVersionDetection; + return app.app.additionalSettings['trackOnly'] != true && + app.app.additionalSettings['versionDetection'] != 'releaseDateAsVersion' && - app?.installedInfo?.versionName != null && - app?.app.installedVersion != null && - reconcileVersionDifferences( - app!.installedInfo!.versionName!, app.app.installedVersion!) != - null; + app.installedInfo?.versionName != null && + app.app.installedVersion != null && + (reconcileVersionDifferences(app.installedInfo!.versionName!, + app.app.installedVersion!) != + null || + naiveStandardVersionDetection); } // Given an App and it's on-device info... @@ -725,8 +732,13 @@ class AppsProvider with ChangeNotifier { App app, PackageInfo? installedInfo) { var modded = false; var trackOnly = app.additionalSettings['trackOnly'] == true; - var noVersionDetection = app.additionalSettings['versionDetection'] != - 'standardVersionDetection'; + var versionDetectionIsStandard = + app.additionalSettings['versionDetection'] == + 'standardVersionDetection'; + var naiveStandardVersionDetection = SourceProvider() + .getSource(app.url, overrideSource: app.overrideSource) + .naiveStandardVersionDetection; + ; // FIRST, COMPARE THE APP'S REPORTED AND REAL INSTALLED VERSIONS, WHERE ONE IS NULL if (installedInfo == null && app.installedVersion != null && !trackOnly) { // App says it's installed but isn't really (and isn't track only) - set to not installed @@ -741,7 +753,7 @@ class AppsProvider with ChangeNotifier { // SECOND, RECONCILE DIFFERENCES BETWEEN THE APP'S REPORTED AND REAL INSTALLED VERSIONS, WHERE NEITHER IS NULL if (installedInfo?.versionName != null && installedInfo!.versionName != app.installedVersion && - !noVersionDetection) { + versionDetectionIsStandard) { // App's reported version and real version don't match (and it uses standard version detection) // If they share a standard format (and are still different under it), update the reported version accordingly var correctedInstalledVersion = reconcileVersionDifferences( @@ -749,12 +761,15 @@ class AppsProvider with ChangeNotifier { if (correctedInstalledVersion?.key == false) { app.installedVersion = correctedInstalledVersion!.value; modded = true; + } else if (naiveStandardVersionDetection) { + app.installedVersion = installedInfo.versionName; + modded = true; } } // THIRD, RECONCILE THE APP'S REPORTED INSTALLED AND LATEST VERSIONS if (app.installedVersion != null && app.installedVersion != app.latestVersion && - !noVersionDetection) { + versionDetectionIsStandard) { // App's reported installed and latest versions don't match (and it uses standard version detection) // If they share a standard format, make sure the App's reported installed version uses that format var correctedInstalledVersion = @@ -766,8 +781,7 @@ class AppsProvider with ChangeNotifier { } // FOURTH, DISABLE VERSION DETECTION IF ENABLED AND THE REPORTED/REAL INSTALLED VERSIONS ARE NOT STANDARDIZED if (installedInfo != null && - app.additionalSettings['versionDetection'] == - 'standardVersionDetection' && + versionDetectionIsStandard && !isVersionDetectionPossible( AppInMemory(app, null, installedInfo, null))) { app.additionalSettings['versionDetection'] = 'noVersionDetection'; diff --git a/lib/providers/source_provider.dart b/lib/providers/source_provider.dart index 43a0f1e..b4b732f 100644 --- a/lib/providers/source_provider.dart +++ b/lib/providers/source_provider.dart @@ -328,6 +328,7 @@ abstract class AppSource { bool changeLogIfAnyIsMarkDown = true; bool appIdInferIsOptional = false; bool allowSubDomains = false; + bool naiveStandardVersionDetection = false; AppSource() { name = runtimeType.toString(); diff --git a/pubspec.lock b/pubspec.lock index ec8571d..51a04bc 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -879,18 +879,18 @@ packages: dependency: "direct main" description: name: webview_flutter - sha256: "82f6787d5df55907aa01e49bd9644f4ed1cc82af7a8257dd9947815959d2e755" + sha256: "053d454c9475546b4382e9498601fb46293cdac9b3ca93f1a738375bc9a1eee4" url: "https://pub.dev" source: hosted - version: "4.2.4" + version: "4.3.0" webview_flutter_android: dependency: transitive description: name: webview_flutter_android - sha256: ddc167c6676f57c8b367d19fcbee267d6dc6adf81bd6c3cb87981d30746e0a6d + sha256: b0cd33dd7d3dd8e5f664e11a19e17ba12c352647269921a3b568406b001f1dff url: "https://pub.dev" source: hosted - version: "3.10.1" + version: "3.12.0" webview_flutter_platform_interface: dependency: transitive description: @@ -903,10 +903,10 @@ packages: dependency: transitive description: name: webview_flutter_wkwebview - sha256: "485af05f2c5f83c7f78c20e236b170ad02df7153b299ae9917345be43871d29f" + sha256: "3c7d56ca4b82654ad1f58aeefb8d593a59224f26d6b2bf8feed074361eb34c86" url: "https://pub.dev" source: hosted - version: "3.8.0" + version: "3.9.0" win32: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 0c648ab..af466c0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -17,7 +17,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 0.14.21+213 # When changing this, update the tag in main() accordingly +version: 0.14.22+214 # When changing this, update the tag in main() accordingly environment: sdk: '>=3.0.0 <4.0.0'