diff --git a/src/ui/activities/auth/mod.rs b/src/ui/activities/auth/mod.rs index 790cd1f..3b48d5e 100644 --- a/src/ui/activities/auth/mod.rs +++ b/src/ui/activities/auth/mod.rs @@ -108,17 +108,24 @@ impl AuthActivity { /// /// If enabled in configuration, check for updates from Github fn check_for_updates(&mut self) { + debug!("Check for updates..."); // Check version only if unset in the store let ctx: &Context = self.context.as_ref().unwrap(); if !ctx.store.isset(STORE_KEY_LATEST_VERSION) { + debug!("Version is not set in storage"); let mut new_version: Option = match ctx.config_client.as_ref() { Some(client) => { if client.get_check_for_updates() { + debug!("Check for updates is enabled"); // Send request match git::check_for_updates(env!("CARGO_PKG_VERSION")) { - Ok(version) => version, + Ok(version) => { + info!("Latest version is: {:?}", version); + version + } Err(err) => { // Report error + error!("Failed to get latest version: {}", err); self.mount_error( format!("Could not check for new updates: {}", err).as_str(), ); @@ -127,6 +134,7 @@ impl AuthActivity { } } } else { + info!("Check for updates is disabled"); None } } @@ -149,6 +157,7 @@ impl Activity for AuthActivity { /// `on_create` must initialize all the data structures used by the activity /// Context is taken from activity manager and will be released only when activity is destroyed fn on_create(&mut self, mut context: Context) { + debug!("Initializing activity"); // Initialize file transfer params context.ft_params = Some(FileTransferParams::default()); // Set context @@ -156,7 +165,9 @@ impl Activity for AuthActivity { // Clear terminal self.context.as_mut().unwrap().clear_screen(); // Put raw mode on enabled - let _ = enable_raw_mode(); + if let Err(err) = enable_raw_mode() { + error!("Failed to enter raw mode: {}", err); + } // Init bookmarks client if self.bookmarks_client.is_none() { self.init_bookmarks_client(); @@ -169,6 +180,7 @@ impl Activity for AuthActivity { self.check_for_updates(); // Initialize view self.init(); + info!("Activity initialized"); } /// ### on_draw @@ -213,7 +225,9 @@ impl Activity for AuthActivity { /// This function finally releases the context fn on_destroy(&mut self) -> Option { // Disable raw mode - let _ = disable_raw_mode(); + if let Err(err) = disable_raw_mode() { + error!("Failed to disable raw mode: {}", err); + } self.context.as_ref()?; // Clear terminal and return match self.context.take() { diff --git a/src/ui/activities/filetransfer/misc.rs b/src/ui/activities/filetransfer/misc.rs index ec174ac..b13e47e 100644 --- a/src/ui/activities/filetransfer/misc.rs +++ b/src/ui/activities/filetransfer/misc.rs @@ -36,6 +36,12 @@ impl FileTransferActivity { /// /// Add message to log events pub(super) fn log(&mut self, level: LogLevel, msg: String) { + // Log to file + match level { + LogLevel::Error => error!("{}", msg), + LogLevel::Info => info!("{}", msg), + LogLevel::Warn => warn!("{}", msg), + } // Create log record let record: LogRecord = LogRecord::new(level, msg); //Check if history overflows the size diff --git a/src/ui/activities/filetransfer/mod.rs b/src/ui/activities/filetransfer/mod.rs index 9b324e0..5327ba7 100644 --- a/src/ui/activities/filetransfer/mod.rs +++ b/src/ui/activities/filetransfer/mod.rs @@ -273,25 +273,33 @@ impl Activity for FileTransferActivity { /// `on_create` is the function which must be called to initialize the activity. /// `on_create` must initialize all the data structures used by the activity fn on_create(&mut self, context: Context) { + debug!("Initializing activity..."); // Set context self.context = Some(context); // Clear terminal self.context.as_mut().unwrap().clear_screen(); // Put raw mode on enabled - let _ = enable_raw_mode(); + 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; + debug!("Read working directory"); // Configure text editor self.setup_text_editor(); + debug!("Setup text editor"); // init view self.init(); + debug!("Initialized view"); // Verify error state from context if let Some(err) = self.context.as_mut().unwrap().get_error() { + error!("Fatal error on create: {}", err); self.mount_fatal(&err); } + info!("Created FileTransferActivity"); } /// ### on_draw @@ -308,6 +316,10 @@ impl Activity for FileTransferActivity { // Check if connected (popup must be None, otherwise would try reconnecting in loop in case of error) if !self.client.is_connected() && self.view.get_props(COMPONENT_TEXT_FATAL).is_none() { let params = self.context.as_ref().unwrap().ft_params.as_ref().unwrap(); + info!( + "Client is not connected to remote; connecting to {}:{}", + params.address, params.port + ); let msg: String = format!("Connecting to {}:{}...", params.address, params.port); // Set init state to connecting popup self.mount_wait(msg.as_str()); @@ -341,7 +353,9 @@ impl Activity for FileTransferActivity { /// This function must be called once before terminating the activity. fn on_destroy(&mut self) -> Option { // Disable raw mode - let _ = disable_raw_mode(); + if let Err(err) = disable_raw_mode() { + error!("Failed to disable raw mode: {}", err); + } // Disconnect client if self.client.is_connected() { let _ = self.client.disconnect(); diff --git a/src/ui/activities/filetransfer/session.rs b/src/ui/activities/filetransfer/session.rs index ad733db..5257531 100644 --- a/src/ui/activities/filetransfer/session.rs +++ b/src/ui/activities/filetransfer/session.rs @@ -783,7 +783,9 @@ impl FileTransferActivity { } } // Put input mode back to normal - let _ = disable_raw_mode(); + if let Err(err) = disable_raw_mode() { + error!("Failed to disable raw mode: {}", err); + } // Leave alternate mode if let Some(ctx) = self.context.as_mut() { ctx.leave_alternate_screen(); diff --git a/src/ui/activities/setup/actions.rs b/src/ui/activities/setup/actions.rs index 34af461..d965d42 100644 --- a/src/ui/activities/setup/actions.rs +++ b/src/ui/activities/setup/actions.rs @@ -111,13 +111,17 @@ impl SetupActivity { env::set_var("EDITOR", cli.get_text_editor()); let placeholder: String = format!("# Type private SSH key for {}@{}\n", username, host); // Put input mode back to normal - let _ = disable_raw_mode(); + if let Err(err) = disable_raw_mode() { + error!("Failed to disable raw mode: {}", err); + } // Leave alternate mode if let Some(ctx) = self.context.as_mut() { ctx.leave_alternate_screen(); } // Re-enable raw mode - let _ = enable_raw_mode(); + if let Err(err) = enable_raw_mode() { + error!("Failed to enter raw mode: {}", err); + } // Write key to file match edit::edit(placeholder.as_bytes()) { Ok(rsa_key) => { diff --git a/src/ui/activities/setup/config.rs b/src/ui/activities/setup/config.rs index 5a235df..25c1b0d 100644 --- a/src/ui/activities/setup/config.rs +++ b/src/ui/activities/setup/config.rs @@ -88,7 +88,9 @@ impl SetupActivity { env::set_var("EDITOR", config_cli.get_text_editor()); } // Prepare terminal - let _ = disable_raw_mode(); + if let Err(err) = disable_raw_mode() { + error!("Failed to disable raw mode: {}", err); + } // Leave alternate mode ctx.leave_alternate_screen(); // Get result @@ -121,7 +123,9 @@ impl SetupActivity { // Enter alternate mode ctx.enter_alternate_screen(); // Re-enable raw mode - let _ = enable_raw_mode(); + if let Err(err) = enable_raw_mode() { + error!("Failed to enter raw mode: {}", err); + } // Return result result } diff --git a/src/ui/activities/setup/mod.rs b/src/ui/activities/setup/mod.rs index 5eed9f8..15966fa 100644 --- a/src/ui/activities/setup/mod.rs +++ b/src/ui/activities/setup/mod.rs @@ -110,7 +110,9 @@ impl Activity for SetupActivity { // Clear terminal self.context.as_mut().unwrap().clear_screen(); // Put raw mode on enabled - let _ = enable_raw_mode(); + if let Err(err) = enable_raw_mode() { + error!("Failed to enter raw mode: {}", err); + } // Init view self.init_setup(); // Verify error state from context @@ -161,7 +163,9 @@ impl Activity for SetupActivity { /// This function finally releases the context fn on_destroy(&mut self) -> Option { // Disable raw mode - let _ = disable_raw_mode(); + if let Err(err) = disable_raw_mode() { + error!("Failed to disable raw mode: {}", err); + } self.context.as_ref()?; // Clear terminal and return match self.context.take() { diff --git a/src/ui/context.rs b/src/ui/context.rs index a0fcfa7..e3d44ef 100644 --- a/src/ui/context.rs +++ b/src/ui/context.rs @@ -104,29 +104,38 @@ impl Context { /// /// Enter alternate screen (gui window) pub fn enter_alternate_screen(&mut self) { - let _ = execute!( + match execute!( self.terminal.backend_mut(), EnterAlternateScreen, DisableMouseCapture - ); + ) { + Err(err) => error!("Failed to enter alternate screen: {}", err), + Ok(_) => info!("Entered alternate screen"), + } } /// ### leave_alternate_screen /// /// Go back to normal screen (gui window) pub fn leave_alternate_screen(&mut self) { - let _ = execute!( + match execute!( self.terminal.backend_mut(), LeaveAlternateScreen, DisableMouseCapture - ); + ) { + Err(err) => error!("Failed to leave alternate screen: {}", err), + Ok(_) => info!("Left alternate screen"), + } } /// ### clear_screen /// /// Clear terminal screen pub fn clear_screen(&mut self) { - let _ = self.terminal.clear(); + match self.terminal.clear() { + Err(err) => error!("Failed to clear screen: {}", err), + Ok(_) => info!("Cleared screen"), + } } }