From 44f4051d4695579f0cbbd138c67f529fa34fc20f Mon Sep 17 00:00:00 2001 From: GT610 <79314033+GT-610@users.noreply.github.com> Date: Fri, 27 Mar 2026 18:03:27 +0800 Subject: [PATCH] feat (Menu Features): Added a port forwarding button and optimized server storage logic (#1092) * feat (Menu Features): Added a port forwarding button and optimized server storage logic Added the `portForward` option to the `ServerFuncBtn` enumeration to support port forwarding Added duplicate ID checks to `ServerStore` to prevent data conflicts * fix(server): Fixed the update logic for redirect IDs in server storage Prevents updates from being skipped when the ID remains unchanged, ensuring that redirect IDs are mapped correctly * fix(server): Fixed an issue where existing records were not skipped correctly when updating the redirect ID --- lib/data/model/app/menu/server_func.dart | 1 + lib/data/store/server.dart | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/data/model/app/menu/server_func.dart b/lib/data/model/app/menu/server_func.dart index 4ccff487..9c4832cd 100644 --- a/lib/data/model/app/menu/server_func.dart +++ b/lib/data/model/app/menu/server_func.dart @@ -49,6 +49,7 @@ enum ServerFuncBtn { //pkg, snippet, systemd, + portForward, ].map((e) => e.index).toList(); IconData get icon => switch (this) { diff --git a/lib/data/store/server.dart b/lib/data/store/server.dart index ab3a0801..9f70e2c8 100644 --- a/lib/data/store/server.dart +++ b/lib/data/store/server.dart @@ -175,6 +175,7 @@ class ServerStore extends HiveStore { } for (final spi in ss) { + if (get(spi.id) == null) continue; if (spi.jumpId != null && idMap.containsKey(spi.jumpId)) { final newJumpId = idMap[spi.jumpId]!; final newSpi = spi.copyWith(jumpId: newJumpId);