diff options
author | Tim Oram <dev@mitmaro.ca> | 2020-09-17 10:45:49 -0230 |
---|---|---|
committer | Tim Oram <dev@mitmaro.ca> | 2020-09-17 22:01:14 -0230 |
commit | c6dbcc6017a7a1b343a585729239ad52ccb6ceba (patch) | |
tree | 5f27828bc435ef9eed85ebd835d55418985c07cb /src/error/mod.rs | |
parent | 10d797ebf3910f45f6ed3cd01573e531f388f31d (diff) |
Move error handling to process module
The error handling module needed to have state provided to it from other
modules, which meant that the other modules needed to understand how the
error module worked. This was awkward and fragile. This moves the error
handling code into the process module and makes it a global system. This
has the advantage of not requiring tracking of the previous state and
allows for the removal of the HandleInputResult struct.
Diffstat (limited to 'src/error/mod.rs')
-rw-r--r-- | src/error/mod.rs | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/src/error/mod.rs b/src/error/mod.rs deleted file mode 100644 index 0cab480..0000000 --- a/src/error/mod.rs +++ /dev/null @@ -1,75 +0,0 @@ -use crate::git_interactive::GitInteractive; -use crate::input::input_handler::{InputHandler, InputMode}; -use crate::input::Input; -use crate::process::handle_input_result::{HandleInputResult, HandleInputResultBuilder}; -use crate::process::process_module::ProcessModule; -use crate::process::state::State; -use crate::view::view_data::ViewData; -use crate::view::View; - -pub struct Error { - return_state: State, - view_data: Option<ViewData>, - view_data_no_error: ViewData, -} - -impl ProcessModule for Error { - fn activate(&mut self, state: &State, _git_interactive: &GitInteractive) { - if let State::Error { - ref message, - ref return_state, - } = *state - { - self.view_data = Some(ViewData::new_error(message.as_str())); - self.return_state = *return_state.clone(); - } - else { - self.view_data = None; - } - } - - fn deactivate(&mut self) { - self.view_data = None; - } - - fn build_view_data(&mut self, view: &View<'_>, _: &GitInteractive) -> &ViewData { - let (view_width, view_height) = view.get_view_size(); - if let Some(ref mut view_data) = self.view_data { - view_data.set_view_size(view_width, view_height); - view_data.rebuild(); - view_data - } - else { - self.view_data_no_error.set_view_size(view_width, view_height); - self.view_data_no_error.rebuild(); - &self.view_data_no_error - } - } - - fn handle_input( - &mut self, - input_handler: &InputHandler<'_>, - _git_interactive: &mut GitInteractive, - _view: &View<'_>, - ) -> HandleInputResult - { - let input = input_handler.get_input(InputMode::Default); - let mut result = HandleInputResultBuilder::new(input); - if let Input::Resize = input { - } - else { - result = result.state(self.return_state.clone()); - } - result.build() - } -} - -impl Error { - pub(crate) fn new() -> Self { - Self { - return_state: State::List, - view_data: None, - view_data_no_error: ViewData::new_error("Help module activated without error message"), - } - } -} |