Optimized performance for file transfer

This commit is contained in:
ChristianVisintin
2020-12-13 11:43:04 +01:00
parent 55d05be626
commit 83bc7db048
2 changed files with 23 additions and 24 deletions

View File

@@ -327,20 +327,20 @@ impl FileTransferActivity {
return; return;
} }
}; };
let files: Vec<FsEntry> = self.local.files.clone(); // Get file and clone (due to mutable / immutable stuff...)
// Get file at index if self.local.files.get(self.local.index).is_some() {
if let Some(entry) = files.get(self.local.index) { let file: FsEntry = self.local.files.get(self.local.index).unwrap().clone();
// Call send (upload) // Call upload; pass realfile, keep link name
self.filetransfer_send(&entry.get_realfile(), wrkdir.as_path(), Some(input)); self.filetransfer_send(&file.get_realfile(), wrkdir.as_path(), Some(input));
} }
} }
FileExplorerTab::Remote => { FileExplorerTab::Remote => {
let files: Vec<FsEntry> = self.remote.files.clone(); // Get file and clone (due to mutable / immutable stuff...)
// Get file at index if self.remote.files.get(self.remote.index).is_some() {
if let Some(entry) = files.get(self.remote.index) { let file: FsEntry = self.remote.files.get(self.remote.index).unwrap().clone();
// Call receive (download) // Call upload; pass realfile, keep link name
self.filetransfer_recv( self.filetransfer_recv(
&entry.get_realfile(), &file.get_realfile(),
self.context.as_ref().unwrap().local.pwd().as_path(), self.context.as_ref().unwrap().local.pwd().as_path(),
Some(input), Some(input),
); );

View File

@@ -258,14 +258,14 @@ impl FileTransferActivity {
return; return;
} }
}; };
// Get files // Get file and clone (due to mutable / immutable stuff...)
let files: Vec<FsEntry> = self.local.files.clone(); // Otherwise self is borrowed both as mutable and immutable... if self.local.files.get(self.local.index).is_some() {
// Get file at index let file: FsEntry =
if let Some(entry) = files.get(self.local.index) { self.local.files.get(self.local.index).unwrap().clone();
let name: String = entry.get_name(); let name: String = file.get_name();
// Call upload; pass realfile, keep link name // Call upload; pass realfile, keep link name
self.filetransfer_send( self.filetransfer_send(
&entry.get_realfile(), &file.get_realfile(),
wrkdir.as_path(), wrkdir.as_path(),
Some(name), Some(name),
); );
@@ -444,15 +444,14 @@ impl FileTransferActivity {
} }
} }
' ' => { ' ' => {
// Get files // Get file and clone (due to mutable / immutable stuff...)
let files: Vec<FsEntry> = self.remote.files.clone(); // Otherwise self is borrowed both as mutable and immutable... if self.remote.files.get(self.remote.index).is_some() {
// Get file at index let file: FsEntry =
if let Some(entry) = files.get(self.remote.index) { self.remote.files.get(self.remote.index).unwrap().clone();
// Preserve name let name: String = file.get_name();
let name: String = entry.get_name(); // Call upload; pass realfile, keep link name
// Call upload (use entry realfile; pass previous name)
self.filetransfer_recv( self.filetransfer_recv(
&entry.get_realfile(), &file.get_realfile(),
self.context.as_ref().unwrap().local.pwd().as_path(), self.context.as_ref().unwrap().local.pwd().as_path(),
Some(name), Some(name),
); );