fix: to string

This commit is contained in:
Kingtous 2022-05-13 09:30:52 +08:00
parent b3f523f65e
commit 77bb821ecf
5 changed files with 38 additions and 32 deletions

View File

@ -157,11 +157,9 @@ pub struct PeerInfoSerde {
#[derive(Debug, Default, Serialize, Deserialize, Clone)] #[derive(Debug, Default, Serialize, Deserialize, Clone)]
pub struct TransferSerde { pub struct TransferSerde {
#[serde(default)] #[serde(default)]
pub write_jobs: Vec<TransferJobMeta>, pub write_jobs: Vec<String>,
#[serde(default)] #[serde(default)]
pub read_jobs: Vec<TransferJobMeta>, pub read_jobs: Vec<String>,
#[serde(default)]
pub remove_jobs: Vec<RemoveJobMeta>,
} }
fn patch(path: PathBuf) -> PathBuf { fn patch(path: PathBuf) -> PathBuf {

View File

@ -229,6 +229,8 @@ pub struct TransferJobMeta {
pub show_hidden: bool, pub show_hidden: bool,
#[serde(default)] #[serde(default)]
pub file_num: i32, pub file_num: i32,
#[serde(default)]
pub is_remote: bool
} }
#[derive(Debug, Default, Serialize, Deserialize, Clone)] #[derive(Debug, Default, Serialize, Deserialize, Clone)]
@ -583,13 +585,15 @@ impl TransferJob {
true true
} }
#[inline]
pub fn gen_meta(&self) -> TransferJobMeta { pub fn gen_meta(&self) -> TransferJobMeta {
TransferJobMeta { TransferJobMeta {
id: self.id, id: self.id,
remote: self.remote.to_string(), remote: self.remote.to_string(),
to: self.path.to_string_lossy().to_string(), to: self.path.to_string_lossy().to_string(),
file_num: self.file_num, file_num: self.file_num,
show_hidden: self.show_hidden show_hidden: self.show_hidden,
is_remote: self.is_remote
} }
} }
} }

View File

@ -39,12 +39,13 @@ fn main() {
println!("{}", crate::VERSION); println!("{}", crate::VERSION);
return; return;
} }
#[cfg(not(feature = "inline"))] // TODO: 提交去除inline
#[cfg(feature = "inline")]
{ {
use hbb_common::env_logger::*; use hbb_common::env_logger::*;
init_from_env(Env::default().filter_or(DEFAULT_FILTER_ENV, "info")); 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(); let mut path = hbb_common::config::Config::log_path();
if args.len() > 0 && args[0].starts_with("--") { if args.len() > 0 && args[0].starts_with("--") {

View File

@ -371,7 +371,6 @@ impl ConnectionManager {
} }
async fn send(msg: Message, conn: &mut Connection) { async fn send(msg: Message, conn: &mut Connection) {
println!("send msg: {:?}", msg);
match msg.write_to_bytes() { match msg.write_to_bytes() {
Ok(bytes) => allow_err!(conn.send(&Data::RawMessage(bytes)).await), Ok(bytes) => allow_err!(conn.send(&Data::RawMessage(bytes)).await),
err => allow_err!(err), err => allow_err!(err),

View File

@ -20,7 +20,7 @@ use clipboard::{
get_rx_clip_client, server_clip_file, get_rx_clip_client, server_clip_file,
}; };
use enigo::{self, Enigo, KeyboardControllable}; use enigo::{self, Enigo, KeyboardControllable};
use hbb_common::config::TransferSerde; use hbb_common::{config::TransferSerde, fs::TransferJobMeta};
use hbb_common::fs::{ use hbb_common::fs::{
can_enable_overwrite_detection, get_string, is_file_exists, new_send_confirm, can_enable_overwrite_detection, get_string, is_file_exists, new_send_confirm,
DigestCheckResult, RemoveJobMeta, DigestCheckResult, RemoveJobMeta,
@ -1319,7 +1319,6 @@ async fn io_loop(handler: Handler) {
clipboard_file_context: None, clipboard_file_context: None,
}; };
remote.io_loop(&key, &token).await; remote.io_loop(&key, &token).await;
remote.sync_jobs_status_to_local().await;
} }
struct RemoveJob { struct RemoveJob {
@ -1551,23 +1550,29 @@ impl Remote {
} }
// TODO: can add a confirm dialog // TODO: can add a confirm dialog
let mut cnt = 0; let mut cnt = 0;
for job in pc.transfer.read_jobs.iter() { for job_str in pc.transfer.read_jobs.iter() {
self.handler.call("addJob",&make_args!( let job: Result<TransferJobMeta, serde_json::Error> = serde_json::from_str(&job_str);
cnt,job.remote.clone(),job.to.clone(),job.file_num,job.show_hidden, false if let Ok(job) = job {
)); self.handler.call("addJob",&make_args!(
self.handler.send_files(cnt, job.remote.clone(), cnt,job.remote.clone(),job.to.clone(),job.file_num,job.show_hidden, false
job.to.clone(), job.show_hidden, false); ));
cnt += 1; self.handler.send_files(cnt, job.remote.clone(),
println!("restore read_job: {:?}",job); job.to.clone(), job.show_hidden, false);
cnt += 1;
println!("restore read_job: {:?}",job);
}
} }
for job in pc.transfer.write_jobs.iter() { for job_str in pc.transfer.write_jobs.iter() {
self.handler.call("addJob",&make_args!( let job: Result<TransferJobMeta, serde_json::Error> = serde_json::from_str(&job_str);
cnt,job.remote.clone(),job.to.clone(),job.file_num,job.show_hidden, true if let Ok(job) = job {
)); self.handler.call("addJob",&make_args!(
self.handler.send_files(cnt, job.remote.clone(), cnt,job.remote.clone(),job.to.clone(),job.file_num,job.show_hidden, true
job.to.clone(), job.show_hidden, true); ));
cnt += 1; self.handler.send_files(cnt, job.remote.clone(),
println!("restore write_job: {:?}",job); job.to.clone(), job.show_hidden, true);
cnt += 1;
println!("restore write_job: {:?}",job);
}
} }
self.handler.call("updateTransferList", &make_args!()); self.handler.call("updateTransferList", &make_args!());
} }
@ -1595,7 +1600,7 @@ impl Remote {
if is_remote { if is_remote {
log::debug!("New job {}, write to {} from remote {}", id, to, path); log::debug!("New job {}, write to {} from remote {}", id, to, path);
self.write_jobs 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); allow_err!(peer.send(&fs::new_send(id, path, include_hidden)).await);
} else { } else {
match fs::TransferJob::new_read(id, path.clone(),to.clone(),include_hidden,is_remote, include_hidden, od) { 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 config: PeerConfig = self.handler.load_config();
let mut transfer_metas = TransferSerde::default(); let mut transfer_metas = TransferSerde::default();
for job in self.read_jobs.iter() { 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() { for job in self.write_jobs.iter() {
transfer_metas.write_jobs.push(job.gen_meta()); let json_str = serde_json::to_string(&job.gen_meta()).unwrap();
} transfer_metas.write_jobs.push(json_str);
for job in self.remove_jobs.values() {
transfer_metas.remove_jobs.push(job.gen_meta());
} }
config.transfer = transfer_metas; config.transfer = transfer_metas;
println!("{:?}", config.transfer); println!("{:?}", config.transfer);