mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-08-19 13:09:30 +02:00
Merge pull request #949 from ImranR98/dev
"Naive" version detection for some Sources (#946)
This commit is contained in:
@@ -22,6 +22,7 @@ class APKPure extends AppSource {
|
||||
APKPure() {
|
||||
host = 'apkpure.com';
|
||||
allowSubDomains = true;
|
||||
naiveStandardVersionDetection = true;
|
||||
}
|
||||
|
||||
@override
|
||||
|
@@ -9,6 +9,7 @@ class Aptoide extends AppSource {
|
||||
host = 'aptoide.com';
|
||||
name = tr('Aptoide');
|
||||
allowSubDomains = true;
|
||||
naiveStandardVersionDetection = true;
|
||||
}
|
||||
|
||||
@override
|
||||
|
@@ -8,6 +8,7 @@ class Uptodown extends AppSource {
|
||||
Uptodown() {
|
||||
host = 'uptodown.com';
|
||||
allowSubDomains = true;
|
||||
naiveStandardVersionDetection = true;
|
||||
}
|
||||
|
||||
@override
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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';
|
||||
|
@@ -328,6 +328,7 @@ abstract class AppSource {
|
||||
bool changeLogIfAnyIsMarkDown = true;
|
||||
bool appIdInferIsOptional = false;
|
||||
bool allowSubDomains = false;
|
||||
bool naiveStandardVersionDetection = false;
|
||||
|
||||
AppSource() {
|
||||
name = runtimeType.toString();
|
||||
|
12
pubspec.lock
12
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:
|
||||
|
@@ -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'
|
||||
|
Reference in New Issue
Block a user