mirror of
https://seed.radicle.dev/rad:z39mP9rQAaGmERfUMPULfPUi473tY.git
synced 2026-11-16 00:10:38 +08:00
refactor(patch): Return review app state
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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<usize>,
|
||||
pub args: Option<Args>,
|
||||
}
|
||||
|
||||
pub enum ReviewMode {
|
||||
@@ -93,7 +92,7 @@ impl Tui {
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn run(self) -> Result<Option<Selection>> {
|
||||
pub async fn run(self) -> Result<Option<Response>> {
|
||||
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<Message> for App<'a> {
|
||||
}
|
||||
|
||||
impl<'a> store::Update<Message> for App<'a> {
|
||||
type Return = Selection;
|
||||
type Return = Response;
|
||||
|
||||
fn update(&mut self, message: Message) -> Option<Exit<Self::Return>> {
|
||||
log::info!("Received message: {:?}", message);
|
||||
@@ -549,10 +548,9 @@ impl<'a> store::Update<Message> 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 => {
|
||||
|
||||
Reference in New Issue
Block a user