From fa2407d857648cefaeecb9a62d2e0bf390db0f87 Mon Sep 17 00:00:00 2001 From: rustdesk Date: Thu, 7 Apr 2022 22:13:30 +0800 Subject: [PATCH] fix remote_dir --- src/client.rs | 21 ++++++++++++++++++++- src/ui/remote.rs | 5 ++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/client.rs b/src/client.rs index 4b0b7147c..fdc9c6846 100644 --- a/src/client.rs +++ b/src/client.rs @@ -969,6 +969,25 @@ impl LoginConfigHandler { self.save_config(config); } + fn get_remote_dir(&self) -> String { + serde_json::from_str::>(&self.get_option("remote_dir")) + .unwrap_or_default() + .remove(&self.info.username) + .unwrap_or_default() + } + + pub fn get_all_remote_dir(&self, path: String) -> String { + let d = self.get_option("remote_dir"); + let user = self.info.username.clone(); + let mut x = serde_json::from_str::>(&d).unwrap_or_default(); + if path.is_empty() { + x.remove(&user); + } else { + x.insert(user, path); + } + serde_json::to_string::>(&x).unwrap_or_default() + } + fn create_login_msg(&self, password: Vec) -> Message { #[cfg(any(target_os = "android", target_os = "ios"))] let my_id = crate::common::MOBILE_INFO1.lock().unwrap().clone(); @@ -984,7 +1003,7 @@ impl LoginConfigHandler { }; if self.is_file_transfer { lr.set_file_transfer(FileTransfer { - dir: self.get_option("remote_dir"), + dir: self.get_remote_dir(), show_hidden: !self.get_option("remote_show_hidden").is_empty(), ..Default::default() }); diff --git a/src/ui/remote.rs b/src/ui/remote.rs index 7ae1d3a0e..416f93333 100644 --- a/src/ui/remote.rs +++ b/src/ui/remote.rs @@ -539,7 +539,10 @@ impl Handler { if self.is_file_transfer() { let close_state = self.read().unwrap().close_state.clone(); let mut has_change = false; - for (k, v) in close_state { + for (k, mut v) in close_state { + if k == "remote_dir" { + v = self.lc.read().unwrap().get_all_remote_dir(v); + } let v2 = if v.is_empty() { None } else { Some(&v) }; if v2 != config.options.get(&k) { has_change = true;