poddy/app/state/
mod.rs

1mod deployments;
2pub mod list;
3mod pods;
4
5pub use pods::*;
6
7use crate::app::state::deployments::Deployments;
8use crate::app::state::list::ListWatcher;
9use crate::input::key::Key;
10use crate::ui::StateRenderer;
11use k8s_openapi::api::core::v1::Pod;
12
13pub enum AppState {
14    Initializing,
15    Pods(ListWatcher<Pod>),
16    Deployments(ListWatcher<Deployments>),
17}
18
19impl AppState {
20    pub fn render<R: StateRenderer>(&self, r: R) {
21        match self {
22            Self::Pods(pods) => pods.render(r),
23            Self::Deployments(deployments) => deployments.render(r),
24            _ => {}
25        }
26    }
27
28    pub async fn on_key(&self, key: Key) {
29        match self {
30            Self::Pods(pods) => {
31                pods.on_key(key).await;
32            }
33            Self::Deployments(deployments) => {
34                deployments.on_key(key).await;
35            }
36            _ => {}
37        }
38    }
39}
40
41impl Default for AppState {
42    fn default() -> Self {
43        Self::Initializing
44    }
45}