diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 9656abb1..304b7eec 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -660,7 +660,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 824; + CURRENT_PROJECT_VERSION = 827; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -670,7 +670,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.824; + MARKETING_VERSION = 1.0.827; 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 = 824; + CURRENT_PROJECT_VERSION = 827; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -806,7 +806,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.824; + MARKETING_VERSION = 1.0.827; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -824,7 +824,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 824; + CURRENT_PROJECT_VERSION = 827; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -834,7 +834,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.824; + MARKETING_VERSION = 1.0.827; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -855,7 +855,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 824; + CURRENT_PROJECT_VERSION = 827; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -868,7 +868,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.824; + MARKETING_VERSION = 1.0.827; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; @@ -894,7 +894,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 824; + CURRENT_PROJECT_VERSION = 827; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -907,7 +907,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.824; + MARKETING_VERSION = 1.0.827; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -930,7 +930,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 824; + CURRENT_PROJECT_VERSION = 827; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -943,7 +943,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.824; + MARKETING_VERSION = 1.0.827; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -966,7 +966,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 824; + CURRENT_PROJECT_VERSION = 827; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -978,7 +978,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.824; + MARKETING_VERSION = 1.0.827; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; @@ -1007,7 +1007,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 824; + CURRENT_PROJECT_VERSION = 827; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -1019,7 +1019,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.824; + MARKETING_VERSION = 1.0.827; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_NAME = ServerBox; @@ -1045,7 +1045,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 824; + CURRENT_PROJECT_VERSION = 827; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -1057,7 +1057,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.824; + MARKETING_VERSION = 1.0.827; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_NAME = ServerBox; diff --git a/lib/core/extension/stringx.dart b/lib/core/extension/stringx.dart index db762e28..30818685 100644 --- a/lib/core/extension/stringx.dart +++ b/lib/core/extension/stringx.dart @@ -33,4 +33,4 @@ extension StringX on String { extension StringXX on String? { String? get selfIfNotNullEmpty => this?.isEmpty == true ? null : this; -} +} diff --git a/lib/core/persistant_store.dart b/lib/core/persistant_store.dart index e1afe8b6..9f4d886c 100644 --- a/lib/core/persistant_store.dart +++ b/lib/core/persistant_store.dart @@ -61,16 +61,12 @@ class PersistentStore { String key, List defaultValue, { bool updateLastModified = true, - T Function(dynamic val)? decoder, - dynamic Function(T val)? encoder, }) { return _StoreListProperty( box, key, defaultValue, updateLastModified: updateLastModified, - encoder: encoder, - decoder: decoder, ); } } @@ -123,16 +119,12 @@ class _StoreProperty implements StorePropertyBase { this._key, this.defaultValue, { this.updateLastModified = true, - this.decoder, - this.encoder, }); final Box _box; final String _key; T defaultValue; bool updateLastModified; - final T Function(dynamic val)? decoder; - final dynamic Function(T val)? encoder; @override ValueListenable listenable() { @@ -141,15 +133,9 @@ class _StoreProperty implements StorePropertyBase { @override T fetch() { - final stored = _box.get(_key); - if (stored == null || stored is! T) { - try { - if (decoder != null) { - return decoder!(stored); - } - } catch (_) { - _logger.warning('Failed to decode "$_key"'); - } + final stored = _box.get(_key, defaultValue: defaultValue); + if (stored is! T) { + _logger.warning('StoreProperty("$_key") is: ${stored.runtimeType}'); return defaultValue; } return stored; @@ -158,9 +144,6 @@ class _StoreProperty implements StorePropertyBase { @override Future put(T value) { if (updateLastModified) _box.updateLastModified(); - if (encoder != null) { - return _box.put(_key, encoder!(value)); - } return _box.put(_key, value); } @@ -176,16 +159,12 @@ class _StoreListProperty implements StorePropertyBase> { this._key, this.defaultValue, { this.updateLastModified = true, - this.decoder, - this.encoder, }); final Box _box; final String _key; List defaultValue; bool updateLastModified; - final T Function(dynamic val)? decoder; - final dynamic Function(T val)? encoder; @override ValueListenable> listenable() { @@ -195,26 +174,21 @@ class _StoreListProperty implements StorePropertyBase> { @override List fetch() { final val = _box.get(_key, defaultValue: defaultValue)!; - if (val is! List) { - throw Exception('StoreListProperty("$_key") is: ${val.runtimeType}'); - } - if (decoder != null) { - try { - return List.from(val.map(decoder!)); - } catch (_) { - _logger.warning('Failed to decode "$_key"'); - return defaultValue; + try { + if (val is! List) { + final exception = 'StoreListProperty("$_key") is: ${val.runtimeType}'; + _logger.warning(exception); + throw Exception(exception); } + return List.from(val); + } catch (_) { + return defaultValue; } - return List.from(val); } @override Future put(List value) { if (updateLastModified) _box.updateLastModified(); - if (encoder != null) { - return _box.put(_key, value.map(encoder!).toList()); - } return _box.put(_key, value); } diff --git a/lib/data/model/server/server.ext.dart b/lib/data/model/server/server.ext.dart index c0535084..d1372390 100644 --- a/lib/data/model/server/server.ext.dart +++ b/lib/data/model/server/server.ext.dart @@ -36,4 +36,4 @@ extension ServerX on Server { return status.err ?? l10n.serverTabFailed; } } -} \ No newline at end of file +} diff --git a/lib/data/model/server/server_private_info.dart b/lib/data/model/server/server_private_info.dart index 4832de88..14f8df94 100644 --- a/lib/data/model/server/server_private_info.dart +++ b/lib/data/model/server/server_private_info.dart @@ -122,7 +122,7 @@ class ServerPrivateInfo { pwd != old.pwd || keyId != old.keyId || alterUrl != old.alterUrl || - jumpId != old.jumpId || + jumpId != old.jumpId || custom?.cmds != old.custom?.cmds; } diff --git a/lib/data/res/build_data.dart b/lib/data/res/build_data.dart index 54c4620e..84831cc9 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 = 824; - static const String engine = "3.19.3"; - static const String buildAt = "2024-03-23 10:51:07"; - static const int modifications = 6; - static const int script = 41; + static const int build = 827; + static const String engine = "3.19.4"; + static const String buildAt = "2024-03-27 09:52:08"; + static const int modifications = 7; + static const int script = 42; } diff --git a/lib/view/page/server/detail.dart b/lib/view/page/server/detail.dart index 405b96bf..1939d2b4 100644 --- a/lib/view/page/server/detail.dart +++ b/lib/view/page/server/detail.dart @@ -718,6 +718,7 @@ class _ServerDetailPageState extends State } Widget _buildCustom(ServerStatus ss) { + if (ss.customCmds.isEmpty) return UIs.placeholder; return CardX( child: ExpandTile( leading: const Icon(MingCute.command_line, size: 17), diff --git a/lib/view/page/server/tab.dart b/lib/view/page/server/tab.dart index 56f2101a..9e4938b2 100644 --- a/lib/view/page/server/tab.dart +++ b/lib/view/page/server/tab.dart @@ -347,7 +347,8 @@ class _ServerPageState extends State ), ), ); - } else if (!(s.spi.autoConnect ?? true) && s.state == ServerState.disconnected) { + } else if (!(s.spi.autoConnect ?? true) && + s.state == ServerState.disconnected) { rightCorner = InkWell( onTap: () => Pros.server.refresh(spi: s.spi), child: const Padding( diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 9edfd374..ffe70994 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 = 824; + CURRENT_PROJECT_VERSION = 827; 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.824; + MARKETING_VERSION = 1.0.827; 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 = 824; + CURRENT_PROJECT_VERSION = 827; 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.824; + MARKETING_VERSION = 1.0.827; 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 = 824; + CURRENT_PROJECT_VERSION = 827; 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.824; + MARKETING_VERSION = 1.0.827; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "Server Box"; PROVISIONING_PROFILE_SPECIFIER = "";