From 77bb821ecfc9addd707ef51496d4bad881480849 Mon Sep 17 00:00:00 2001 From: Kingtous Date: Fri, 13 May 2022 09:30:52 +0800 Subject: [PATCH] fix: to string --- libs/hbb_common/src/config.rs | 6 ++-- libs/hbb_common/src/fs.rs | 6 +++- src/main.rs | 5 ++-- src/ui/cm.rs | 1 - src/ui/remote.rs | 52 +++++++++++++++++++---------------- 5 files changed, 38 insertions(+), 32 deletions(-) diff --git a/libs/hbb_common/src/config.rs b/libs/hbb_common/src/config.rs index c9878d0ff..7cb735466 100644 --- a/libs/hbb_common/src/config.rs +++ b/libs/hbb_common/src/config.rs @@ -157,11 +157,9 @@ pub struct PeerInfoSerde { #[derive(Debug, Default, Serialize, Deserialize, Clone)] pub struct TransferSerde { #[serde(default)] - pub write_jobs: Vec, + pub write_jobs: Vec, #[serde(default)] - pub read_jobs: Vec, - #[serde(default)] - pub remove_jobs: Vec, + pub read_jobs: Vec, } fn patch(path: PathBuf) -> PathBuf { diff --git a/libs/hbb_common/src/fs.rs b/libs/hbb_common/src/fs.rs index 60413ff43..92d4f6b3a 100644 --- a/libs/hbb_common/src/fs.rs +++ b/libs/hbb_common/src/fs.rs @@ -229,6 +229,8 @@ pub struct TransferJobMeta { pub show_hidden: bool, #[serde(default)] pub file_num: i32, + #[serde(default)] + pub is_remote: bool } #[derive(Debug, Default, Serialize, Deserialize, Clone)] @@ -583,13 +585,15 @@ impl TransferJob { true } + #[inline] pub fn gen_meta(&self) -> TransferJobMeta { TransferJobMeta { id: self.id, remote: self.remote.to_string(), to: self.path.to_string_lossy().to_string(), file_num: self.file_num, - show_hidden: self.show_hidden + show_hidden: self.show_hidden, + is_remote: self.is_remote } } } diff --git a/src/main.rs b/src/main.rs index d802b8ae9..c1dd29a05 100644 --- a/src/main.rs +++ b/src/main.rs @@ -39,12 +39,13 @@ fn main() { println!("{}", crate::VERSION); return; } - #[cfg(not(feature = "inline"))] + // TODO: 提交去除inline + #[cfg(feature = "inline")] { use hbb_common::env_logger::*; init_from_env(Env::default().filter_or(DEFAULT_FILTER_ENV, "info")); } - #[cfg(feature = "inline")] + #[cfg(not(feature = "inline"))] { let mut path = hbb_common::config::Config::log_path(); if args.len() > 0 && args[0].starts_with("--") { diff --git a/src/ui/cm.rs b/src/ui/cm.rs index b86775c79..3992985e5 100644 --- a/src/ui/cm.rs +++ b/src/ui/cm.rs @@ -371,7 +371,6 @@ impl ConnectionManager { } async fn send(msg: Message, conn: &mut Connection) { - println!("send msg: {:?}", msg); match msg.write_to_bytes() { Ok(bytes) => allow_err!(conn.send(&Data::RawMessage(bytes)).await), err => allow_err!(err), diff --git a/src/ui/remote.rs b/src/ui/remote.rs index ad69f243a..59db974a4 100644 --- a/src/ui/remote.rs +++ b/src/ui/remote.rs @@ -20,7 +20,7 @@ use clipboard::{ get_rx_clip_client, server_clip_file, }; use enigo::{self, Enigo, KeyboardControllable}; -use hbb_common::config::TransferSerde; +use hbb_common::{config::TransferSerde, fs::TransferJobMeta}; use hbb_common::fs::{ can_enable_overwrite_detection, get_string, is_file_exists, new_send_confirm, DigestCheckResult, RemoveJobMeta, @@ -1319,7 +1319,6 @@ async fn io_loop(handler: Handler) { clipboard_file_context: None, }; remote.io_loop(&key, &token).await; - remote.sync_jobs_status_to_local().await; } struct RemoveJob { @@ -1551,23 +1550,29 @@ impl Remote { } // TODO: can add a confirm dialog let mut cnt = 0; - for job in pc.transfer.read_jobs.iter() { - self.handler.call("addJob",&make_args!( - cnt,job.remote.clone(),job.to.clone(),job.file_num,job.show_hidden, false - )); - self.handler.send_files(cnt, job.remote.clone(), - job.to.clone(), job.show_hidden, false); - cnt += 1; - println!("restore read_job: {:?}",job); + for job_str in pc.transfer.read_jobs.iter() { + let job: Result = serde_json::from_str(&job_str); + if let Ok(job) = job { + self.handler.call("addJob",&make_args!( + cnt,job.remote.clone(),job.to.clone(),job.file_num,job.show_hidden, false + )); + self.handler.send_files(cnt, job.remote.clone(), + job.to.clone(), job.show_hidden, false); + cnt += 1; + println!("restore read_job: {:?}",job); + } } - for job in pc.transfer.write_jobs.iter() { - self.handler.call("addJob",&make_args!( - cnt,job.remote.clone(),job.to.clone(),job.file_num,job.show_hidden, true - )); - self.handler.send_files(cnt, job.remote.clone(), - job.to.clone(), job.show_hidden, true); - cnt += 1; - println!("restore write_job: {:?}",job); + for job_str in pc.transfer.write_jobs.iter() { + let job: Result = serde_json::from_str(&job_str); + if let Ok(job) = job { + self.handler.call("addJob",&make_args!( + cnt,job.remote.clone(),job.to.clone(),job.file_num,job.show_hidden, true + )); + self.handler.send_files(cnt, job.remote.clone(), + job.to.clone(), job.show_hidden, true); + cnt += 1; + println!("restore write_job: {:?}",job); + } } self.handler.call("updateTransferList", &make_args!()); } @@ -1595,7 +1600,7 @@ impl Remote { if is_remote { log::debug!("New job {}, write to {} from remote {}", id, to, path); self.write_jobs - .push(fs::TransferJob::new_write(id, path.clone(),to,include_hidden,is_remote, Vec::new(), od)); + .push(fs::TransferJob::new_write(id, path.clone(),to,include_hidden, is_remote, Vec::new(), od)); allow_err!(peer.send(&fs::new_send(id, path, include_hidden)).await); } else { match fs::TransferJob::new_read(id, path.clone(),to.clone(),include_hidden,is_remote, include_hidden, od) { @@ -1837,13 +1842,12 @@ impl Remote { let mut config: PeerConfig = self.handler.load_config(); let mut transfer_metas = TransferSerde::default(); for job in self.read_jobs.iter() { - transfer_metas.read_jobs.push(job.gen_meta()); + let json_str = serde_json::to_string(&job.gen_meta()).unwrap(); + transfer_metas.read_jobs.push(json_str); } for job in self.write_jobs.iter() { - transfer_metas.write_jobs.push(job.gen_meta()); - } - for job in self.remove_jobs.values() { - transfer_metas.remove_jobs.push(job.gen_meta()); + let json_str = serde_json::to_string(&job.gen_meta()).unwrap(); + transfer_metas.write_jobs.push(json_str); } config.transfer = transfer_metas; println!("{:?}", config.transfer);