diff --git a/flutter/lib/common.dart b/flutter/lib/common.dart index accbdf8df..13d0f2e60 100644 --- a/flutter/lib/common.dart +++ b/flutter/lib/common.dart @@ -1307,8 +1307,10 @@ bool callUniLinksUriHandler(Uri uri) { // new connection if (uri.authority == "connection" && uri.path.startsWith("/new/")) { final peerId = uri.path.substring("/new/".length); + var param = uri.queryParameters; + String? switch_uuid = param["switch_uuid"]; Future.delayed(Duration.zero, () { - rustDeskWinManager.newRemoteDesktop(peerId); + rustDeskWinManager.newRemoteDesktop(peerId, switch_uuid: switch_uuid); }); return true; } diff --git a/flutter/lib/models/model.dart b/flutter/lib/models/model.dart index 061c3293f..95ecde6e9 100644 --- a/flutter/lib/models/model.dart +++ b/flutter/lib/models/model.dart @@ -199,12 +199,6 @@ class FfiModel with ChangeNotifier { parent.target?.serverModel.setShowElevation(show); } else if (name == 'cancel_msgbox') { cancelMsgBox(evt, peerId); - } else if (name == 'switch_sides') { - final peer_id = evt['peer_id'].toString(); - final uuid = evt['uuid'].toString(); - Future.delayed(Duration.zero, () { - rustDeskWinManager.newRemoteDesktop(peer_id, switch_uuid: uuid); - }); } else if (name == 'switch_back') { final peer_id = evt['peer_id'].toString(); await bind.sessionSwitchSides(id: peer_id); diff --git a/src/core_main.rs b/src/core_main.rs index 9083efe0e..76795576e 100644 --- a/src/core_main.rs +++ b/src/core_main.rs @@ -298,6 +298,13 @@ fn core_main_invoke_new_connection(mut args: std::env::Args) -> Option Option { - crate::flutter::switch_sides(&self.lr.my_id, &s.uuid); - return false; + if let Ok(uuid) = uuid::Uuid::from_slice(&s.uuid.to_vec()[..]) { + crate::run_me(vec![ + "--connect", + &self.lr.my_id, + "--switch_uuid", + uuid.to_string().as_ref(), + ]) + .ok(); + return false; + } } _ => {} },