From d5d6825ed9260b6d4674a0b5688f3e72882cae3c Mon Sep 17 00:00:00 2001 From: Imran Remtulla Date: Thu, 12 Dec 2024 02:40:04 -0500 Subject: [PATCH] Avoid OS version reconciliation for pseudo-versioned apps (#2023) --- lib/providers/apps_provider.dart | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/providers/apps_provider.dart b/lib/providers/apps_provider.dart index 51d0b9f..a28a8a9 100644 --- a/lib/providers/apps_provider.dart +++ b/lib/providers/apps_provider.dart @@ -19,6 +19,8 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:http/io_client.dart'; +import 'package:obtainium/app_sources/directAPKLink.dart'; +import 'package:obtainium/app_sources/html.dart'; import 'package:obtainium/components/generated_form.dart'; import 'package:obtainium/components/generated_form_modal.dart'; import 'package:obtainium/custom_errors.dart'; @@ -1159,17 +1161,25 @@ class AppsProvider with ChangeNotifier { if (app?.app == null) { return false; } + var source = SourceProvider() + .getSource(app!.app.url, overrideSource: app.app.overrideSource); var naiveStandardVersionDetection = - app!.app.additionalSettings['naiveStandardVersionDetection'] == true || - SourceProvider() - .getSource(app.app.url, overrideSource: app.app.overrideSource) - .naiveStandardVersionDetection; + app.app.additionalSettings['naiveStandardVersionDetection'] == true || + source.naiveStandardVersionDetection; String? realInstalledVersion = app.app.additionalSettings['useVersionCodeAsOSVersion'] == true ? app.installedInfo?.versionCode.toString() : app.installedInfo?.versionName; + bool isHTMLWithNoVersionDetection = + (source.runtimeType == HTML().runtimeType && + (app.app.additionalSettings['versionExtractionRegEx'] as String?) + ?.isNotEmpty != + true); + bool isDirectAPKLink = source.runtimeType == DirectAPKLink().runtimeType; return app.app.additionalSettings['trackOnly'] != true && app.app.additionalSettings['releaseDateAsVersion'] != true && + !isHTMLWithNoVersionDetection && + !isDirectAPKLink && realInstalledVersion != null && app.app.installedVersion != null && (reconcileVersionDifferences( @@ -1240,6 +1250,7 @@ class AppsProvider with ChangeNotifier { !isVersionDetectionPossible( AppInMemory(app, null, installedInfo, null))) { app.additionalSettings['versionDetection'] = false; + app.installedVersion = app.latestVersion; logs.add('Could not reconcile version formats for: ${app.id}'); modded = true; }