diff --git a/flutter/lib/desktop/pages/file_manager_page.dart b/flutter/lib/desktop/pages/file_manager_page.dart index 88f470717..b2e5232ab 100644 --- a/flutter/lib/desktop/pages/file_manager_page.dart +++ b/flutter/lib/desktop/pages/file_manager_page.dart @@ -458,7 +458,7 @@ class _FileManagerPageState extends State Wrap( children: [ Text( - '${item.state.display()} ${max(0, item.fileNum)}/${item.fileCount} '), + '${item.display()} ${max(0, item.fileNum)}/${item.fileCount} '), Text( '${translate("files")} ${readableFileSize(item.totalSize.toDouble())} '), Offstage( diff --git a/flutter/lib/models/file_model.dart b/flutter/lib/models/file_model.dart index 182f51ef8..744a3a502 100644 --- a/flutter/lib/models/file_model.dart +++ b/flutter/lib/models/file_model.dart @@ -268,6 +268,7 @@ class FileModel extends ChangeNotifier { } jobError(Map evt) { + final err = evt['err'].toString(); if (!isDesktop) { if (_jobResultListener.isListening) { _jobResultListener.complete(evt); @@ -275,12 +276,24 @@ class FileModel extends ChangeNotifier { } _selectMode = false; _jobProgress.clear(); + _jobProgress.err = err; _jobProgress.state = JobState.error; + _jobProgress.fileNum = int.parse(evt['file_num']); + if (err == "skipped") { + _jobProgress.state = JobState.done; + _jobProgress.finishedSize = _jobProgress.totalSize; + } } else { int jobIndex = getJob(int.parse(evt['id'])); if (jobIndex != -1) { final job = jobTable[jobIndex]; job.state = JobState.error; + job.err = err; + job.fileNum = int.parse(evt['file_num']); + if (err == "skipped") { + job.state = JobState.done; + job.finishedSize = job.totalSize; + } } } debugPrint("jobError $evt"); @@ -1089,6 +1102,7 @@ class JobProgress { var remote = ""; var to = ""; var showHidden = false; + var err = ""; clear() { state = JobState.none; @@ -1100,6 +1114,14 @@ class JobProgress { fileCount = 0; remote = ""; to = ""; + err = ""; + } + + String display() { + if (state == JobState.done && err == "skipped") { + return translate("Skipped"); + } + return state.display(); } } diff --git a/src/client/io_loop.rs b/src/client/io_loop.rs index d7468ea9a..5adca6d81 100644 --- a/src/client/io_loop.rs +++ b/src/client/io_loop.rs @@ -919,7 +919,6 @@ impl Remote { } } Some(file_response::Union::Block(block)) => { - log::debug!("recv block: {}", block.blk_id); if let Some(job) = fs::get_job(block.id, &mut self.write_jobs) { if let Err(_err) = job.write(block).await { // to-do: add "skip" for writing job diff --git a/src/flutter.rs b/src/flutter.rs index 6924bada3..a2c307f5a 100644 --- a/src/flutter.rs +++ b/src/flutter.rs @@ -210,10 +210,10 @@ impl InvokeUiSession for FlutterHandler { ); } - fn job_done(&self, id: i32, file_num: i32, skipped: bool) { + fn job_done(&self, id: i32, file_num: i32) { self.push_event( "job_done", - vec![("id", &id.to_string()), ("file_num", &file_num.to_string()), ("skipped", skipped)], + vec![("id", &id.to_string()), ("file_num", &file_num.to_string())], ); }