From 3ec33a1c778c56dcbae28dfe6cc4190be85e8e38 Mon Sep 17 00:00:00 2001 From: Imran Remtulla Date: Fri, 14 Jul 2023 21:09:20 -0400 Subject: [PATCH 1/4] Add auto-remove option (#656) + on-foreground bugfix --- assets/translations/de.json | 1 + assets/translations/en.json | 1 + assets/translations/es.json | 1 + assets/translations/fa.json | 1 + assets/translations/fr.json | 1 + assets/translations/hu.json | 1 + assets/translations/it.json | 1 + assets/translations/ja.json | 1 + assets/translations/pl.json | 1 + assets/translations/ru.json | 1 + assets/translations/zh.json | 1 + lib/main.dart | 4 ++-- lib/pages/settings.dart | 16 +++++++++++++ lib/providers/apps_provider.dart | 36 +++++++++++++++++++++------- lib/providers/settings_provider.dart | 9 +++++++ 15 files changed, 65 insertions(+), 11 deletions(-) diff --git a/assets/translations/de.json b/assets/translations/de.json index f68da68..87ecd2d 100644 --- a/assets/translations/de.json +++ b/assets/translations/de.json @@ -234,6 +234,7 @@ "requiresCredentialsInSettings": "Benötigt zusätzliche Anmeldedaten (in den Einstellungen)", "checkOnStart": "Überprüfe einmalig beim Start", "tryInferAppIdFromCode": "Try inferring App ID from source code", + "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "removeAppQuestion": { "one": "App entfernen?", "other": "Apps entfernen?" diff --git a/assets/translations/en.json b/assets/translations/en.json index e9b4503..8bed92b 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -234,6 +234,7 @@ "requiresCredentialsInSettings": "This needs additional credentials (in Settings)", "checkOnStart": "Check Once on Start", "tryInferAppIdFromCode": "Try inferring App ID from source code", + "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "removeAppQuestion": { "one": "Remove App?", "other": "Remove Apps?" diff --git a/assets/translations/es.json b/assets/translations/es.json index 6c7cc05..3f05649 100644 --- a/assets/translations/es.json +++ b/assets/translations/es.json @@ -234,6 +234,7 @@ "requiresCredentialsInSettings": "This needs additional credentials (in Settings)", "checkOnStart": "Check Once on Start", "tryInferAppIdFromCode": "Try inferring App ID from source code", + "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "removeAppQuestion": { "one": "¿Eliminar Aplicación?", "other": "¿Eliminar Aplicaciones?" diff --git a/assets/translations/fa.json b/assets/translations/fa.json index 555868d..1673f7b 100644 --- a/assets/translations/fa.json +++ b/assets/translations/fa.json @@ -234,6 +234,7 @@ "requiresCredentialsInSettings": "این به اعتبارنامه های اضافی نیاز دارد (در تنظیمات)", "checkOnStart": "بررسی در شروع", "tryInferAppIdFromCode": "شناسه برنامه را از کد منبع استنباط کنید", + "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "removeAppQuestion": { "one": "برنامه حذف شود؟", "other": "برنامه ها حذف شوند؟" diff --git a/assets/translations/fr.json b/assets/translations/fr.json index ea60088..6a804b6 100644 --- a/assets/translations/fr.json +++ b/assets/translations/fr.json @@ -234,6 +234,7 @@ "requiresCredentialsInSettings": "This needs additional credentials (in Settings)", "checkOnStart": "Check Once on Start", "tryInferAppIdFromCode": "Try inferring App ID from source code", + "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "removeAppQuestion": { "one": "Supprimer l'application ?", "other": "Supprimer les applications ?" diff --git a/assets/translations/hu.json b/assets/translations/hu.json index b0b553c..c6ebc55 100644 --- a/assets/translations/hu.json +++ b/assets/translations/hu.json @@ -233,6 +233,7 @@ "requiresCredentialsInSettings": "Ehhez további hitelesítő adatokra van szükség (a Beállításokban)", "checkOnStart": "Egyszer az indításkor", "tryInferAppIdFromCode": "Próbálja kikövetkeztetni az app azonosítót a forráskódból", + "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "removeAppQuestion": { "one": "Eltávolítja az alkalmazást?", "other": "Eltávolítja az alkalmazást?" diff --git a/assets/translations/it.json b/assets/translations/it.json index 4d4d925..c06180b 100644 --- a/assets/translations/it.json +++ b/assets/translations/it.json @@ -234,6 +234,7 @@ "requiresCredentialsInSettings": "Servono credenziali aggiuntive (in Impostazioni)", "checkOnStart": "Controlla una volta all'avvio", "tryInferAppIdFromCode": "Prova a dedurre l'ID dell'app dal codice sorgente", + "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "removeAppQuestion": { "one": "Rimuovere l'app?", "other": "Rimuovere le app?" diff --git a/assets/translations/ja.json b/assets/translations/ja.json index c0d9c22..270e3a2 100644 --- a/assets/translations/ja.json +++ b/assets/translations/ja.json @@ -234,6 +234,7 @@ "requiresCredentialsInSettings": "これには追加の認証が必要です (設定にて)", "checkOnStart": "Check Once on Start", "tryInferAppIdFromCode": "Try inferring App ID from source code", + "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "removeAppQuestion": { "one": "アプリを削除しますか?", "other": "アプリを削除しますか?" diff --git a/assets/translations/pl.json b/assets/translations/pl.json index f1b5274..2837709 100644 --- a/assets/translations/pl.json +++ b/assets/translations/pl.json @@ -238,6 +238,7 @@ "requiresCredentialsInSettings": "Wymaga to dodatkowych poświadczeń (w Ustawieniach)", "checkOnStart": "Sprawdź raz przy starcie", "tryInferAppIdFromCode": "Spróbuj wywnioskować identyfikator aplikacji z kodu źródłowego", + "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "removeAppQuestion": { "one": "Usunąć aplikację?", "other": "Usunąć aplikacje?" diff --git a/assets/translations/ru.json b/assets/translations/ru.json index ce91304..d036167 100644 --- a/assets/translations/ru.json +++ b/assets/translations/ru.json @@ -234,6 +234,7 @@ "requiresCredentialsInSettings": "Для этого требуются дополнительные учетные данные (в настройках)", "checkOnStart": "Проверить один раз при запуске", "tryInferAppIdFromCode": "Попытаться определить ID приложения из исходного кода", + "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "removeAppQuestion": { "one": "Удалить приложение?", "other": "Удалить приложения?" diff --git a/assets/translations/zh.json b/assets/translations/zh.json index 9e0bbdb..81179e9 100644 --- a/assets/translations/zh.json +++ b/assets/translations/zh.json @@ -234,6 +234,7 @@ "requiresCredentialsInSettings": "此功能需要额外的凭据(在“设置”中添加)", "checkOnStart": "启动时进行一次检查", "tryInferAppIdFromCode": "尝试从源代码推断应用 ID", + "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "removeAppQuestion": { "one": "是否删除应用?", "other": "是否删除应用?" diff --git a/lib/main.dart b/lib/main.dart index bbbe37d..dbcf44d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -226,9 +226,9 @@ class _ObtainiumState extends State { if (!supportedLocales .map((e) => e.key.languageCode) .contains(context.locale.languageCode) || - settingsProvider.forcedLocale == null && + (settingsProvider.forcedLocale == null && context.deviceLocale.languageCode != - context.locale.languageCode) { + context.locale.languageCode)) { settingsProvider.resetLocaleSafe(context); } // Register the background update task according to the user's setting diff --git a/lib/pages/settings.dart b/lib/pages/settings.dart index 7827111..7135a25 100644 --- a/lib/pages/settings.dart +++ b/lib/pages/settings.dart @@ -322,6 +322,22 @@ class _SettingsPageState extends State { ], ), height16, + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Flexible( + child: + Text(tr('removeOnExternalUninstall'))), + Switch( + value: settingsProvider + .removeOnExternalUninstall, + onChanged: (value) { + settingsProvider + .removeOnExternalUninstall = value; + }) + ], + ), + height16, Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ diff --git a/lib/providers/apps_provider.dart b/lib/providers/apps_provider.dart index ff77731..b1da1b2 100644 --- a/lib/providers/apps_provider.dart +++ b/lib/providers/apps_provider.dart @@ -335,19 +335,21 @@ class AppsProvider with ChangeNotifier { } Future unzipFile(String filePath, String destinationPath) async { - await ZipFile.extractToDirectory(zipFile: File(filePath), destinationDir: Directory(destinationPath)); + await ZipFile.extractToDirectory( + zipFile: File(filePath), destinationDir: Directory(destinationPath)); } Future installXApkDir(DownloadedXApkDir dir, {bool silent = false}) async { try { var somethingInstalled = false; - for (var file in dir.extracted.listSync(recursive: true, followLinks: false).whereType()) { + for (var file in dir.extracted + .listSync(recursive: true, followLinks: false) + .whereType()) { if (file.path.toLowerCase().endsWith('.apk')) { somethingInstalled = somethingInstalled || await installApk(DownloadedApk(dir.appId, file), silent: silent); - } - else if (file.path.toLowerCase().endsWith('.obb')) { + } else if (file.path.toLowerCase().endsWith('.obb')) { await moveObbFile(file, dir.appId); } } @@ -389,7 +391,7 @@ class AppsProvider with ChangeNotifier { } Future moveObbFile(File file, String appId) async { - if(!file.path.toLowerCase().endsWith('.obb')) return; + if (!file.path.toLowerCase().endsWith('.obb')) return; // TODO: Does not support Android 11+ if ((await DeviceInfoPlugin().androidInfo).version.sdkInt <= 29) { @@ -754,21 +756,37 @@ class AppsProvider with ChangeNotifier { } loadingApps = false; notifyListeners(); - refreshInstallStatuses(); + + refreshInstallStatuses(useExistingInstalledInfo: true); } - Future refreshInstallStatuses() async { + Future refreshInstallStatuses( + {bool useExistingInstalledInfo = false}) async { if (await doesInstalledAppsPluginWork()) { List modifiedApps = []; for (var app in apps.values) { - var moddedApp = - getCorrectedInstallStatusAppIfPossible(app.app, app.installedInfo); + var moddedApp = getCorrectedInstallStatusAppIfPossible( + app.app, + useExistingInstalledInfo + ? app.installedInfo + : await getInstalledInfo(app.app.id)); if (moddedApp != null) { modifiedApps.add(moddedApp); } } if (modifiedApps.isNotEmpty) { await saveApps(modifiedApps, attemptToCorrectInstallStatus: false); + var removedAppIds = modifiedApps + .where((a) => a.installedVersion == null) + .map((e) => e.id) + .toList(); + if (removedAppIds.isNotEmpty) { + var settingsProvider = SettingsProvider(); + await settingsProvider.initializeSettings(); + if (settingsProvider.removeOnExternalUninstall) { + await removeApps(removedAppIds); + } + } } } } diff --git a/lib/providers/settings_provider.dart b/lib/providers/settings_provider.dart index 8ddfdf2..2319a6d 100644 --- a/lib/providers/settings_provider.dart +++ b/lib/providers/settings_provider.dart @@ -273,4 +273,13 @@ class SettingsProvider with ChangeNotifier { context.deleteSaveLocale(); } } + + bool get removeOnExternalUninstall { + return prefs?.getBool('removeOnExternalUninstall') ?? false; + } + + set removeOnExternalUninstall(bool show) { + prefs?.setBool('removeOnExternalUninstall', show); + notifyListeners(); + } } From 41d9edcf83f218c99581a16ddff14dd6de846c33 Mon Sep 17 00:00:00 2001 From: Imran Remtulla Date: Fri, 14 Jul 2023 21:36:42 -0400 Subject: [PATCH 2/4] Auto-select version code for F-Droid Third-Party Repos (#658) --- assets/translations/de.json | 1 + assets/translations/en.json | 1 + assets/translations/es.json | 1 + assets/translations/fa.json | 1 + assets/translations/fr.json | 1 + assets/translations/hu.json | 1 + assets/translations/it.json | 1 + assets/translations/ja.json | 1 + assets/translations/pl.json | 1 + assets/translations/ru.json | 1 + assets/translations/zh.json | 1 + lib/app_sources/fdroidrepo.dart | 16 +++++++++++++++- 12 files changed, 26 insertions(+), 1 deletion(-) diff --git a/assets/translations/de.json b/assets/translations/de.json index 87ecd2d..06c1337 100644 --- a/assets/translations/de.json +++ b/assets/translations/de.json @@ -235,6 +235,7 @@ "checkOnStart": "Überprüfe einmalig beim Start", "tryInferAppIdFromCode": "Try inferring App ID from source code", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", + "pickHighestVersionCode": "Auto-select highest version code APK", "removeAppQuestion": { "one": "App entfernen?", "other": "Apps entfernen?" diff --git a/assets/translations/en.json b/assets/translations/en.json index 8bed92b..e06e460 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -235,6 +235,7 @@ "checkOnStart": "Check Once on Start", "tryInferAppIdFromCode": "Try inferring App ID from source code", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", + "pickHighestVersionCode": "Auto-select highest version code APK", "removeAppQuestion": { "one": "Remove App?", "other": "Remove Apps?" diff --git a/assets/translations/es.json b/assets/translations/es.json index 3f05649..4e53acc 100644 --- a/assets/translations/es.json +++ b/assets/translations/es.json @@ -235,6 +235,7 @@ "checkOnStart": "Check Once on Start", "tryInferAppIdFromCode": "Try inferring App ID from source code", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", + "pickHighestVersionCode": "Auto-select highest version code APK", "removeAppQuestion": { "one": "¿Eliminar Aplicación?", "other": "¿Eliminar Aplicaciones?" diff --git a/assets/translations/fa.json b/assets/translations/fa.json index 1673f7b..0f3c621 100644 --- a/assets/translations/fa.json +++ b/assets/translations/fa.json @@ -235,6 +235,7 @@ "checkOnStart": "بررسی در شروع", "tryInferAppIdFromCode": "شناسه برنامه را از کد منبع استنباط کنید", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", + "pickHighestVersionCode": "Auto-select highest version code APK", "removeAppQuestion": { "one": "برنامه حذف شود؟", "other": "برنامه ها حذف شوند؟" diff --git a/assets/translations/fr.json b/assets/translations/fr.json index 6a804b6..315f3d4 100644 --- a/assets/translations/fr.json +++ b/assets/translations/fr.json @@ -235,6 +235,7 @@ "checkOnStart": "Check Once on Start", "tryInferAppIdFromCode": "Try inferring App ID from source code", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", + "pickHighestVersionCode": "Auto-select highest version code APK", "removeAppQuestion": { "one": "Supprimer l'application ?", "other": "Supprimer les applications ?" diff --git a/assets/translations/hu.json b/assets/translations/hu.json index c6ebc55..9927e40 100644 --- a/assets/translations/hu.json +++ b/assets/translations/hu.json @@ -234,6 +234,7 @@ "checkOnStart": "Egyszer az indításkor", "tryInferAppIdFromCode": "Próbálja kikövetkeztetni az app azonosítót a forráskódból", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", + "pickHighestVersionCode": "Auto-select highest version code APK", "removeAppQuestion": { "one": "Eltávolítja az alkalmazást?", "other": "Eltávolítja az alkalmazást?" diff --git a/assets/translations/it.json b/assets/translations/it.json index c06180b..6450895 100644 --- a/assets/translations/it.json +++ b/assets/translations/it.json @@ -235,6 +235,7 @@ "checkOnStart": "Controlla una volta all'avvio", "tryInferAppIdFromCode": "Prova a dedurre l'ID dell'app dal codice sorgente", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", + "pickHighestVersionCode": "Auto-select highest version code APK", "removeAppQuestion": { "one": "Rimuovere l'app?", "other": "Rimuovere le app?" diff --git a/assets/translations/ja.json b/assets/translations/ja.json index 270e3a2..00f4412 100644 --- a/assets/translations/ja.json +++ b/assets/translations/ja.json @@ -235,6 +235,7 @@ "checkOnStart": "Check Once on Start", "tryInferAppIdFromCode": "Try inferring App ID from source code", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", + "pickHighestVersionCode": "Auto-select highest version code APK", "removeAppQuestion": { "one": "アプリを削除しますか?", "other": "アプリを削除しますか?" diff --git a/assets/translations/pl.json b/assets/translations/pl.json index 2837709..0885008 100644 --- a/assets/translations/pl.json +++ b/assets/translations/pl.json @@ -239,6 +239,7 @@ "checkOnStart": "Sprawdź raz przy starcie", "tryInferAppIdFromCode": "Spróbuj wywnioskować identyfikator aplikacji z kodu źródłowego", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", + "pickHighestVersionCode": "Auto-select highest version code APK", "removeAppQuestion": { "one": "Usunąć aplikację?", "other": "Usunąć aplikacje?" diff --git a/assets/translations/ru.json b/assets/translations/ru.json index d036167..2e8da04 100644 --- a/assets/translations/ru.json +++ b/assets/translations/ru.json @@ -235,6 +235,7 @@ "checkOnStart": "Проверить один раз при запуске", "tryInferAppIdFromCode": "Попытаться определить ID приложения из исходного кода", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", + "pickHighestVersionCode": "Auto-select highest version code APK", "removeAppQuestion": { "one": "Удалить приложение?", "other": "Удалить приложения?" diff --git a/assets/translations/zh.json b/assets/translations/zh.json index 81179e9..0439230 100644 --- a/assets/translations/zh.json +++ b/assets/translations/zh.json @@ -235,6 +235,7 @@ "checkOnStart": "启动时进行一次检查", "tryInferAppIdFromCode": "尝试从源代码推断应用 ID", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", + "pickHighestVersionCode": "Auto-select highest version code APK", "removeAppQuestion": { "one": "是否删除应用?", "other": "是否删除应用?" diff --git a/lib/app_sources/fdroidrepo.dart b/lib/app_sources/fdroidrepo.dart index 9bf2931..31f8435 100644 --- a/lib/app_sources/fdroidrepo.dart +++ b/lib/app_sources/fdroidrepo.dart @@ -14,6 +14,10 @@ class FDroidRepo extends AppSource { label: tr('appIdOrName'), hint: tr('reposHaveMultipleApps'), required: true) + ], + [ + GeneratedFormSwitch('pickHighestVersionCode', + label: tr('pickHighestVersionCode'), defaultValue: false) ] ]; } @@ -24,6 +28,7 @@ class FDroidRepo extends AppSource { Map additionalSettings, ) async { String? appIdOrName = additionalSettings['appIdOrName']; + bool pickHighestVersionCode = additionalSettings['pickHighestVersionCode']; if (appIdOrName == null) { throw NoReleasesError(); } @@ -62,10 +67,19 @@ class FDroidRepo extends AppSource { if (latestVersion == null) { throw NoVersionError(); } - List apkUrls = releases + var latestVersionReleases = releases .where((element) => element.querySelector('version')?.innerHtml == latestVersion && element.querySelector('apkname') != null) + .toList(); + if (latestVersionReleases.length > 1 && pickHighestVersionCode) { + latestVersionReleases.sort((e1, e2) { + return int.parse(e2.querySelector('versioncode')!.innerHtml) + .compareTo(int.parse(e1.querySelector('versioncode')!.innerHtml)); + }); + latestVersionReleases = [latestVersionReleases[0]]; + } + List apkUrls = latestVersionReleases .map((e) => '$standardUrl/${e.querySelector('apkname')!.innerHtml}') .toList(); return APKDetails(latestVersion, getApkUrlsFromUrls(apkUrls), From 2a58ee87293b1a7f971501d6f286ecf383e85831 Mon Sep 17 00:00:00 2001 From: Imran Remtulla Date: Fri, 14 Jul 2023 21:53:50 -0400 Subject: [PATCH 3/4] Toggle to disable update check on detail page (#659), string capitalization consistency --- assets/translations/de.json | 1 + assets/translations/en.json | 15 ++++++++------- assets/translations/es.json | 5 +++-- assets/translations/fa.json | 1 + assets/translations/fr.json | 9 +++++---- assets/translations/hu.json | 1 + assets/translations/it.json | 1 + assets/translations/ja.json | 3 ++- assets/translations/pl.json | 1 + assets/translations/ru.json | 1 + assets/translations/zh.json | 1 + lib/pages/app.dart | 5 ++++- lib/pages/settings.dart | 15 +++++++++++++++ lib/providers/settings_provider.dart | 9 +++++++++ 14 files changed, 53 insertions(+), 15 deletions(-) diff --git a/assets/translations/de.json b/assets/translations/de.json index 06c1337..0386135 100644 --- a/assets/translations/de.json +++ b/assets/translations/de.json @@ -236,6 +236,7 @@ "tryInferAppIdFromCode": "Try inferring App ID from source code", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "pickHighestVersionCode": "Auto-select highest version code APK", + "checkUpdateOnDetailPage": "Check for updates on opening an App detail page", "removeAppQuestion": { "one": "App entfernen?", "other": "Apps entfernen?" diff --git a/assets/translations/en.json b/assets/translations/en.json index e06e460..15e46dc 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -121,7 +121,7 @@ "followSystem": "Follow System", "obtainium": "Obtainium", "materialYou": "Material You", - "useBlackTheme": "Use Pure Black Dark Theme", + "useBlackTheme": "Use pure black dark theme", "appSortBy": "App Sort By", "authorName": "Author/Name", "nameAuthor": "Name/Author", @@ -132,8 +132,8 @@ "bgUpdateCheckInterval": "Background Update Checking Interval", "neverManualOnly": "Never - Manual Only", "appearance": "Appearance", - "showWebInAppView": "Show Source Webpage in App View", - "pinUpdates": "Pin Updates to Top of Apps View", + "showWebInAppView": "Show Source webpage in App view", + "pinUpdates": "Pin updates to top of Apps view", "updates": "Updates", "sourceSpecific": "Source-Specific", "appSource": "App Source", @@ -226,16 +226,17 @@ "autoApkFilterByArch": "Attempt to filter APKs by CPU architecture if possible", "overrideSource": "Override Source", "dontShowAgain": "Don't show this again", - "dontShowTrackOnlyWarnings": "Don't Show 'Track-Only' Warnings", - "dontShowAPKOriginWarnings": "Don't Show APK Origin Warnings", - "moveNonInstalledAppsToBottom": "Move Non-Installed Apps to Bottom of Apps View", + "dontShowTrackOnlyWarnings": "Don't show 'Track-Only' warnings", + "dontShowAPKOriginWarnings": "Don't show APK origin warnings", + "moveNonInstalledAppsToBottom": "Move non-installed Apps to bottom of Apps view", "gitlabPATLabel": "GitLab Personal Access Token (Enables Search)", "about": "About", "requiresCredentialsInSettings": "This needs additional credentials (in Settings)", - "checkOnStart": "Check Once on Start", + "checkOnStart": "Check for updates on startup", "tryInferAppIdFromCode": "Try inferring App ID from source code", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "pickHighestVersionCode": "Auto-select highest version code APK", + "checkUpdateOnDetailPage": "Check for updates on opening an App detail page", "removeAppQuestion": { "one": "Remove App?", "other": "Remove Apps?" diff --git a/assets/translations/es.json b/assets/translations/es.json index 4e53acc..1e557ab 100644 --- a/assets/translations/es.json +++ b/assets/translations/es.json @@ -228,14 +228,15 @@ "dontShowAgain": "No mostrar de nuevo", "dontShowTrackOnlyWarnings": "No mostrar avisos de 'Solo Seguimiento'", "dontShowAPKOriginWarnings": "No mostrar avisos de las fuentes de las APks", - "moveNonInstalledAppsToBottom": "Move Non-Installed Apps to Bottom of Apps View", + "moveNonInstalledAppsToBottom": "Move non-installed Apps to bottom of Apps view", "gitlabPATLabel": "GitLab Personal Access Token (Enables Search)", "about": "About", "requiresCredentialsInSettings": "This needs additional credentials (in Settings)", - "checkOnStart": "Check Once on Start", + "checkOnStart": "Check for updates on startup", "tryInferAppIdFromCode": "Try inferring App ID from source code", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "pickHighestVersionCode": "Auto-select highest version code APK", + "checkUpdateOnDetailPage": "Check for updates on opening an App detail page", "removeAppQuestion": { "one": "¿Eliminar Aplicación?", "other": "¿Eliminar Aplicaciones?" diff --git a/assets/translations/fa.json b/assets/translations/fa.json index 0f3c621..476b80a 100644 --- a/assets/translations/fa.json +++ b/assets/translations/fa.json @@ -236,6 +236,7 @@ "tryInferAppIdFromCode": "شناسه برنامه را از کد منبع استنباط کنید", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "pickHighestVersionCode": "Auto-select highest version code APK", + "checkUpdateOnDetailPage": "Check for updates on opening an App detail page", "removeAppQuestion": { "one": "برنامه حذف شود؟", "other": "برنامه ها حذف شوند؟" diff --git a/assets/translations/fr.json b/assets/translations/fr.json index 315f3d4..42a3c2d 100644 --- a/assets/translations/fr.json +++ b/assets/translations/fr.json @@ -121,7 +121,7 @@ "followSystem": "Suivre le système", "obtainium": "Obtainium", "materialYou": "Material You", - "useBlackTheme": "Use Pure Black Dark Theme", + "useBlackTheme": "Use pure black dark theme", "appSortBy": "Applications triées par", "authorName": "Auteur/Nom", "nameAuthor": "Nom/Auteur", @@ -227,15 +227,16 @@ "overrideSource": "Override Source", "dontShowAgain": "Don't show this again", "dontShowTrackOnlyWarnings": "Don't Show the 'Track-Only' Warning", - "dontShowAPKOriginWarnings": "Don't Show APK Origin Warnings", - "moveNonInstalledAppsToBottom": "Move Non-Installed Apps to Bottom of Apps View", + "dontShowAPKOriginWarnings": "Don't show APK origin warnings", + "moveNonInstalledAppsToBottom": "Move non-installed Apps to bottom of Apps view", "gitlabPATLabel": "GitLab Personal Access Token (Enables Search)", "about": "About", "requiresCredentialsInSettings": "This needs additional credentials (in Settings)", - "checkOnStart": "Check Once on Start", + "checkOnStart": "Check for updates on startup", "tryInferAppIdFromCode": "Try inferring App ID from source code", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "pickHighestVersionCode": "Auto-select highest version code APK", + "checkUpdateOnDetailPage": "Check for updates on opening an App detail page", "removeAppQuestion": { "one": "Supprimer l'application ?", "other": "Supprimer les applications ?" diff --git a/assets/translations/hu.json b/assets/translations/hu.json index 9927e40..787b05a 100644 --- a/assets/translations/hu.json +++ b/assets/translations/hu.json @@ -235,6 +235,7 @@ "tryInferAppIdFromCode": "Próbálja kikövetkeztetni az app azonosítót a forráskódból", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "pickHighestVersionCode": "Auto-select highest version code APK", + "checkUpdateOnDetailPage": "Check for updates on opening an App detail page", "removeAppQuestion": { "one": "Eltávolítja az alkalmazást?", "other": "Eltávolítja az alkalmazást?" diff --git a/assets/translations/it.json b/assets/translations/it.json index 6450895..1bed996 100644 --- a/assets/translations/it.json +++ b/assets/translations/it.json @@ -236,6 +236,7 @@ "tryInferAppIdFromCode": "Prova a dedurre l'ID dell'app dal codice sorgente", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "pickHighestVersionCode": "Auto-select highest version code APK", + "checkUpdateOnDetailPage": "Check for updates on opening an App detail page", "removeAppQuestion": { "one": "Rimuovere l'app?", "other": "Rimuovere le app?" diff --git a/assets/translations/ja.json b/assets/translations/ja.json index 00f4412..0892ecc 100644 --- a/assets/translations/ja.json +++ b/assets/translations/ja.json @@ -232,10 +232,11 @@ "gitlabPATLabel": "GitLab パーソナルアクセストークン (検索を有効化する)", "about": "概要", "requiresCredentialsInSettings": "これには追加の認証が必要です (設定にて)", - "checkOnStart": "Check Once on Start", + "checkOnStart": "Check for updates on startup", "tryInferAppIdFromCode": "Try inferring App ID from source code", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "pickHighestVersionCode": "Auto-select highest version code APK", + "checkUpdateOnDetailPage": "Check for updates on opening an App detail page", "removeAppQuestion": { "one": "アプリを削除しますか?", "other": "アプリを削除しますか?" diff --git a/assets/translations/pl.json b/assets/translations/pl.json index 0885008..241af7e 100644 --- a/assets/translations/pl.json +++ b/assets/translations/pl.json @@ -240,6 +240,7 @@ "tryInferAppIdFromCode": "Spróbuj wywnioskować identyfikator aplikacji z kodu źródłowego", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "pickHighestVersionCode": "Auto-select highest version code APK", + "checkUpdateOnDetailPage": "Check for updates on opening an App detail page", "removeAppQuestion": { "one": "Usunąć aplikację?", "other": "Usunąć aplikacje?" diff --git a/assets/translations/ru.json b/assets/translations/ru.json index 2e8da04..b20fedd 100644 --- a/assets/translations/ru.json +++ b/assets/translations/ru.json @@ -236,6 +236,7 @@ "tryInferAppIdFromCode": "Попытаться определить ID приложения из исходного кода", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "pickHighestVersionCode": "Auto-select highest version code APK", + "checkUpdateOnDetailPage": "Check for updates on opening an App detail page", "removeAppQuestion": { "one": "Удалить приложение?", "other": "Удалить приложения?" diff --git a/assets/translations/zh.json b/assets/translations/zh.json index 0439230..49da8bc 100644 --- a/assets/translations/zh.json +++ b/assets/translations/zh.json @@ -236,6 +236,7 @@ "tryInferAppIdFromCode": "尝试从源代码推断应用 ID", "removeOnExternalUninstall": "Automatically remove externally uninstalled Apps", "pickHighestVersionCode": "Auto-select highest version code APK", + "checkUpdateOnDetailPage": "Check for updates on opening an App detail page", "removeAppQuestion": { "one": "是否删除应用?", "other": "是否删除应用?" diff --git a/lib/pages/app.dart b/lib/pages/app.dart index 75aa675..2ba6a96 100644 --- a/lib/pages/app.dart +++ b/lib/pages/app.dart @@ -44,7 +44,10 @@ class _AppPageState extends State { ? sourceProvider.getSource(app.app.url, overrideSource: app.app.overrideSource) : null; - if (!areDownloadsRunning && prevApp == null && app != null) { + if (!areDownloadsRunning && + prevApp == null && + app != null && + settingsProvider.checkUpdateOnDetailPage) { prevApp = app; getUpdate(app.app.id); } diff --git a/lib/pages/settings.dart b/lib/pages/settings.dart index 7135a25..c63d2e8 100644 --- a/lib/pages/settings.dart +++ b/lib/pages/settings.dart @@ -240,6 +240,21 @@ class _SettingsPageState extends State { }) ], ), + height16, + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Flexible( + child: Text(tr('checkUpdateOnDetailPage'))), + Switch( + value: settingsProvider + .checkUpdateOnDetailPage, + onChanged: (value) { + settingsProvider.checkUpdateOnDetailPage = + value; + }) + ], + ), height32, Text( tr('sourceSpecific'), diff --git a/lib/providers/settings_provider.dart b/lib/providers/settings_provider.dart index 2319a6d..9fcfba0 100644 --- a/lib/providers/settings_provider.dart +++ b/lib/providers/settings_provider.dart @@ -282,4 +282,13 @@ class SettingsProvider with ChangeNotifier { prefs?.setBool('removeOnExternalUninstall', show); notifyListeners(); } + + bool get checkUpdateOnDetailPage { + return prefs?.getBool('checkUpdateOnDetailPage') ?? true; + } + + set checkUpdateOnDetailPage(bool show) { + prefs?.setBool('checkUpdateOnDetailPage', show); + notifyListeners(); + } } From 6b29a0f0f367be6ce2c9e9b6c77ebc7c37e8bcf2 Mon Sep 17 00:00:00 2001 From: Imran Remtulla Date: Fri, 14 Jul 2023 21:56:57 -0400 Subject: [PATCH 4/4] Update Packages, increment version --- lib/main.dart | 2 +- pubspec.lock | 56 ++++++++++++++++++++++----------------------------- pubspec.yaml | 2 +- 3 files changed, 26 insertions(+), 34 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index dbcf44d..db60abe 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -21,7 +21,7 @@ import 'package:easy_localization/src/easy_localization_controller.dart'; // ignore: implementation_imports import 'package:easy_localization/src/localization.dart'; -const String currentVersion = '0.13.14'; +const String currentVersion = '0.13.15'; const String currentReleaseTag = 'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES diff --git a/pubspec.lock b/pubspec.lock index 9f6cc31..8d10c85 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -402,10 +402,10 @@ packages: dependency: transitive description: name: markdown - sha256: "8e332924094383133cee218b676871f42db2514f1f6ac617b6cf6152a7faab8e" + sha256: acf35edccc0463a9d7384e437c015a3535772e09714cf60e07eeef3a15870dcd url: "https://pub.dev" source: hosted - version: "7.1.0" + version: "7.1.1" matcher: dependency: transitive description: @@ -490,10 +490,10 @@ packages: dependency: transitive description: name: path_provider_foundation - sha256: "1995d88ec2948dac43edf8fe58eb434d35d22a2940ecee1a9fefcd62beee6eb3" + sha256: "916731ccbdce44d545414dd9961f26ba5fbaa74bcbb55237d8e65a623a8c7297" url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.2.4" path_provider_linux: dependency: transitive description: @@ -522,34 +522,34 @@ packages: dependency: "direct main" description: name: permission_handler - sha256: "415af30ba76a84faccfe1eb251fe1e4fdc790f876924c65ad7d6ed7a1404bcd6" + sha256: "63e5216aae014a72fe9579ccd027323395ce7a98271d9defa9d57320d001af81" url: "https://pub.dev" source: hosted - version: "10.4.2" + version: "10.4.3" permission_handler_android: dependency: transitive description: name: permission_handler_android - sha256: "3b61f3da3b1c83bc3fb6a2b431e8dab01d0e5b45f6a3d9c7609770ec88b2a89e" + sha256: c0c9754479a4c4b1c1f3862ddc11930c9b3f03bef2816bb4ea6eed1e13551d6f url: "https://pub.dev" source: hosted - version: "10.3.0" + version: "10.3.2" permission_handler_apple: dependency: transitive description: name: permission_handler_apple - sha256: "7a187b671a39919462af2b5e813148365b71a615979165a119868d667fe90c03" + sha256: "99e220bce3f8877c78e4ace901082fb29fa1b4ebde529ad0932d8d664b34f3f5" url: "https://pub.dev" source: hosted - version: "9.1.3" + version: "9.1.4" permission_handler_platform_interface: dependency: transitive description: name: permission_handler_platform_interface - sha256: "463a07cb7cc6c758a7a1c7da36ce666bb80a0b4b5e92df0fa36872e0ed456993" + sha256: "7c6b1500385dd1d2ca61bb89e2488ca178e274a69144d26bbd65e33eae7c02a9" url: "https://pub.dev" source: hosted - version: "3.11.1" + version: "3.11.3" permission_handler_windows: dependency: transitive description: @@ -590,14 +590,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.7.3" - process: - dependency: transitive - description: - name: process - sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" - url: "https://pub.dev" - source: hosted - version: "4.2.4" provider: dependency: "direct main" description: @@ -642,10 +634,10 @@ packages: dependency: transitive description: name: shared_preferences_foundation - sha256: b046999bf0ff58f04c364491bb803dcfa8f42e47b19c75478f53d323684a8cc1 + sha256: f39696b83e844923b642ce9dd4bd31736c17e697f6731a5adf445b1274cf3cd4 url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" shared_preferences_linux: dependency: transitive description: @@ -807,10 +799,10 @@ packages: dependency: transitive description: name: url_launcher_macos - sha256: "91ee3e75ea9dadf38036200c5d3743518f4a5eb77a8d13fda1ee5764373f185e" + sha256: "1c4fdc0bfea61a70792ce97157e5cc17260f61abbe4f39354513f39ec6fd73b1" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.6" url_launcher_platform_interface: dependency: transitive description: @@ -863,26 +855,26 @@ packages: dependency: transitive description: name: webview_flutter_android - sha256: "1c93e96f3069bacdc734fad6b7e1d3a480fd516a3ae5b8858becf7f07515a2f3" + sha256: "27ad6a99c4b2d5e1ffd2b993a10f738b6b4979f139b4d64c34ac511595fcd748" url: "https://pub.dev" source: hosted - version: "3.8.2" + version: "3.9.0" webview_flutter_platform_interface: dependency: transitive description: name: webview_flutter_platform_interface - sha256: "656e2aeaef318900fffd21468b6ddc7958c7092a642f0e7220bac328b70d4a81" + sha256: "564ef378cafc1a0e29f1d76ce175ef517a0a6115875dff7b43fccbef2b0aeb30" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.4.0" webview_flutter_wkwebview: dependency: transitive description: name: webview_flutter_wkwebview - sha256: a8d7e8b4be2a79e83b70235369971ec97d14df4cdbb40d305a8eeae67d8e6432 + sha256: "369fdf6160944a7db660ff15fa048c2bd681b09557907beaef1f95e8557d21dc" url: "https://pub.dev" source: hosted - version: "3.6.2" + version: "3.7.0" win32: dependency: transitive description: @@ -903,10 +895,10 @@ packages: dependency: transitive description: name: xdg_directories - sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1 + sha256: e0b1147eec179d3911f1f19b59206448f78195ca1d20514134e10641b7d7fbff url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.0.1" xml: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 2c02964..37e0533 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.13.14+178 # When changing this, update the tag in main() accordingly +version: 0.13.15+179 # When changing this, update the tag in main() accordingly environment: sdk: '>=2.18.2 <3.0.0'