From f34b8411a795ef16208ab1e2ace7e53147c41d3f Mon Sep 17 00:00:00 2001 From: 21pages Date: Tue, 20 Aug 2024 15:34:10 +0800 Subject: [PATCH] Fix new cm tab not replace the old persisted tab (#9127) * This happens when after changing DesktopTab to StatefulWidget, 1.2.7 and 1.3.0 have this problem. * When `addConnection` in server_model.dart is called, the old closed client is removed, the client parameter of buildConnectionCard is new, but client id inside Consumer is old. * The only state in cm page is timer, its value is kept in test. * There may be a better way to solve the ui update. Signed-off-by: 21pages --- flutter/lib/desktop/widgets/tabbar_widget.dart | 7 +++++++ flutter/lib/models/server_model.dart | 4 +++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/flutter/lib/desktop/widgets/tabbar_widget.dart b/flutter/lib/desktop/widgets/tabbar_widget.dart index 0b48b3b92..75ecacbfe 100644 --- a/flutter/lib/desktop/widgets/tabbar_widget.dart +++ b/flutter/lib/desktop/widgets/tabbar_widget.dart @@ -552,6 +552,13 @@ class _DesktopTabState extends State controller: state.value.pageController, physics: NeverScrollableScrollPhysics(), children: () { + if (DesktopTabType.cm == tabType) { + // Fix when adding a new tab still showing closed tabs with the same peer id, which would happen after the DesktopTab was stateful. + return state.value.tabs.map((tab) { + return tab.page; + }).toList(); + } + /// to-do refactor, separate connection state and UI state for remote session. /// [workaround] PageView children need an immutable list, after it has been passed into PageView final tabLen = state.value.tabs.length; diff --git a/flutter/lib/models/server_model.dart b/flutter/lib/models/server_model.dart index 613fee6ad..1d800ef69 100644 --- a/flutter/lib/models/server_model.dart +++ b/flutter/lib/models/server_model.dart @@ -826,7 +826,7 @@ class Client { Map toJson() { final Map data = {}; data['id'] = id; - data['is_start'] = authorized; + data['authorized'] = authorized; data['is_file_transfer'] = isFileTransfer; data['port_forward'] = portForward; data['name'] = name; @@ -840,6 +840,8 @@ class Client { data['block_input'] = blockInput; data['disconnected'] = disconnected; data['from_switch'] = fromSwitch; + data['in_voice_call'] = inVoiceCall; + data['incoming_voice_call'] = incomingVoiceCall; return data; }