diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index c713fb4e..7520df3b 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -632,7 +632,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 787; + CURRENT_PROJECT_VERSION = 793; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -642,7 +642,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.787; + MARKETING_VERSION = 1.0.793; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -768,7 +768,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 787; + CURRENT_PROJECT_VERSION = 793; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -778,7 +778,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.787; + MARKETING_VERSION = 1.0.793; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -796,7 +796,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 787; + CURRENT_PROJECT_VERSION = 793; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -806,7 +806,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.787; + MARKETING_VERSION = 1.0.793; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -827,7 +827,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 787; + CURRENT_PROJECT_VERSION = 793; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -840,7 +840,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.787; + MARKETING_VERSION = 1.0.793; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; @@ -866,7 +866,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 787; + CURRENT_PROJECT_VERSION = 793; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -879,7 +879,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.787; + MARKETING_VERSION = 1.0.793; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -902,7 +902,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 787; + CURRENT_PROJECT_VERSION = 793; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -915,7 +915,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.787; + MARKETING_VERSION = 1.0.793; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -938,7 +938,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 787; + CURRENT_PROJECT_VERSION = 793; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -950,7 +950,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.787; + MARKETING_VERSION = 1.0.793; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; @@ -979,7 +979,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 787; + CURRENT_PROJECT_VERSION = 793; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -991,7 +991,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.787; + MARKETING_VERSION = 1.0.793; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_NAME = ServerBox; @@ -1017,7 +1017,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 787; + CURRENT_PROJECT_VERSION = 793; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -1029,7 +1029,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.787; + MARKETING_VERSION = 1.0.793; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_NAME = ServerBox; diff --git a/lib/data/res/build_data.dart b/lib/data/res/build_data.dart index 8d9e6fe2..03cc5429 100644 --- a/lib/data/res/build_data.dart +++ b/lib/data/res/build_data.dart @@ -2,9 +2,9 @@ class BuildData { static const String name = "ServerBox"; - static const int build = 787; + static const int build = 793; static const String engine = "3.19.2"; - static const String buildAt = "2024-03-06 16:28:08"; - static const int modifications = 3; + static const String buildAt = "2024-03-08 15:18:32"; + static const int modifications = 2; static const int script = 40; } diff --git a/lib/data/res/url.dart b/lib/data/res/url.dart index 56d6a155..7d8ed491 100644 --- a/lib/data/res/url.dart +++ b/lib/data/res/url.dart @@ -1,5 +1,6 @@ abstract final class Urls { static const resBase = 'https://res.lolli.tech/serverbox'; + static const cdnBase = 'https://cdn.lolli.tech/serverbox'; static const myGithub = 'https://github.com/lollipopkit'; static const appHelp = '$myGithub/flutter_server_box#-help'; static const appWiki = '$myGithub/flutter_server_box/wiki'; diff --git a/lib/data/service/app.dart b/lib/data/service/app.dart index 5f96accc..4a796841 100644 --- a/lib/data/service/app.dart +++ b/lib/data/service/app.dart @@ -1,11 +1,14 @@ import 'package:dio/dio.dart'; +import 'package:toolbox/data/res/store.dart'; import '../model/app/update.dart'; import '../res/url.dart'; class AppService { Future getUpdate() async { - final resp = await Dio().get('${Urls.resBase}/update.json'); + final useCDN = Stores.setting.useCdn.fetch() == 1; + final resp = + await Dio().get('${useCDN ? Urls.cdnBase : Urls.resBase}/update.json'); return AppUpdate.fromJson(resp.data); } } diff --git a/lib/data/store/setting.dart b/lib/data/store/setting.dart index b7ede753..656efdba 100644 --- a/lib/data/store/setting.dart +++ b/lib/data/store/setting.dart @@ -250,6 +250,11 @@ class SettingStore extends PersistentStore { /// when building traffic view on server tab late final ignoreLocalNet = property('ignoreLocalNetIface', true); + /// Use cdn + /// It's recommended to use cdn for non-China users + /// 0: unset, 1: use, 2: not use + late final useCdn = property('useCdn', 0); + // Never show these settings for users // // ------BEGIN------ diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 021c6beb..24696183 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -267,6 +267,8 @@ "upsideDown": "Upside Down", "uptime": "Betriebszeit", "urlOrJson": "URL oder JSON", + "useCdn": "Verwenden von CDN", + "useCdnTip": "Nicht-chinesischen Benutzern wird die Verwendung eines CDN empfohlen. Möchten Sie es verwenden?", "useNoPwd": "Es wird kein Passwort verwendet", "usePodmanByDefault": "Standardmäßige Verwendung von Podman", "used": "Gebraucht", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 6ae5300c..5216ae16 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -267,6 +267,8 @@ "upsideDown": "Upside Down", "uptime": "Uptime", "urlOrJson": "URL or JSON", + "useCdn": "Using CDN", + "useCdnTip": "Non-Chinese users are recommended to use CDN. Would you like to use it?", "useNoPwd": "No password will be used", "usePodmanByDefault": "Defaulting to Podman", "used": "Used", diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index b5dfb8a5..3320bc18 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -267,6 +267,8 @@ "upsideDown": "Invertir arriba por abajo", "uptime": "Tiempo de actividad", "urlOrJson": "URL o JSON", + "useCdn": "Usando CDN", + "useCdnTip": "Se recomienda a los usuarios no chinos utilizar CDN. ¿Le gustaría utilizarlo?", "useNoPwd": "Se usará sin contraseña", "usePodmanByDefault": "Usar Podman por defecto", "used": "Usado", diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index 2261c248..2f814c9f 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -267,6 +267,8 @@ "upsideDown": "À l'envers", "uptime": "Temps de disponibilité", "urlOrJson": "URL ou JSON", + "useCdn": "Utilisation de CDN", + "useCdnTip": "Il est recommandé aux utilisateurs non chinois d'utiliser un CDN. Souhaitez-vous l'utiliser ?", "useNoPwd": "Aucun mot de passe ne sera utilisé", "usePodmanByDefault": "Utiliser Podman par défaut", "used": "Utilisé", diff --git a/lib/l10n/app_id.arb b/lib/l10n/app_id.arb index c0e8a474..44b8df13 100644 --- a/lib/l10n/app_id.arb +++ b/lib/l10n/app_id.arb @@ -267,6 +267,8 @@ "upsideDown": "Terbalik", "uptime": "Uptime", "urlOrJson": "URL atau JSON", + "useCdn": "Menggunakan CDN", + "useCdnTip": "Pengguna non-Cina disarankan menggunakan CDN. Apakah Anda ingin menggunakannya?", "useNoPwd": "Tidak ada kata sandi yang akan digunakan", "usePodmanByDefault": "Menggunakan Podman sebagai bawaan", "used": "Digunakan", diff --git a/lib/l10n/app_ja.arb b/lib/l10n/app_ja.arb index 465079e6..37de97fd 100644 --- a/lib/l10n/app_ja.arb +++ b/lib/l10n/app_ja.arb @@ -267,6 +267,8 @@ "upsideDown": "上下逆転", "uptime": "稼働時間", "urlOrJson": "URLまたはJSON", + "useCdn": "CDNの使用", + "useCdnTip": "中国以外のユーザーにはCDNの使用が推奨されています。ご利用しますか?", "useNoPwd": "パスワードなしで使用します", "usePodmanByDefault": "デフォルトでPodmanを使用", "used": "使用済み", diff --git a/lib/l10n/app_pt.arb b/lib/l10n/app_pt.arb index a9f7d292..24b2774c 100644 --- a/lib/l10n/app_pt.arb +++ b/lib/l10n/app_pt.arb @@ -267,6 +267,8 @@ "upsideDown": "Inverter verticalmente", "uptime": "Tempo de atividade", "urlOrJson": "URL ou JSON", + "useCdn": "Utilizando CDN", + "useCdnTip": "Recomenda-se que usuários não chineses usem CDN. Gostaria de usá-lo?", "useNoPwd": "Será usado sem senha", "usePodmanByDefault": "Usar Podman por padrão", "used": "Usado", diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index 1f8f0203..354bfb8f 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -267,6 +267,8 @@ "upsideDown": "перевернуть", "uptime": "время работы", "urlOrJson": "ссылка или JSON", + "useCdn": "Использование CDN", + "useCdnTip": "Не китайским пользователям рекомендуется использовать CDN. Хотели бы вы его использовать?", "useNoPwd": "будет использоваться без пароля", "usePodmanByDefault": "использовать Podman по умолчанию", "used": "использовано", diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index 538cc500..89d71e88 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -267,6 +267,8 @@ "upsideDown": "上下交换", "uptime": "启动时长", "urlOrJson": "链接或JSON", + "useCdn": "使用CDN", + "useCdnTip": "非中国大陆用户推荐使用CDN,是否使用?", "useNoPwd": "将会使用无密码", "usePodmanByDefault": "默认使用 Podman", "used": "已用", diff --git a/lib/l10n/app_zh_tw.arb b/lib/l10n/app_zh_tw.arb index 2f19c06d..80af5451 100644 --- a/lib/l10n/app_zh_tw.arb +++ b/lib/l10n/app_zh_tw.arb @@ -267,6 +267,8 @@ "upsideDown": "上下交換", "uptime": "啟動時長", "urlOrJson": "鏈接或JSON", + "useCdn": "使用CDN", + "useCdnTip": "非中國大陆用戶建議使用CDN,是否使用?", "useNoPwd": "将使用無密碼", "usePodmanByDefault": "默認使用 Podman", "used": "已用", diff --git a/lib/view/page/home.dart b/lib/view/page/home.dart index 9e043a5d..c7973726 100644 --- a/lib/view/page/home.dart +++ b/lib/view/page/home.dart @@ -7,6 +7,7 @@ import 'package:flutter_markdown/flutter_markdown.dart'; import 'package:get_it/get_it.dart'; import 'package:toolbox/core/channel/bg_run.dart'; import 'package:toolbox/core/channel/home_widget.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/persistant_store.dart'; @@ -325,6 +326,32 @@ ${GithubIds.participants.map((e) => '[$e](${e.url})').join(' ')} await GetIt.I.allReady(); await Pros.server.load(); await Pros.server.refresh(); + + _notifyUseCDN(); + } + + Future _notifyUseCDN() async { + final useCDN = Stores.setting.useCdn.fetch(); + if (useCDN != 0) return; + final use = await context.showRoundDialog( + title: Text(l10n.useCdn), + child: Text(l10n.useCdnTip), + actions: [ + TextButton( + onPressed: () => context.pop(true), + child: Text(l10n.ok), + ), + TextButton( + onPressed: () => context.pop(false), + child: Text(l10n.cancel, style: UIs.textRed), + ), + ], + ); + if (use == true) { + Stores.setting.useCdn.put(1); + } else if (use == false) { + Stores.setting.useCdn.put(2); + } } Future _onLongPressSetting() async { diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 6df66d40..51e07cf3 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -467,7 +467,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 787; + CURRENT_PROJECT_VERSION = 793; DEVELOPMENT_TEAM = BA88US33G6; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "Server Box"; @@ -477,7 +477,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 1.0.787; + MARKETING_VERSION = 1.0.793; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "Server Box"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -604,7 +604,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 787; + CURRENT_PROJECT_VERSION = 793; DEVELOPMENT_TEAM = BA88US33G6; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "Server Box"; @@ -614,7 +614,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 1.0.787; + MARKETING_VERSION = 1.0.793; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "Server Box"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -634,7 +634,7 @@ "CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application"; CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 787; + CURRENT_PROJECT_VERSION = 793; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=macosx*]" = BA88US33G6; INFOPLIST_FILE = Runner/Info.plist; @@ -645,7 +645,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 1.0.787; + MARKETING_VERSION = 1.0.793; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "Server Box"; PROVISIONING_PROFILE_SPECIFIER = "";