diff --git a/bin/commands/patch.rs b/bin/commands/patch.rs index d480f6e6..d873f43b 100644 --- a/bin/commands/patch.rs +++ b/bin/commands/patch.rs @@ -412,7 +412,7 @@ mod interface { } else { ReviewMode::Create }; - let selection = review::Tui::new( + let response = review::Tui::new( mode, profile.storage.clone(), rid, @@ -425,13 +425,14 @@ mod interface { .run() .await?; - log::info!("Received selection from TUI: {:?}", selection); + log::debug!("Received response from TUI: {:?}", response); - if let Some(selection) = selection.as_ref() { - match selection.action { + if let Some(response) = response.as_ref() { + match response.action { ReviewAction::Comment => { - let hunk = selection - .hunk + let hunk = response + .state + .selected_hunk() .ok_or_else(|| anyhow!("expected a selected hunk"))?; let item = hunks .get(hunk) diff --git a/bin/commands/patch/review.rs b/bin/commands/patch/review.rs index c7e855a5..9177a940 100644 --- a/bin/commands/patch/review.rs +++ b/bin/commands/patch/review.rs @@ -46,11 +46,10 @@ pub enum ReviewAction { #[derive(Clone, Debug, Eq, PartialEq)] pub struct Args(String); -#[derive(Clone, Debug, Eq, PartialEq)] -pub struct Selection { +#[derive(Clone, Debug)] +pub struct Response { + pub state: AppState, pub action: ReviewAction, - pub hunk: Option, - pub args: Option, } pub enum ReviewMode { @@ -93,7 +92,7 @@ impl Tui { } } - pub async fn run(self) -> Result> { + pub async fn run(self) -> Result> { let viewport = Viewport::Fullscreen; let channel = Channel::default(); @@ -137,7 +136,7 @@ pub struct DiffViewState { cursor: Position, } -#[derive(Clone)] +#[derive(Clone, Debug)] pub struct AppState { /// The repository to operate on. _rid: RepoId, @@ -516,7 +515,7 @@ impl<'a> Show for App<'a> { } impl<'a> store::Update for App<'a> { - type Return = Selection; + type Return = Response; fn update(&mut self, message: Message) -> Option> { log::info!("Received message: {:?}", message); @@ -549,10 +548,9 @@ impl<'a> store::Update for App<'a> { None } Message::Comment => Some(Exit { - value: Some(Selection { + value: Some(Response { action: ReviewAction::Comment, - hunk: self.state.selected_hunk(), - args: None, + state: self.state.clone(), }), }), Message::Accept => {