mirror of
https://github.com/veeso/termscp.git
synced 2025-12-07 09:36:00 -08:00
Report errors as alerts
This commit is contained in:
@@ -332,6 +332,10 @@ impl FileTransferActivity {
|
|||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!("Could not get current remote path: {}", err).as_ref(),
|
format!("Could not get current remote path: {}", err).as_ref(),
|
||||||
);
|
);
|
||||||
|
self.input_mode = InputMode::Popup(PopupType::Alert(
|
||||||
|
Color::Red,
|
||||||
|
format!("Could not get current remote path: {}", err),
|
||||||
|
));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -137,15 +137,26 @@ impl FileTransferActivity {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(err) => self.log(
|
Err(err) => {
|
||||||
LogLevel::Error,
|
self.log(
|
||||||
format!(
|
LogLevel::Error,
|
||||||
"Failed to stat file \"{}\": {}",
|
format!(
|
||||||
realpath.display(),
|
"Failed to stat file \"{}\": {}",
|
||||||
err
|
realpath.display(),
|
||||||
)
|
err
|
||||||
.as_ref(),
|
)
|
||||||
),
|
.as_ref(),
|
||||||
|
);
|
||||||
|
self.input_mode =
|
||||||
|
InputMode::Popup(PopupType::Alert(
|
||||||
|
Color::Red,
|
||||||
|
format!(
|
||||||
|
"Failed to stat file \"{}\": {}",
|
||||||
|
realpath.display(),
|
||||||
|
err
|
||||||
|
),
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -251,6 +262,10 @@ impl FileTransferActivity {
|
|||||||
format!("Could not get current remote path: {}", err)
|
format!("Could not get current remote path: {}", err)
|
||||||
.as_ref(),
|
.as_ref(),
|
||||||
);
|
);
|
||||||
|
self.input_mode = InputMode::Popup(PopupType::Alert(
|
||||||
|
Color::Red,
|
||||||
|
format!("Could not get current remote path: {}", err),
|
||||||
|
));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -338,15 +353,26 @@ impl FileTransferActivity {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(err) => self.log(
|
Err(err) => {
|
||||||
LogLevel::Error,
|
self.log(
|
||||||
format!(
|
LogLevel::Error,
|
||||||
"Failed to stat file \"{}\": {}",
|
format!(
|
||||||
realpath.display(),
|
"Failed to stat file \"{}\": {}",
|
||||||
err
|
realpath.display(),
|
||||||
)
|
err
|
||||||
.as_ref(),
|
)
|
||||||
),
|
.as_ref(),
|
||||||
|
);
|
||||||
|
self.input_mode =
|
||||||
|
InputMode::Popup(PopupType::Alert(
|
||||||
|
Color::Red,
|
||||||
|
format!(
|
||||||
|
"Failed to stat file \"{}\": {}",
|
||||||
|
realpath.display(),
|
||||||
|
err
|
||||||
|
),
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -143,6 +143,10 @@ impl FileTransferActivity {
|
|||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!("Could not rewind local file: {}", err).as_ref(),
|
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),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
// Write remote file
|
// Write remote file
|
||||||
let mut total_bytes_written: usize = 0;
|
let mut total_bytes_written: usize = 0;
|
||||||
@@ -170,6 +174,14 @@ impl FileTransferActivity {
|
|||||||
format!("Could not write remote file: {}", err)
|
format!("Could not write remote file: {}", err)
|
||||||
.as_ref(),
|
.as_ref(),
|
||||||
);
|
);
|
||||||
|
self.input_mode =
|
||||||
|
InputMode::Popup(PopupType::Alert(
|
||||||
|
Color::Red,
|
||||||
|
format!(
|
||||||
|
"Could not write remote file: {}",
|
||||||
|
err
|
||||||
|
),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -178,6 +190,10 @@ impl FileTransferActivity {
|
|||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!("Could not read local file: {}", err).as_ref(),
|
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),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Increase progress
|
// Increase progress
|
||||||
@@ -207,15 +223,25 @@ impl FileTransferActivity {
|
|||||||
.as_ref(),
|
.as_ref(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
Err(err) => self.log(
|
Err(err) => {
|
||||||
LogLevel::Error,
|
self.log(
|
||||||
format!(
|
LogLevel::Error,
|
||||||
"Failed to upload file \"{}\": {}",
|
format!(
|
||||||
file.abs_path.display(),
|
"Failed to upload file \"{}\": {}",
|
||||||
err
|
file.abs_path.display(),
|
||||||
)
|
err
|
||||||
.as_ref(),
|
)
|
||||||
),
|
.as_ref(),
|
||||||
|
);
|
||||||
|
self.input_mode = InputMode::Popup(PopupType::Alert(
|
||||||
|
Color::Red,
|
||||||
|
format!(
|
||||||
|
"Failed to upload file \"{}\": {}",
|
||||||
|
file.abs_path.display(),
|
||||||
|
err
|
||||||
|
),
|
||||||
|
));
|
||||||
|
}
|
||||||
},
|
},
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
// Report error
|
// Report error
|
||||||
@@ -228,6 +254,14 @@ impl FileTransferActivity {
|
|||||||
)
|
)
|
||||||
.as_ref(),
|
.as_ref(),
|
||||||
);
|
);
|
||||||
|
self.input_mode = InputMode::Popup(PopupType::Alert(
|
||||||
|
Color::Red,
|
||||||
|
format!(
|
||||||
|
"Failed to open file \"{}\": {}",
|
||||||
|
file.abs_path.display(),
|
||||||
|
err
|
||||||
|
),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -254,26 +288,46 @@ impl FileTransferActivity {
|
|||||||
self.filetransfer_send(&entry, remote_path.as_path(), None);
|
self.filetransfer_send(&entry, remote_path.as_path(), None);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(err) => self.log(
|
Err(err) => {
|
||||||
LogLevel::Error,
|
self.log(
|
||||||
format!(
|
LogLevel::Error,
|
||||||
"Could not scan directory \"{}\": {}",
|
format!(
|
||||||
dir.abs_path.display(),
|
"Could not scan directory \"{}\": {}",
|
||||||
err
|
dir.abs_path.display(),
|
||||||
)
|
err
|
||||||
.as_ref(),
|
)
|
||||||
),
|
.as_ref(),
|
||||||
|
);
|
||||||
|
self.input_mode = InputMode::Popup(PopupType::Alert(
|
||||||
|
Color::Red,
|
||||||
|
format!(
|
||||||
|
"Could not scan directory \"{}\": {}",
|
||||||
|
dir.abs_path.display(),
|
||||||
|
err
|
||||||
|
),
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(err) => self.log(
|
Err(err) => {
|
||||||
LogLevel::Error,
|
self.log(
|
||||||
format!(
|
LogLevel::Error,
|
||||||
"Failed to create directory \"{}\": {}",
|
format!(
|
||||||
remote_path.display(),
|
"Failed to create directory \"{}\": {}",
|
||||||
err
|
remote_path.display(),
|
||||||
)
|
err
|
||||||
.as_ref(),
|
)
|
||||||
),
|
.as_ref(),
|
||||||
|
);
|
||||||
|
self.input_mode = InputMode::Popup(PopupType::Alert(
|
||||||
|
Color::Red,
|
||||||
|
format!(
|
||||||
|
"Failed to create directory \"{}\": {}",
|
||||||
|
remote_path.display(),
|
||||||
|
err
|
||||||
|
),
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -281,8 +335,13 @@ impl FileTransferActivity {
|
|||||||
if let Ok(path) = self.client.pwd() {
|
if let Ok(path) = self.client.pwd() {
|
||||||
self.remote_scan(path.as_path());
|
self.remote_scan(path.as_path());
|
||||||
}
|
}
|
||||||
// Eventually, Reset input mode to explorer
|
// Eventually, Reset input mode to explorer (if input mode is wait or progress)
|
||||||
self.input_mode = InputMode::Explorer;
|
if let InputMode::Popup(ptype) = &self.input_mode {
|
||||||
|
match ptype {
|
||||||
|
PopupType::Wait(_) | PopupType::Progress(_) => self.input_mode = InputMode::Explorer,
|
||||||
|
_ => { /* Nothing to do */ }
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// ### filetransfer_recv
|
/// ### filetransfer_recv
|
||||||
@@ -358,13 +417,28 @@ impl FileTransferActivity {
|
|||||||
)
|
)
|
||||||
.as_ref(),
|
.as_ref(),
|
||||||
);
|
);
|
||||||
|
self.input_mode =
|
||||||
|
InputMode::Popup(PopupType::Alert(
|
||||||
|
Color::Red,
|
||||||
|
format!(
|
||||||
|
"Could not write local file: {}",
|
||||||
|
err
|
||||||
|
),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(err) => self.log(
|
Err(err) => {
|
||||||
LogLevel::Error,
|
self.log(
|
||||||
format!("Could not read remote file: {}", err).as_ref(),
|
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),
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Set progress
|
// Set progress
|
||||||
self.set_progress(total_bytes_written, file.size);
|
self.set_progress(total_bytes_written, file.size);
|
||||||
@@ -394,15 +468,25 @@ impl FileTransferActivity {
|
|||||||
.as_ref(),
|
.as_ref(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
Err(err) => self.log(
|
Err(err) => {
|
||||||
LogLevel::Error,
|
self.log(
|
||||||
format!(
|
LogLevel::Error,
|
||||||
"Failed to download file \"{}\": {}",
|
format!(
|
||||||
file.abs_path.display(),
|
"Failed to download file \"{}\": {}",
|
||||||
err
|
file.abs_path.display(),
|
||||||
)
|
err
|
||||||
.as_ref(),
|
)
|
||||||
),
|
.as_ref(),
|
||||||
|
);
|
||||||
|
self.input_mode = InputMode::Popup(PopupType::Alert(
|
||||||
|
Color::Red,
|
||||||
|
format!(
|
||||||
|
"Failed to download file \"{}\": {}",
|
||||||
|
file.abs_path.display(),
|
||||||
|
err
|
||||||
|
),
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
@@ -416,6 +500,14 @@ impl FileTransferActivity {
|
|||||||
)
|
)
|
||||||
.as_ref(),
|
.as_ref(),
|
||||||
);
|
);
|
||||||
|
self.input_mode = InputMode::Popup(PopupType::Alert(
|
||||||
|
Color::Red,
|
||||||
|
format!(
|
||||||
|
"Failed to open local file for write \"{}\": {}",
|
||||||
|
local_file_path.display(),
|
||||||
|
err
|
||||||
|
),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -449,26 +541,38 @@ impl FileTransferActivity {
|
|||||||
self.filetransfer_recv(&entry, local_dir_path.as_path(), None);
|
self.filetransfer_recv(&entry, local_dir_path.as_path(), None);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(err) => self.log(
|
Err(err) => {
|
||||||
LogLevel::Error,
|
self.log(
|
||||||
format!(
|
LogLevel::Error,
|
||||||
"Could not scan directory \"{}\": {}",
|
format!(
|
||||||
dir.abs_path.display(),
|
"Could not scan directory \"{}\": {}",
|
||||||
err
|
dir.abs_path.display(),
|
||||||
)
|
err
|
||||||
.as_ref(),
|
)
|
||||||
),
|
.as_ref(),
|
||||||
|
);
|
||||||
|
self.input_mode = InputMode::Popup(PopupType::Alert(
|
||||||
|
Color::Red,
|
||||||
|
format!(
|
||||||
|
"Could not scan directory \"{}\": {}",
|
||||||
|
dir.abs_path.display(),
|
||||||
|
err
|
||||||
|
),
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(err) => self.log(
|
Err(err) => {
|
||||||
LogLevel::Error,
|
self.log(
|
||||||
format!(
|
LogLevel::Error,
|
||||||
"Failed to create directory \"{}\": {}",
|
format!(
|
||||||
local_dir_path.display(),
|
"Failed to create directory \"{}\": {}",
|
||||||
err
|
local_dir_path.display(),
|
||||||
)
|
err
|
||||||
.as_ref(),
|
)
|
||||||
),
|
.as_ref(),
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -488,7 +592,7 @@ impl FileTransferActivity {
|
|||||||
// Set index; keep if possible, otherwise set to last item
|
// Set index; keep if possible, otherwise set to last item
|
||||||
self.local.index = match self.local.files.get(self.local.index) {
|
self.local.index = match self.local.files.get(self.local.index) {
|
||||||
Some(_) => self.local.index,
|
Some(_) => self.local.index,
|
||||||
None => self.local.files.len() - 1
|
None => self.local.files.len() - 1,
|
||||||
};
|
};
|
||||||
// Sort files
|
// Sort files
|
||||||
self.local.sort_files_by_name();
|
self.local.sort_files_by_name();
|
||||||
@@ -498,6 +602,10 @@ impl FileTransferActivity {
|
|||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!("Could not scan current directory: {}", err).as_str(),
|
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),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -512,7 +620,7 @@ impl FileTransferActivity {
|
|||||||
// Set index; keep if possible, otherwise set to last item
|
// Set index; keep if possible, otherwise set to last item
|
||||||
self.remote.index = match self.remote.files.get(self.remote.index) {
|
self.remote.index = match self.remote.files.get(self.remote.index) {
|
||||||
Some(_) => self.remote.index,
|
Some(_) => self.remote.index,
|
||||||
None => self.remote.files.len() - 1
|
None => self.remote.files.len() - 1,
|
||||||
};
|
};
|
||||||
// Sort files
|
// Sort files
|
||||||
self.remote.sort_files_by_name();
|
self.remote.sort_files_by_name();
|
||||||
@@ -522,6 +630,10 @@ impl FileTransferActivity {
|
|||||||
LogLevel::Error,
|
LogLevel::Error,
|
||||||
format!("Could not scan current directory: {}", err).as_str(),
|
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),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -556,6 +668,10 @@ impl FileTransferActivity {
|
|||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
// Report err
|
// Report err
|
||||||
|
self.log(
|
||||||
|
LogLevel::Error,
|
||||||
|
format!("Could not change working directory: {}", err).as_str(),
|
||||||
|
);
|
||||||
self.input_mode = InputMode::Popup(PopupType::Alert(
|
self.input_mode = InputMode::Popup(PopupType::Alert(
|
||||||
Color::Red,
|
Color::Red,
|
||||||
format!("Could not change working directory: {}", err),
|
format!("Could not change working directory: {}", err),
|
||||||
@@ -586,6 +702,10 @@ impl FileTransferActivity {
|
|||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
// Report err
|
// Report err
|
||||||
|
self.log(
|
||||||
|
LogLevel::Error,
|
||||||
|
format!("Could not change working directory: {}", err).as_str(),
|
||||||
|
);
|
||||||
self.input_mode = InputMode::Popup(PopupType::Alert(
|
self.input_mode = InputMode::Popup(PopupType::Alert(
|
||||||
Color::Red,
|
Color::Red,
|
||||||
format!("Could not change working directory: {}", err),
|
format!("Could not change working directory: {}", err),
|
||||||
@@ -595,6 +715,10 @@ impl FileTransferActivity {
|
|||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
// Report err
|
// Report err
|
||||||
|
self.log(
|
||||||
|
LogLevel::Error,
|
||||||
|
format!("Could not change working directory: {}", err).as_str(),
|
||||||
|
);
|
||||||
self.input_mode = InputMode::Popup(PopupType::Alert(
|
self.input_mode = InputMode::Popup(PopupType::Alert(
|
||||||
Color::Red,
|
Color::Red,
|
||||||
format!("Could not change working directory: {}", err),
|
format!("Could not change working directory: {}", err),
|
||||||
|
|||||||
Reference in New Issue
Block a user