mirror of
https://github.com/veeso/termscp.git
synced 2025-12-07 09:36:00 -08:00
Optimizing log code
This commit is contained in:
@@ -19,7 +19,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use super::{FileTransferActivity, InputField, InputMode, LogLevel, LogRecord, PopupType};
|
use super::{Color, FileTransferActivity, InputField, InputMode, LogLevel, LogRecord, PopupType};
|
||||||
|
|
||||||
impl FileTransferActivity {
|
impl FileTransferActivity {
|
||||||
/// ### log
|
/// ### log
|
||||||
@@ -38,6 +38,20 @@ impl FileTransferActivity {
|
|||||||
self.log_index = 0;
|
self.log_index = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// ### log_and_alert
|
||||||
|
///
|
||||||
|
/// Add message to log events and also display it as an alert
|
||||||
|
pub(super) fn log_and_alert(&mut self, level: LogLevel, msg: String) {
|
||||||
|
// Set input mode
|
||||||
|
let color: Color = match level {
|
||||||
|
LogLevel::Error => Color::Red,
|
||||||
|
LogLevel::Info => Color::Green,
|
||||||
|
LogLevel::Warn => Color::Yellow,
|
||||||
|
};
|
||||||
|
self.log(level, msg.as_str());
|
||||||
|
self.input_mode = InputMode::Popup(PopupType::Alert(color, msg));
|
||||||
|
}
|
||||||
|
|
||||||
/// ### create_quit_popup
|
/// ### create_quit_popup
|
||||||
///
|
///
|
||||||
/// Create quit popup input mode (since must be shared between different input handlers)
|
/// Create quit popup input mode (since must be shared between different input handlers)
|
||||||
|
|||||||
@@ -150,14 +150,10 @@ impl FileTransferActivity {
|
|||||||
fhnd.seek(std::io::SeekFrom::End(0)).unwrap_or(0) as usize;
|
fhnd.seek(std::io::SeekFrom::End(0)).unwrap_or(0) as usize;
|
||||||
// rewind
|
// rewind
|
||||||
if let Err(err) = fhnd.seek(std::io::SeekFrom::Start(0)) {
|
if let Err(err) = fhnd.seek(std::io::SeekFrom::Start(0)) {
|
||||||
self.log(
|
self.log_and_alert(
|
||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!("Could not rewind local file: {}", err).as_ref(),
|
|
||||||
);
|
|
||||||
self.input_mode = InputMode::Popup(PopupType::Alert(
|
|
||||||
Color::Red,
|
|
||||||
format!("Could not rewind local file: {}", err),
|
format!("Could not rewind local file: {}", err),
|
||||||
));
|
);
|
||||||
}
|
}
|
||||||
// Write remote file
|
// Write remote file
|
||||||
let mut total_bytes_written: usize = 0;
|
let mut total_bytes_written: usize = 0;
|
||||||
@@ -196,22 +192,13 @@ impl FileTransferActivity {
|
|||||||
buf_start += bytes;
|
buf_start += bytes;
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
self.log(
|
self.log_and_alert(
|
||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!(
|
format!(
|
||||||
"Could not write remote file: {}",
|
"Could not write remote file: {}",
|
||||||
err
|
err
|
||||||
)
|
),
|
||||||
.as_ref(),
|
|
||||||
);
|
);
|
||||||
self.input_mode =
|
|
||||||
InputMode::Popup(PopupType::Alert(
|
|
||||||
Color::Red,
|
|
||||||
format!(
|
|
||||||
"Could not write remote file: {}",
|
|
||||||
err
|
|
||||||
),
|
|
||||||
));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -219,14 +206,10 @@ impl FileTransferActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
self.log(
|
self.log_and_alert(
|
||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!("Could not read local file: {}", err).as_ref(),
|
|
||||||
);
|
|
||||||
self.input_mode = InputMode::Popup(PopupType::Alert(
|
|
||||||
Color::Red,
|
|
||||||
format!("Could not read local file: {}", err),
|
format!("Could not read local file: {}", err),
|
||||||
));
|
);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -260,44 +243,26 @@ impl FileTransferActivity {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
self.log(
|
self.log_and_alert(
|
||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!(
|
|
||||||
"Failed to upload file \"{}\": {}",
|
|
||||||
file.abs_path.display(),
|
|
||||||
err
|
|
||||||
)
|
|
||||||
.as_ref(),
|
|
||||||
);
|
|
||||||
self.input_mode = InputMode::Popup(PopupType::Alert(
|
|
||||||
Color::Red,
|
|
||||||
format!(
|
format!(
|
||||||
"Failed to upload file \"{}\": {}",
|
"Failed to upload file \"{}\": {}",
|
||||||
file.abs_path.display(),
|
file.abs_path.display(),
|
||||||
err
|
err
|
||||||
),
|
),
|
||||||
));
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
// Report error
|
// Report error
|
||||||
self.log(
|
self.log_and_alert(
|
||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!(
|
|
||||||
"Failed to open file \"{}\": {}",
|
|
||||||
file.abs_path.display(),
|
|
||||||
err
|
|
||||||
)
|
|
||||||
.as_ref(),
|
|
||||||
);
|
|
||||||
self.input_mode = InputMode::Popup(PopupType::Alert(
|
|
||||||
Color::Red,
|
|
||||||
format!(
|
format!(
|
||||||
"Failed to open file \"{}\": {}",
|
"Failed to open file \"{}\": {}",
|
||||||
file.abs_path.display(),
|
file.abs_path.display(),
|
||||||
err
|
err
|
||||||
),
|
),
|
||||||
));
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -329,44 +294,26 @@ impl FileTransferActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
self.log(
|
self.log_and_alert(
|
||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!(
|
|
||||||
"Could not scan directory \"{}\": {}",
|
|
||||||
dir.abs_path.display(),
|
|
||||||
err
|
|
||||||
)
|
|
||||||
.as_ref(),
|
|
||||||
);
|
|
||||||
self.input_mode = InputMode::Popup(PopupType::Alert(
|
|
||||||
Color::Red,
|
|
||||||
format!(
|
format!(
|
||||||
"Could not scan directory \"{}\": {}",
|
"Could not scan directory \"{}\": {}",
|
||||||
dir.abs_path.display(),
|
dir.abs_path.display(),
|
||||||
err
|
err
|
||||||
),
|
),
|
||||||
));
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
self.log(
|
self.log_and_alert(
|
||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!(
|
|
||||||
"Failed to create directory \"{}\": {}",
|
|
||||||
remote_path.display(),
|
|
||||||
err
|
|
||||||
)
|
|
||||||
.as_ref(),
|
|
||||||
);
|
|
||||||
self.input_mode = InputMode::Popup(PopupType::Alert(
|
|
||||||
Color::Red,
|
|
||||||
format!(
|
format!(
|
||||||
"Failed to create directory \"{}\": {}",
|
"Failed to create directory \"{}\": {}",
|
||||||
remote_path.display(),
|
remote_path.display(),
|
||||||
err
|
err
|
||||||
),
|
),
|
||||||
));
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -377,15 +324,10 @@ impl FileTransferActivity {
|
|||||||
}
|
}
|
||||||
// If aborted; show popup
|
// If aborted; show popup
|
||||||
if self.transfer.aborted {
|
if self.transfer.aborted {
|
||||||
// Show alert
|
|
||||||
self.input_mode = InputMode::Popup(PopupType::Alert(
|
|
||||||
Color::Red,
|
|
||||||
String::from("Upload aborted!"),
|
|
||||||
));
|
|
||||||
// Log abort
|
// Log abort
|
||||||
self.log(
|
self.log_and_alert(
|
||||||
LogLevel::Warn,
|
LogLevel::Warn,
|
||||||
format!("Upload aborted for \"{}\"!", entry.get_abs_path().display()).as_str(),
|
format!("Upload aborted for \"{}\"!", entry.get_abs_path().display()),
|
||||||
);
|
);
|
||||||
// Set aborted to false
|
// Set aborted to false
|
||||||
self.transfer.aborted = false;
|
self.transfer.aborted = false;
|
||||||
@@ -479,22 +421,13 @@ impl FileTransferActivity {
|
|||||||
{
|
{
|
||||||
Ok(bytes) => buf_start += bytes,
|
Ok(bytes) => buf_start += bytes,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
self.log(
|
self.log_and_alert(
|
||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!(
|
format!(
|
||||||
"Could not write local file: {}",
|
"Could not write local file: {}",
|
||||||
err
|
err
|
||||||
)
|
),
|
||||||
.as_ref(),
|
|
||||||
);
|
);
|
||||||
self.input_mode =
|
|
||||||
InputMode::Popup(PopupType::Alert(
|
|
||||||
Color::Red,
|
|
||||||
format!(
|
|
||||||
"Could not write local file: {}",
|
|
||||||
err
|
|
||||||
),
|
|
||||||
));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -502,15 +435,10 @@ impl FileTransferActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
self.log(
|
self.log_and_alert(
|
||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!("Could not read remote file: {}", err)
|
|
||||||
.as_ref(),
|
|
||||||
);
|
|
||||||
self.input_mode = InputMode::Popup(PopupType::Alert(
|
|
||||||
Color::Red,
|
|
||||||
format!("Could not read remote file: {}", err),
|
format!("Could not read remote file: {}", err),
|
||||||
));
|
);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -571,45 +499,27 @@ impl FileTransferActivity {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
self.log(
|
self.log_and_alert(
|
||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!(
|
|
||||||
"Failed to download file \"{}\": {}",
|
|
||||||
file.abs_path.display(),
|
|
||||||
err
|
|
||||||
)
|
|
||||||
.as_ref(),
|
|
||||||
);
|
|
||||||
self.input_mode = InputMode::Popup(PopupType::Alert(
|
|
||||||
Color::Red,
|
|
||||||
format!(
|
format!(
|
||||||
"Failed to download file \"{}\": {}",
|
"Failed to download file \"{}\": {}",
|
||||||
file.abs_path.display(),
|
file.abs_path.display(),
|
||||||
err
|
err
|
||||||
),
|
),
|
||||||
));
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
// Report error
|
// Report error
|
||||||
self.log(
|
self.log_and_alert(
|
||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!(
|
|
||||||
"Failed to open local file for write \"{}\": {}",
|
|
||||||
local_file_path.display(),
|
|
||||||
err
|
|
||||||
)
|
|
||||||
.as_ref(),
|
|
||||||
);
|
|
||||||
self.input_mode = InputMode::Popup(PopupType::Alert(
|
|
||||||
Color::Red,
|
|
||||||
format!(
|
format!(
|
||||||
"Failed to open local file for write \"{}\": {}",
|
"Failed to open local file for write \"{}\": {}",
|
||||||
local_file_path.display(),
|
local_file_path.display(),
|
||||||
err
|
err
|
||||||
),
|
),
|
||||||
));
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -670,23 +580,14 @@ impl FileTransferActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
self.log(
|
self.log_and_alert(
|
||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!(
|
|
||||||
"Could not scan directory \"{}\": {}",
|
|
||||||
dir.abs_path.display(),
|
|
||||||
err
|
|
||||||
)
|
|
||||||
.as_ref(),
|
|
||||||
);
|
|
||||||
self.input_mode = InputMode::Popup(PopupType::Alert(
|
|
||||||
Color::Red,
|
|
||||||
format!(
|
format!(
|
||||||
"Could not scan directory \"{}\": {}",
|
"Could not scan directory \"{}\": {}",
|
||||||
dir.abs_path.display(),
|
dir.abs_path.display(),
|
||||||
err
|
err
|
||||||
),
|
),
|
||||||
));
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -708,19 +609,13 @@ impl FileTransferActivity {
|
|||||||
self.local_scan(local_path);
|
self.local_scan(local_path);
|
||||||
// if aborted; show alert
|
// if aborted; show alert
|
||||||
if self.transfer.aborted {
|
if self.transfer.aborted {
|
||||||
// Show alert
|
|
||||||
self.input_mode = InputMode::Popup(PopupType::Alert(
|
|
||||||
Color::Red,
|
|
||||||
String::from("Download aborted!"),
|
|
||||||
));
|
|
||||||
// Log abort
|
// Log abort
|
||||||
self.log(
|
self.log_and_alert(
|
||||||
LogLevel::Warn,
|
LogLevel::Warn,
|
||||||
format!(
|
format!(
|
||||||
"Download aborted for \"{}\"!",
|
"Download aborted for \"{}\"!",
|
||||||
entry.get_abs_path().display()
|
entry.get_abs_path().display()
|
||||||
)
|
),
|
||||||
.as_str(),
|
|
||||||
);
|
);
|
||||||
// Reset aborted to false
|
// Reset aborted to false
|
||||||
self.transfer.aborted = false;
|
self.transfer.aborted = false;
|
||||||
@@ -749,14 +644,10 @@ impl FileTransferActivity {
|
|||||||
self.local.sort_files_by_name();
|
self.local.sort_files_by_name();
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
self.log(
|
self.log_and_alert(
|
||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!("Could not scan current directory: {}", err).as_str(),
|
|
||||||
);
|
|
||||||
self.input_mode = InputMode::Popup(PopupType::Alert(
|
|
||||||
Color::Red,
|
|
||||||
format!("Could not scan current directory: {}", err),
|
format!("Could not scan current directory: {}", err),
|
||||||
));
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -780,14 +671,10 @@ impl FileTransferActivity {
|
|||||||
self.remote.sort_files_by_name();
|
self.remote.sort_files_by_name();
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
self.log(
|
self.log_and_alert(
|
||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!("Could not scan current directory: {}", err).as_str(),
|
|
||||||
);
|
|
||||||
self.input_mode = InputMode::Popup(PopupType::Alert(
|
|
||||||
Color::Red,
|
|
||||||
format!("Could not scan current directory: {}", err),
|
format!("Could not scan current directory: {}", err),
|
||||||
));
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -822,14 +709,10 @@ impl FileTransferActivity {
|
|||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
// Report err
|
// Report err
|
||||||
self.log(
|
self.log_and_alert(
|
||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!("Could not change working directory: {}", err).as_str(),
|
|
||||||
);
|
|
||||||
self.input_mode = InputMode::Popup(PopupType::Alert(
|
|
||||||
Color::Red,
|
|
||||||
format!("Could not change working directory: {}", err),
|
format!("Could not change working directory: {}", err),
|
||||||
));
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user