Skip to main content

fission_command_ui/
app.rs

1use super::components::{AppShell, ConfirmationDialog};
2use super::screens::ActiveScreen;
3use super::state::UiState;
4use fission::prelude::*;
5
6#[derive(Clone)]
7pub struct CliUiApp;
8
9impl From<CliUiApp> for Widget {
10    fn from(_component: CliUiApp) -> Self {
11        let (_ctx, view) = fission::build::current::<UiState>();
12        let content = ActiveScreen.into();
13        let shell = AppShell { content }.into();
14        if view.state().pending_dialog.is_none() {
15            return shell;
16        }
17        Overlay {
18            content: shell,
19            overlay: ConfirmationDialog.into(),
20            ..Default::default()
21        }
22        .into()
23    }
24}