Feat(Commands): Started actual implementation of commands
List of added commands: - Exit - CommandLineShow - CommandLineHide - CyclePlanes - CyclePlanesRev - RoomMessageSend
This commit is contained in:
parent
33948164c4
commit
529b869e80
|
@ -3,6 +3,12 @@ pub enum Command {
|
||||||
// Closes the application
|
// Closes the application
|
||||||
Exit,
|
Exit,
|
||||||
|
|
||||||
|
CommandLineShow,
|
||||||
|
CommandLineHide,
|
||||||
|
|
||||||
|
CyclePlanes,
|
||||||
|
CyclePlanesRev,
|
||||||
|
|
||||||
// sends a message to the current room
|
// sends a message to the current room
|
||||||
RoomMessageSend(String),
|
RoomMessageSend(String),
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,5 +4,33 @@ use cli_log::info;
|
||||||
|
|
||||||
pub async fn handle(app: &mut App<'_>, command: &Command) -> Result<EventStatus> {
|
pub async fn handle(app: &mut App<'_>, command: &Command) -> Result<EventStatus> {
|
||||||
info!("Handling command: {:#?}", command);
|
info!("Handling command: {:#?}", command);
|
||||||
Ok(EventStatus::Ok)
|
|
||||||
|
Ok(match command {
|
||||||
|
Command::Exit => EventStatus::Terminate,
|
||||||
|
|
||||||
|
Command::CommandLineShow => {
|
||||||
|
app.ui.cli_enable();
|
||||||
|
EventStatus::Ok
|
||||||
|
}
|
||||||
|
Command::CommandLineHide => {
|
||||||
|
app.ui.cli_disable();
|
||||||
|
EventStatus::Ok
|
||||||
|
}
|
||||||
|
|
||||||
|
Command::CyclePlanes => {
|
||||||
|
app.ui.cycle_main_input_position();
|
||||||
|
EventStatus::Ok
|
||||||
|
}
|
||||||
|
Command::CyclePlanesRev => {
|
||||||
|
app.ui.cycle_main_input_position_rev();
|
||||||
|
EventStatus::Ok
|
||||||
|
}
|
||||||
|
|
||||||
|
Command::RoomMessageSend(msg) => {
|
||||||
|
if let Some(room) = app.status.room_mut() {
|
||||||
|
room.send(msg.clone()).await?;
|
||||||
|
}
|
||||||
|
EventStatus::Ok
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ use anyhow::Result;
|
||||||
use crossterm::event::{Event as CrosstermEvent, KeyCode, KeyEvent, KeyModifiers};
|
use crossterm::event::{Event as CrosstermEvent, KeyCode, KeyEvent, KeyModifiers};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
app::{events::event_types::EventStatus, App},
|
app::{command::Command, events::event_types::EventStatus, App},
|
||||||
ui,
|
ui,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -10,26 +10,26 @@ pub async fn handle(app: &mut App<'_>, input_event: &CrosstermEvent) -> Result<E
|
||||||
match input_event {
|
match input_event {
|
||||||
CrosstermEvent::Key(KeyEvent {
|
CrosstermEvent::Key(KeyEvent {
|
||||||
code: KeyCode::Esc, ..
|
code: KeyCode::Esc, ..
|
||||||
}) => return Ok(EventStatus::Terminate),
|
}) => {
|
||||||
|
app.command_execute(Command::Exit).await?;
|
||||||
|
}
|
||||||
CrosstermEvent::Key(KeyEvent {
|
CrosstermEvent::Key(KeyEvent {
|
||||||
code: KeyCode::Tab, ..
|
code: KeyCode::Tab, ..
|
||||||
}) => {
|
}) => {
|
||||||
app.ui.cycle_main_input_position();
|
app.command_execute(Command::CyclePlanes).await?;
|
||||||
}
|
}
|
||||||
CrosstermEvent::Key(KeyEvent {
|
CrosstermEvent::Key(KeyEvent {
|
||||||
code: KeyCode::BackTab,
|
code: KeyCode::BackTab,
|
||||||
..
|
..
|
||||||
}) => {
|
}) => {
|
||||||
app.ui.cycle_main_input_position_rev();
|
app.command_execute(Command::CyclePlanesRev).await?;
|
||||||
}
|
}
|
||||||
CrosstermEvent::Key(KeyEvent {
|
CrosstermEvent::Key(KeyEvent {
|
||||||
code: KeyCode::Char('c'),
|
code: KeyCode::Char('c'),
|
||||||
modifiers: KeyModifiers::CONTROL,
|
modifiers: KeyModifiers::CONTROL,
|
||||||
..
|
..
|
||||||
}) => {
|
}) => {
|
||||||
app.command_execute(crate::app::command::Command::Exit)
|
app.command_execute(Command::CommandLineShow).await?;
|
||||||
.await?;
|
|
||||||
app.ui.cli_enable();
|
|
||||||
}
|
}
|
||||||
input => match app.ui.input_position() {
|
input => match app.ui.input_position() {
|
||||||
ui::MainInputPosition::MessageCompose => {
|
ui::MainInputPosition::MessageCompose => {
|
||||||
|
@ -39,13 +39,11 @@ pub async fn handle(app: &mut App<'_>, input_event: &CrosstermEvent) -> Result<E
|
||||||
modifiers: KeyModifiers::ALT,
|
modifiers: KeyModifiers::ALT,
|
||||||
..
|
..
|
||||||
}) => {
|
}) => {
|
||||||
match app.status.room_mut() {
|
app.command_execute(Command::RoomMessageSend(
|
||||||
Some(room) => {
|
app.ui.message_compose.lines().join("\n"),
|
||||||
room.send(app.ui.message_compose.lines().join("\n")).await?;
|
))
|
||||||
app.ui.message_compose_clear();
|
.await?;
|
||||||
}
|
app.ui.message_compose_clear();
|
||||||
None => (),
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
_ => {
|
_ => {
|
||||||
app.ui
|
app.ui
|
||||||
|
|
Reference in New Issue