From 00bee04c2cf32c814c603533c3a9e4e7f3b027b7 Mon Sep 17 00:00:00 2001 From: veeso Date: Sat, 19 Jun 2021 15:03:28 +0200 Subject: [PATCH] open-rs fixes --- src/ui/activities/filetransfer/actions/mod.rs | 2 + src/ui/activities/filetransfer/mod.rs | 8 +- src/ui/activities/filetransfer/session.rs | 97 ++++++++++--------- src/ui/activities/filetransfer/update.rs | 6 +- 4 files changed, 55 insertions(+), 58 deletions(-) diff --git a/src/ui/activities/filetransfer/actions/mod.rs b/src/ui/activities/filetransfer/actions/mod.rs index e8091a4..6df793b 100644 --- a/src/ui/activities/filetransfer/actions/mod.rs +++ b/src/ui/activities/filetransfer/actions/mod.rs @@ -42,12 +42,14 @@ pub(crate) mod rename; pub(crate) mod save; pub(crate) mod submit; +#[derive(Debug)] pub(crate) enum SelectedEntry { One(FsEntry), Many(Vec), None, } +#[derive(Debug)] enum SelectedEntryIndex { One(usize), Many(Vec), diff --git a/src/ui/activities/filetransfer/mod.rs b/src/ui/activities/filetransfer/mod.rs index 5bfa149..9b21a84 100644 --- a/src/ui/activities/filetransfer/mod.rs +++ b/src/ui/activities/filetransfer/mod.rs @@ -57,7 +57,6 @@ use lib::transfer::TransferStates; use chrono::{DateTime, Local}; use crossterm::terminal::{disable_raw_mode, enable_raw_mode}; use std::collections::VecDeque; -use std::path::PathBuf; use tempfile::TempDir; use tuirealm::View; @@ -236,11 +235,8 @@ impl Activity for FileTransferActivity { if let Err(err) = enable_raw_mode() { error!("Failed to enter raw mode: {}", err); } - // Set working directory - let pwd: PathBuf = self.host.pwd(); - // Get files at current wd - self.local_scan(pwd.as_path()); - self.local_mut().wrkdir = pwd; + // Get files at current pwd + self.reload_local_dir(); debug!("Read working directory"); // Configure text editor self.setup_text_editor(); diff --git a/src/ui/activities/filetransfer/session.rs b/src/ui/activities/filetransfer/session.rs index 74b01e7..f5fb653 100644 --- a/src/ui/activities/filetransfer/session.rs +++ b/src/ui/activities/filetransfer/session.rs @@ -135,19 +135,59 @@ impl FileTransferActivity { /// ### reload_remote_dir /// - /// Reload remote directory entries + /// Reload remote directory entries and update browser pub(super) fn reload_remote_dir(&mut self) { // Get current entries - if let Ok(pwd) = self.client.pwd() { - self.remote_scan(pwd.as_path()); + if let Ok(wrkdir) = self.client.pwd() { + self.remote_scan(wrkdir.as_path()); // Set wrkdir - self.remote_mut().wrkdir = pwd; + self.remote_mut().wrkdir = wrkdir; } } + /// ### reload_local_dir + /// + /// Reload local directory entries and update browser pub(super) fn reload_local_dir(&mut self) { - let wrkdir: PathBuf = self.local().wrkdir.clone(); + let wrkdir: PathBuf = self.host.pwd(); self.local_scan(wrkdir.as_path()); + self.local_mut().wrkdir = wrkdir; + } + + /// ### local_scan + /// + /// Scan current local directory + fn local_scan(&mut self, path: &Path) { + match self.host.scan_dir(path) { + Ok(files) => { + // Set files and sort (sorting is implicit) + self.local_mut().set_files(files); + } + Err(err) => { + self.log_and_alert( + LogLevel::Error, + format!("Could not scan current directory: {}", err), + ); + } + } + } + + /// ### remote_scan + /// + /// Scan current remote directory + fn remote_scan(&mut self, path: &Path) { + match self.client.list_dir(path) { + Ok(files) => { + // Set files and sort (sorting is implicit) + self.remote_mut().set_files(files); + } + Err(err) => { + self.log_and_alert( + LogLevel::Error, + format!("Could not scan current directory: {}", err), + ); + } + } } /// ### filetransfer_send @@ -559,7 +599,7 @@ impl FileTransferActivity { } } // Reload directory on local - self.local_scan(local_path); + self.reload_local_dir(); // if aborted; show alert if self.transfer.aborted() { // Log abort @@ -688,42 +728,6 @@ impl FileTransferActivity { Ok(()) } - /// ### local_scan - /// - /// Scan current local directory - pub(super) fn local_scan(&mut self, path: &Path) { - match self.host.scan_dir(path) { - Ok(files) => { - // Set files and sort (sorting is implicit) - self.local_mut().set_files(files); - } - Err(err) => { - self.log_and_alert( - LogLevel::Error, - format!("Could not scan current directory: {}", err), - ); - } - } - } - - /// ### remote_scan - /// - /// Scan current remote directory - pub(super) fn remote_scan(&mut self, path: &Path) { - match self.client.list_dir(path) { - Ok(files) => { - // Set files and sort (sorting is implicit) - self.remote_mut().set_files(files); - } - Err(err) => { - self.log_and_alert( - LogLevel::Error, - format!("Could not scan current directory: {}", err), - ); - } - } - } - /// ### local_changedir /// /// Change directory for local @@ -738,9 +742,7 @@ impl FileTransferActivity { format!("Changed directory on local: {}", path.display()), ); // Reload files - self.local_scan(path); - // Set wrkdir - self.local_mut().wrkdir = PathBuf::from(path); + self.reload_local_dir(); // Push prev_dir to stack if push { self.local_mut().pushd(prev_dir.as_path()) @@ -767,9 +769,7 @@ impl FileTransferActivity { format!("Changed directory on remote: {}", path.display()), ); // Update files - self.remote_scan(path); - // Set wrkdir - self.remote_mut().wrkdir = PathBuf::from(path); + self.reload_remote_dir(); // Push prev_dir to stack if push { self.remote_mut().pushd(prev_dir.as_path()) @@ -809,6 +809,7 @@ impl FileTransferActivity { return Err(format!("Could not read file: {}", err)); } } + debug!("Ok, file {} is textual; opening file...", path.display()); // Put input mode back to normal if let Err(err) = disable_raw_mode() { error!("Failed to disable raw mode: {}", err); diff --git a/src/ui/activities/filetransfer/update.rs b/src/ui/activities/filetransfer/update.rs index 0463805..6d9f42d 100644 --- a/src/ui/activities/filetransfer/update.rs +++ b/src/ui/activities/filetransfer/update.rs @@ -118,8 +118,7 @@ impl Update for FileTransferActivity { } (COMPONENT_EXPLORER_LOCAL, &MSG_KEY_CHAR_L) => { // Reload directory - let pwd: PathBuf = self.local().wrkdir.clone(); - self.local_scan(pwd.as_path()); + self.reload_local_dir(); // Reload file list component self.update_local_filelist() } @@ -191,8 +190,7 @@ impl Update for FileTransferActivity { } (COMPONENT_EXPLORER_REMOTE, &MSG_KEY_CHAR_L) => { // Reload directory - let pwd: PathBuf = self.remote().wrkdir.clone(); - self.remote_scan(pwd.as_path()); + self.reload_remote_dir(); // Reload file list component self.update_remote_filelist() }