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}