aboutsummaryrefslogtreecommitdiff
path: root/src/components/status.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/status.rs')
-rw-r--r--src/components/status.rs32
1 files changed, 22 insertions, 10 deletions
diff --git a/src/components/status.rs b/src/components/status.rs
index d91782f..aa2b384 100644
--- a/src/components/status.rs
+++ b/src/components/status.rs
@@ -2,29 +2,31 @@ use ratatui::prelude::*;
use ratatui::widgets::*;
use crate::app_action::AppAction;
+use crate::app_event::AppEvent;
use crate::component::Component;
use crate::keys::key_commands::serialize_key_event;
#[derive(Default, Clone)]
pub struct StatusBar {
- message: String,
- current_key: String,
- error: bool,
+ pub message: String,
+ pub current_key: String,
+ pub error: bool,
+ pub url_to_open: Option<url::Url>,
}
impl Component for StatusBar {
fn handle_key_event(
&mut self,
key: crossterm::event::KeyEvent,
- ) -> eyre::Result<Option<AppAction>> {
+ ) -> Option<AppAction> {
let key_str = serialize_key_event(key);
self.current_key = key_str;
- Ok(None)
+ None
}
fn handle_action(&mut self, action: crate::app_action::AppAction) {
- match action {
+ match action.clone() {
AppAction::StatusBarSetMessage(message) => {
self.error = false;
self.message = message;
@@ -33,14 +35,24 @@ impl Component for StatusBar {
self.error = true;
self.message = message;
}
- AppAction::StatusBarGetInput(_prompt) => todo!(),
- _ => {
- self.current_key += " ";
- self.current_key += &action.to_string();
+ AppAction::OpenUrl => {
+ self.url_to_open =
+ Some(url::Url::parse("molerat://example.com").unwrap());
}
+ _ => {}
}
}
+ fn update(&mut self) -> Option<AppEvent> {
+ if let Some(url) = &self.url_to_open {
+ let event = AppEvent::OpenUrl(url.clone());
+ self.url_to_open = None;
+ return Some(event);
+ }
+
+ None
+ }
+
fn render(
&mut self,
frame: &mut ratatui::prelude::Frame,