Radish alpha
r
Radicle terminal user interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
bin: Migrate to new processor API
Erik Kundt committed 5 months ago
commit 0e1c18b2257c3af145609dfb77eb60ab3abfbc7d
parent a0b143e3a2e45e1368528ff1ceb597a5937cbea2
5 files changed +27 -18
modified bin/commands/issue/list.rs
@@ -6,12 +6,12 @@ use std::str::FromStr;

use anyhow::{bail, Result};

-
use ratatui::Viewport;
use termion::event::Key;

use ratatui::layout::Constraint;
use ratatui::style::Stylize;
use ratatui::text::Text;
+
use ratatui::Viewport;

use radicle::cob::thread::CommentId;
use radicle::git::Oid;
@@ -22,6 +22,7 @@ use radicle::Profile;
use radicle_tui as tui;

use tui::store;
+
use tui::task::EmptyProcessors;
use tui::ui::rm::widget::container::{
    Container, ContainerProps, Footer, FooterProps, Header, HeaderProps, SectionGroup,
    SectionGroupProps, SplitContainer, SplitContainerFocus, SplitContainerProps,
@@ -370,7 +371,14 @@ impl App {
                    .into()
            });

-
        tui::rm(state, window, Viewport::Inline(20), channel).await
+
        tui::rm(
+
            state,
+
            window,
+
            Viewport::Inline(20),
+
            channel,
+
            EmptyProcessors::new(),
+
        )
+
        .await
    }
}

modified bin/commands/issue/list/ui.rs
@@ -4,7 +4,7 @@ use std::vec;

use radicle::issue::{self, CloseReason};
use ratatui::Frame;
-
use tokio::sync::mpsc::UnboundedSender;
+
use tokio::sync::broadcast;

use termion::event::Key;

@@ -119,7 +119,7 @@ pub struct Browser {
}

impl Browser {
-
    pub fn new(tx: UnboundedSender<Message>) -> Self {
+
    pub fn new(tx: broadcast::Sender<Message>) -> Self {
        Self {
            issues: Container::default()
                .header(Header::default().to_widget(tx.clone()).on_update(|state| {
modified bin/commands/patch/list.rs
@@ -7,16 +7,21 @@ use std::str::FromStr;

use anyhow::Result;

-
use ratatui::Viewport;
use termion::event::Key;

-
use radicle_tui as tui;
-

use ratatui::layout::Constraint;
use ratatui::style::Stylize;
use ratatui::text::Text;
+
use ratatui::Viewport;
+

+
use radicle::patch::PatchId;
+
use radicle::storage::git::Repository;
+
use radicle::Profile;
+

+
use radicle_tui as tui;

use tui::store;
+
use tui::task::EmptyProcessors;
use tui::ui::rm::widget::container::{Container, Footer, FooterProps, Header, HeaderProps};
use tui::ui::rm::widget::input::{TextView, TextViewProps, TextViewState};
use tui::ui::rm::widget::window::{
@@ -25,13 +30,8 @@ use tui::ui::rm::widget::window::{
use tui::ui::rm::widget::{ToWidget, Widget};
use tui::ui::Column;
use tui::ui::{span, BufferedValue};
-

use tui::{BoxedAny, Channel, Exit, PageStack};

-
use radicle::patch::PatchId;
-
use radicle::storage::git::Repository;
-
use radicle::Profile;
-

use self::rmui::{Browser, BrowserProps};
use super::common::{Mode, PatchOperation};

@@ -65,7 +65,7 @@ impl App {
            let channel = Channel::default();
            let state = imui::App::try_from(&self.context)?;

-
            tui::im(state, viewport, channel).await
+
            tui::im(state, viewport, channel, EmptyProcessors::new()).await
        } else {
            let channel = Channel::default();
            let tx = channel.tx.clone();
@@ -81,7 +81,7 @@ impl App {
                        .into()
                });

-
            tui::rm(state, window, viewport, channel).await
+
            tui::rm(state, window, viewport, channel, EmptyProcessors::new()).await
        }
    }
}
modified bin/commands/patch/list/rmui.rs
@@ -3,7 +3,7 @@ use std::str::FromStr;
use std::vec;

use ratatui::Frame;
-
use tokio::sync::mpsc::UnboundedSender;
+
use tokio::sync::broadcast;

use termion::event::Key;

@@ -120,7 +120,7 @@ pub struct Browser {
}

impl Browser {
-
    pub fn new(tx: UnboundedSender<Message>) -> Self {
+
    pub fn new(tx: broadcast::Sender<Message>) -> Self {
        Self {
            patches: Container::default()
                .header(Header::default().to_widget(tx.clone()).on_update(|state| {
modified bin/commands/patch/review.rs
@@ -23,6 +23,7 @@ use radicle::Storage;
use radicle_tui as tui;

use tui::store;
+
use tui::task::EmptyProcessors;
use tui::ui::im::widget::{PanesState, TableState, TextViewState, Window};
use tui::ui::im::{Borders, Context, Show, Ui};
use tui::ui::span;
@@ -116,7 +117,7 @@ impl Tui {
            .unwrap_or(default);

        let app = App::new(self.storage, self.review, self.hunks, state, self.mode)?;
-
        let response = tui::im(app, viewport, channel).await?;
+
        let response = tui::im(app, viewport, channel, EmptyProcessors::new()).await?;

        if let Some(response) = response.as_ref() {
            store.write(&state::to_json(&response.state)?)?;
@@ -236,7 +237,7 @@ impl AppState {
    }
}

-
#[derive(Clone)]
+
#[derive(Clone, Debug)]
pub struct App<'a> {
    /// All hunks.
    hunks: Arc<Mutex<Vec<StatefulHunkItem<'a>>>>,