From b80bf51a611a44b24ddb54fb4fe46263f60f4db3 Mon Sep 17 00:00:00 2001 From: lollipopkit Date: Tue, 16 Apr 2024 00:07:00 +0800 Subject: [PATCH] new: update in browser (#337) --- ios/Runner.xcodeproj/project.pbxproj | 36 ++++++++--------- lib/core/update.dart | 54 ++++++++++++++++++++++++++ lib/data/res/build_data.dart | 4 +- lib/data/res/github_id.dart | 2 +- lib/data/store/setting.dart | 5 +++ lib/l10n/app_de.arb | 3 ++ lib/l10n/app_en.arb | 3 ++ lib/l10n/app_es.arb | 3 ++ lib/l10n/app_fr.arb | 3 ++ lib/l10n/app_id.arb | 3 ++ lib/l10n/app_ja.arb | 3 ++ lib/l10n/app_nl.arb | 3 ++ lib/l10n/app_pt.arb | 3 ++ lib/l10n/app_ru.arb | 3 ++ lib/l10n/app_zh.arb | 3 ++ lib/l10n/app_zh_tw.arb | 3 ++ lib/view/page/setting/entry.dart | 5 ++- macos/Runner.xcodeproj/project.pbxproj | 12 +++--- 18 files changed, 123 insertions(+), 28 deletions(-) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index a86fe19c..01f6a43f 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -672,7 +672,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 852; + CURRENT_PROJECT_VERSION = 859; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -682,7 +682,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.852; + MARKETING_VERSION = 1.0.859; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -808,7 +808,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 852; + CURRENT_PROJECT_VERSION = 859; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -818,7 +818,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.852; + MARKETING_VERSION = 1.0.859; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -836,7 +836,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 852; + CURRENT_PROJECT_VERSION = 859; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -846,7 +846,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.852; + MARKETING_VERSION = 1.0.859; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -867,7 +867,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 852; + CURRENT_PROJECT_VERSION = 859; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -880,7 +880,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.852; + MARKETING_VERSION = 1.0.859; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; @@ -906,7 +906,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 852; + CURRENT_PROJECT_VERSION = 859; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -919,7 +919,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.852; + MARKETING_VERSION = 1.0.859; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -942,7 +942,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 852; + CURRENT_PROJECT_VERSION = 859; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -955,7 +955,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.852; + MARKETING_VERSION = 1.0.859; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -978,7 +978,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 852; + CURRENT_PROJECT_VERSION = 859; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -990,7 +990,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.852; + MARKETING_VERSION = 1.0.859; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; @@ -1019,7 +1019,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 852; + CURRENT_PROJECT_VERSION = 859; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -1031,7 +1031,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.852; + MARKETING_VERSION = 1.0.859; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_NAME = ServerBox; @@ -1057,7 +1057,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 852; + CURRENT_PROJECT_VERSION = 859; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -1069,7 +1069,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.852; + MARKETING_VERSION = 1.0.859; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_NAME = ServerBox; diff --git a/lib/core/update.dart b/lib/core/update.dart index e7f5a77e..8b7351e3 100644 --- a/lib/core/update.dart +++ b/lib/core/update.dart @@ -3,6 +3,7 @@ import 'dart:io'; import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:r_upgrade/r_upgrade.dart'; +import 'package:toolbox/core/extension/context/common.dart'; import 'package:toolbox/core/extension/context/dialog.dart'; import 'package:toolbox/core/extension/context/locale.dart'; import 'package:toolbox/core/extension/context/snackbar.dart'; @@ -14,6 +15,8 @@ import 'package:toolbox/data/res/build_data.dart'; import 'package:toolbox/data/res/logger.dart'; import 'package:toolbox/data/res/path.dart'; import 'package:toolbox/data/res/provider.dart'; +import 'package:toolbox/data/res/store.dart'; +import 'package:toolbox/data/res/ui.dart'; import 'package:toolbox/data/service/app.dart'; import 'package:toolbox/locator.dart'; @@ -83,6 +86,57 @@ Future _doUpdate(AppUpdate update, BuildContext context) async { } if (isAndroid) { + final inAppUpdate = Stores.setting.inAppUpdate; + var remember = true; + if (inAppUpdate.fetch() == 0) { + final cancel = await context.showRoundDialog( + title: Text(l10n.attention), + child: StatefulBuilder(builder: (_, setState) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text(l10n.inAppUpdate, style: UIs.text15Bold), + CheckboxListTile( + contentPadding: EdgeInsets.zero, + value: remember, + onChanged: (v) => setState(() => remember = v ?? true), + title: Text(l10n.rememberChoice), + ), + ], + ); + }), + actions: [ + TextButton( + onPressed: () => context.pop(true), child: Text(l10n.cancel)), + TextButton( + onPressed: () { + if (remember) { + inAppUpdate.put(1); + } + context.pop(); + }, + child: const Text('App'), + ), + TextButton( + onPressed: () { + if (remember) { + inAppUpdate.put(2); + } + context.pop(); + }, + child: Text(l10n.browser), + ), + ], + ); + if (cancel != false) { + return; + } + } + if (inAppUpdate.fetch() == 2) { + await openUrl(url); + return; + } final fileName = url.split('/').last; await RUpgrade.upgrade(url, fileName: fileName); } else if (isIOS) { diff --git a/lib/data/res/build_data.dart b/lib/data/res/build_data.dart index 17677209..11962b9a 100644 --- a/lib/data/res/build_data.dart +++ b/lib/data/res/build_data.dart @@ -4,7 +4,7 @@ class BuildData { static const String name = "ServerBox"; static const int build = 852; static const String engine = "3.19.5"; - static const String buildAt = "2024-04-10 23:54:34"; - static const int modifications = 5; + static const String buildAt = "2024-04-15 09:41:06"; + static const int modifications = 4; static const int script = 44; } diff --git a/lib/data/res/github_id.dart b/lib/data/res/github_id.dart index b2c30bfc..f850feb4 100644 --- a/lib/data/res/github_id.dart +++ b/lib/data/res/github_id.dart @@ -15,7 +15,7 @@ abstract final class GithubIds { 'dccif', 'QazCetelic', }; - + static const participants = { 'jaychoubaby', 'fecture', diff --git a/lib/data/store/setting.dart b/lib/data/store/setting.dart index dd8a418b..0c92a70d 100644 --- a/lib/data/store/setting.dart +++ b/lib/data/store/setting.dart @@ -267,6 +267,11 @@ class SettingStore extends PersistentStore { late final displayCpuIndex = property('displayCpuIndex', true); + /// Some Android device are unable display the download progress notification, + /// open url in external browser. + /// 0 -> unset, 1 -> true, 2 -> false + late final inAppUpdate = property('inAppUpdate', 0); + // Never show these settings for users // // ------BEGIN------ diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index aac5ce9d..d77078aa 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -27,6 +27,7 @@ "bgRun": "Hintergrundaktualisierung", "bgRunTip": "Dieser Schalter bedeutet nur, dass die App versuchen wird, im Hintergrund zu laufen. Ob sie im Hintergrund laufen kann, hängt davon ab, ob die Berechtigungen aktiviert sind oder nicht. Bei nativem Android deaktivieren Sie bitte \"Batterieoptimierung\" in dieser App, und bei miui ändern Sie bitte die Energiesparrichtlinie auf \"Unbegrenzt\".", "bioAuth": "Biozertifizierung", + "browser": "Browser", "bulkImportServers": "Server im Batch importieren", "bulkImportServersTip": "Sie können das [Format]({url}) hier finden.", "canPullRefresh": "Danach: herunterziehen zum Aktualisieren", @@ -127,6 +128,7 @@ "image": "Image", "imagesList": "Images", "import": "Importieren", + "inAppUpdate": "Im App aktualisieren? Andernfalls mit einem Browser herunterladen.", "inner": "Eingebaut", "inputDomainHere": "Domain eingeben", "install": "install", @@ -217,6 +219,7 @@ "pwd": "Passwort", "read": "Lesen", "reboot": "Neustart", + "rememberChoice": "Auswahl merken", "rememberPwdInMem": "Passwort im Speicher behalten", "rememberPwdInMemTip": "Für Container, Aufhängen usw.", "remotePath": "Entfernte Pfade", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 668f6570..9400af35 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -27,6 +27,7 @@ "bgRun": "Run in backgroud", "bgRunTip": "This switch only means the program will try to run in the background, whether it can run in the background depends on whether the permission is enabled or not. For native Android, please disable \"Battery Optimization\" in this app, and for miui, please change the power saving policy to \"Unlimited\".", "bioAuth": "Biometric auth", + "browser": "Browser", "bulkImportServers": "Batch import servers", "bulkImportServersTip": "You can find the [format]({url}) here.", "canPullRefresh": "You can pull to refresh.", @@ -127,6 +128,7 @@ "image": "Image", "imagesList": "Images list", "import": "Import", + "inAppUpdate": "Update within the app? Otherwise, download using a browser.", "inner": "Inner", "inputDomainHere": "Input Domain here", "install": "install", @@ -217,6 +219,7 @@ "pwd": "Password", "read": "Read", "reboot": "Reboot", + "rememberChoice": "Remember the selection", "rememberPwdInMem": "Remember password in memory", "rememberPwdInMemTip": "Used for containers, suspending, etc.", "remotePath": "Remote path", diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 8e5e5f1e..00405f96 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -27,6 +27,7 @@ "bgRun": "Ejecución en segundo plano", "bgRunTip": "Este interruptor solo indica que la aplicación intentará correr en segundo plano, si puede hacerlo o no depende de si tiene el permiso correspondiente. En Android puro, por favor desactiva la “optimización de batería” para esta app, en MIUI por favor cambia la estrategia de ahorro de energía a “Sin restricciones”.", "bioAuth": "Autenticación biométrica", + "browser": "Navegador", "bulkImportServers": "Importar servidores en masa", "bulkImportServersTip": "Puede encontrar el [formato]]({url}) aquí.", "canPullRefresh": "Se puede deslizar hacia abajo para refrescar", @@ -127,6 +128,7 @@ "image": "Imagen", "imagesList": "Lista de imágenes", "import": "Importar", + "inAppUpdate": "¿Actualizar dentro de la app? De lo contrario, descargar usando un navegador.", "inner": "Interno", "inputDomainHere": "Introduce el dominio aquí", "install": "Instalar", @@ -217,6 +219,7 @@ "pwd": "Contraseña", "read": "Leer", "reboot": "Reiniciar", + "rememberChoice": "Recordar la selección", "rememberPwdInMem": "Recordar contraseña en la memoria", "rememberPwdInMemTip": "Utilizado para contenedores, suspensión, etc.", "remotePath": "Ruta remota", diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index 1aa0c418..8b194ca5 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -27,6 +27,7 @@ "bgRun": "Exécuter en arrière-plan", "bgRunTip": "Ce commutateur signifie seulement que l'application essaiera de fonctionner en arrière-plan. La possibilité de fonctionner en arrière-plan dépend de l'activation ou non des autorisations. Pour Android, veuillez désactiver l'option \"Optimisation de la batterie\" dans cette application, et pour Miui, veuillez changer la politique d'économie d'énergie en \"Illimité\".", "bioAuth": "Authentification biométrique", + "browser": "Navigateur", "bulkImportServers": "Importer des serveurs en lot", "bulkImportServersTip": "Vous pouvez trouver le [format]({url}) ici.", "canPullRefresh": "Vous pouvez tirer pour actualiser.", @@ -127,6 +128,7 @@ "image": "Image", "imagesList": "Liste d'images", "import": "Importer", + "inAppUpdate": "Mettre à jour dans l'application ? Sinon, télécharger via un navigateur.", "inner": "Interne", "inputDomainHere": "Saisissez le domaine ici", "install": "installer", @@ -217,6 +219,7 @@ "pwd": "Mot de passe", "read": "Lire", "reboot": "Redémarrer", + "rememberChoice": "Se souvenir de la sélection", "rememberPwdInMem": "Mémoriser le mot de passe en mémoire", "rememberPwdInMemTip": "Utilisé pour les conteneurs, la suspension, etc.", "remotePath": "Chemin distant", diff --git a/lib/l10n/app_id.arb b/lib/l10n/app_id.arb index fe3da8e5..f17d1a7f 100644 --- a/lib/l10n/app_id.arb +++ b/lib/l10n/app_id.arb @@ -27,6 +27,7 @@ "bgRun": "Jalankan di Backgroud", "bgRunTip": "Sakelar ini hanya berarti aplikasi akan mencoba berjalan di latar belakang, apakah aplikasi dapat berjalan di latar belakang tergantung pada apakah izin diaktifkan atau tidak. Untuk Android asli, nonaktifkan \"Pengoptimalan Baterai\" di aplikasi ini, dan untuk miui, ubah kebijakan penghematan daya ke \"Tidak Terbatas\".", "bioAuth": "Biosertifikasi", + "browser": "Peramban", "bulkImportServers": "Impor server secara massal", "bulkImportServersTip": "Anda dapat menemukan [format]({url}) di sini.", "canPullRefresh": "Anda dapat menarik untuk menyegarkan.", @@ -127,6 +128,7 @@ "image": "Gambar", "imagesList": "Daftar gambar", "import": "Impor", + "inAppUpdate": "Perbarui di dalam aplikasi? Jika tidak, unduh menggunakan browser.", "inner": "Batin", "inputDomainHere": "Input domain di sini", "install": "Install", @@ -217,6 +219,7 @@ "pwd": "Kata sandi", "read": "Baca", "reboot": "Reboot", + "rememberChoice": "Ingat pilihan", "rememberPwdInMem": "Ingat kata sandi di dalam memori", "rememberPwdInMemTip": "Digunakan untuk kontainer, menangguhkan, dll.", "remotePath": "Jalur jarak jauh", diff --git a/lib/l10n/app_ja.arb b/lib/l10n/app_ja.arb index 4bea1042..364ef0ee 100644 --- a/lib/l10n/app_ja.arb +++ b/lib/l10n/app_ja.arb @@ -27,6 +27,7 @@ "bgRun": "バックグラウンド実行", "bgRunTip": "このスイッチはプログラムがバックグラウンドで実行を試みることを意味しますが、実際にバックグラウンドで実行できるかどうかは、権限が有効になっているかに依存します。ネイティブAndroidでは、このアプリの「バッテリー最適化」をオフにしてください。MIUIでは、省エネモードを「無制限」に変更してください。", "bioAuth": "生体認証", + "browser": "ブラウザ", "bulkImportServers": "サーバーを一括インポートする", "bulkImportServersTip": "[こちら]({url})でフォーマットを見つけることができます", "canPullRefresh": "引っ張って更新できます", @@ -127,6 +128,7 @@ "image": "イメージ", "imagesList": "イメージリスト", "import": "インポート", + "inAppUpdate": "アプリ内で更新しますか?それ以外の場合は、ブラウザを使用してダウンロードしてください。", "inner": "内蔵", "inputDomainHere": "ここにドメインを入力", "install": "インストール", @@ -217,6 +219,7 @@ "pwd": "パスワード", "read": "読み取り", "reboot": "再起動", + "rememberChoice": "選択を記憶する", "rememberPwdInMem": "メモリにパスワードを記憶する", "rememberPwdInMemTip": "コンテナ、一時停止などに使用されます。", "remotePath": "リモートパス", diff --git a/lib/l10n/app_nl.arb b/lib/l10n/app_nl.arb index 70cbc959..7db8a7a9 100644 --- a/lib/l10n/app_nl.arb +++ b/lib/l10n/app_nl.arb @@ -27,6 +27,7 @@ "bgRun": "Uitvoeren op de achtergrond", "bgRunTip": "Deze schakelaar betekent alleen dat het programma zal proberen op de achtergrond uit te voeren, of het in de achtergrond kan worden uitgevoerd, hangt af van of de toestemming is ingeschakeld of niet. Voor native Android, schakel \"Batterijoptimalisatie\" uit in deze app, en voor miui, wijzig de energiebesparingsbeleid naar \"Onbeperkt\".", "bioAuth": "Biometrische authenticatie", + "browser": "Browser", "bulkImportServers": "Servers batchgewijs importeren", "bulkImportServersTip": "U kunt het [formaat]({url}) hier vinden.", "canPullRefresh": "Je kunt verversen door te slepen.", @@ -127,6 +128,7 @@ "image": "Afbeelding", "imagesList": "Lijst met afbeeldingen", "import": "Importeren", + "inAppUpdate": "Bijwerken binnen de app? Anders downloaden via een browser.", "inner": "Intern", "inputDomainHere": "Voer hier domein in", "install": "Installeren", @@ -216,6 +218,7 @@ "pwd": "Wachtwoord", "read": "Lezen", "reboot": "Herstart", + "rememberChoice": "Selectie onthouden", "rememberPwdInMem": "Wachtwoord onthouden in geheugen", "rememberPwdInMemTip": "Gebruikt voor containers, opschorting, enz.", "remotePath": "Extern pad", diff --git a/lib/l10n/app_pt.arb b/lib/l10n/app_pt.arb index 048d38ed..2a1996e0 100644 --- a/lib/l10n/app_pt.arb +++ b/lib/l10n/app_pt.arb @@ -27,6 +27,7 @@ "bgRun": "Execução em segundo plano", "bgRunTip": "Este interruptor indica que o programa tentará rodar em segundo plano, mas a capacidade de fazer isso depende das permissões concedidas. No Android nativo, desative a 'Otimização de bateria' para este app, no MIUI, altere a estratégia de economia de energia para 'Sem restrições'.", "bioAuth": "Autenticação biométrica", + "browser": "Navegador", "bulkImportServers": "Importar servidores em lote", "bulkImportServersTip": "Você pode encontrar o [formato]({url}) aqui.", "canPullRefresh": "Pode puxar para atualizar", @@ -127,6 +128,7 @@ "image": "Imagem", "imagesList": "Lista de imagens", "import": "Importar", + "inAppUpdate": "Atualizar dentro do app? Caso contrário, baixe usando um navegador.", "inner": "Interno", "inputDomainHere": "Insira o domínio aqui", "install": "Instalar", @@ -217,6 +219,7 @@ "pwd": "Senha", "read": "Leitura", "reboot": "Reiniciar", + "rememberChoice": "Lembrar da seleção", "rememberPwdInMem": "Lembrar senha na memória", "rememberPwdInMemTip": "Usado para contêineres, suspensão, etc.", "remotePath": "Caminho remoto", diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index 7bdae73e..6fa57457 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -27,6 +27,7 @@ "bgRun": "работа в фоновом режиме", "bgRunTip": "Этот переключатель означает, что программа будет пытаться работать в фоновом режиме, но фактическое выполнение зависит от того, включено ли разрешение. Для нативного Android отключите «Оптимизацию батареи» для этого приложения, для MIUI измените стратегию энергосбережения на «Без ограничений».", "bioAuth": "биометрическая аутентификация", + "browser": "Браузер", "bulkImportServers": "Пакетный импорт серверов", "bulkImportServersTip": "[Формат]({url}) можно найти здесь.", "canPullRefresh": "можно обновить, потянув вниз", @@ -127,6 +128,7 @@ "image": "образ", "imagesList": "список образов", "import": "импорт", + "inAppUpdate": "Обновить в приложении? В противном случае загрузите с помощью браузера.", "inner": "встроенный", "inputDomainHere": "введите домен здесь", "install": "установить", @@ -217,6 +219,7 @@ "pwd": "пароль", "read": "чтение", "reboot": "перезагрузка", + "rememberChoice": "Запомнить выбор", "rememberPwdInMem": "Запомнить пароль в памяти", "rememberPwdInMemTip": "Используется для контейнеров, приостановки и т. д.", "remotePath": "удаленный путь", diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index a582725f..a2ef330e 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -27,6 +27,7 @@ "bgRun": "后台运行", "bgRunTip": "此开关只代表程序会尝试在后台运行,具体能否后台运行取决于是否开启了权限。原生 Android 请关闭本 App 的“电池优化”,MIUI 请修改省电策略为“无限制”。", "bioAuth": "生物认证", + "browser": "浏览器", "bulkImportServers": "批量导入服务器", "bulkImportServersTip": "可以在这里找到[格式]({url})", "canPullRefresh": "可以下拉刷新", @@ -127,6 +128,7 @@ "image": "镜像", "imagesList": "镜像列表", "import": "导入", + "inAppUpdate": "在App内更新?否则使用浏览器下载", "inner": "内置", "inputDomainHere": "在这里输入域名", "install": "安装", @@ -217,6 +219,7 @@ "pwd": "密码", "read": "读", "reboot": "重启", + "rememberChoice": "记住选择", "rememberPwdInMem": "在内存中记住密码", "rememberPwdInMemTip": "用于容器、挂起等", "remotePath": "远端路径", diff --git a/lib/l10n/app_zh_tw.arb b/lib/l10n/app_zh_tw.arb index 4c8a7e6c..37bc6f7d 100644 --- a/lib/l10n/app_zh_tw.arb +++ b/lib/l10n/app_zh_tw.arb @@ -27,6 +27,7 @@ "bgRun": "背景運行", "bgRunTip": "此開關只代表程式會嘗試在背景執行,具體能否背景運行取決於是否開啟了權限。 原生 Android 請關閉本 App 的“電池優化”,MIUI 請修改省電策略為“無限制”。", "bioAuth": "生物認證", + "browser": "瀏覽器", "bulkImportServers": "批量導入伺服器", "bulkImportServersTip": "您可以在此處找到[格式]({url})", "canPullRefresh": "可以下拉更新", @@ -127,6 +128,7 @@ "image": "鏡像", "imagesList": "鏡像列表", "import": "導入", + "inAppUpdate": "在App內更新?否則使用瀏覽器下載。", "inner": "內置", "inputDomainHere": "在這裡輸入域名", "install": "安裝", @@ -217,6 +219,7 @@ "pwd": "密碼", "read": "读", "reboot": "重启", + "rememberChoice": "記住選擇", "rememberPwdInMem": "在記憶體中記住密碼", "rememberPwdInMemTip": "用於容器、暫停等", "remotePath": "遠端路徑", diff --git a/lib/view/page/setting/entry.dart b/lib/view/page/setting/entry.dart index 6c64a9af..937433db 100644 --- a/lib/view/page/setting/entry.dart +++ b/lib/view/page/setting/entry.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_highlight/theme_map.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:provider/provider.dart'; +import 'package:toolbox/core/build_mode.dart'; import 'package:toolbox/core/extension/colorx.dart'; import 'package:toolbox/core/extension/context/common.dart'; import 'package:toolbox/core/extension/context/locale.dart'; @@ -205,7 +206,9 @@ class _SettingPageState extends State { return ListTile( title: Text(l10n.autoCheckUpdate), subtitle: Text(display, style: UIs.textGrey), - onTap: () => Funcs.throttle(() => doUpdate(ctx)), + onTap: () => Funcs.throttle( + () => doUpdate(ctx, force: BuildMode.isDebug), + ), trailing: StoreSwitch(prop: _setting.autoCheckAppUpdate), ); }, diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 82dc8243..9968e1d3 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -471,7 +471,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 852; + CURRENT_PROJECT_VERSION = 859; DEVELOPMENT_TEAM = BA88US33G6; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "Server Box"; @@ -481,7 +481,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 1.0.852; + MARKETING_VERSION = 1.0.859; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "Server Box"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -608,7 +608,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 852; + CURRENT_PROJECT_VERSION = 859; DEVELOPMENT_TEAM = BA88US33G6; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "Server Box"; @@ -618,7 +618,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 1.0.852; + MARKETING_VERSION = 1.0.859; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "Server Box"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -638,7 +638,7 @@ "CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application"; CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 852; + CURRENT_PROJECT_VERSION = 859; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=macosx*]" = BA88US33G6; INFOPLIST_FILE = Runner/Info.plist; @@ -649,7 +649,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 1.0.852; + MARKETING_VERSION = 1.0.859; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "Server Box"; PROVISIONING_PROFILE_SPECIFIER = "";