From f127298e5a85e64797a3f81785e9674e8ce51333 Mon Sep 17 00:00:00 2001 From: Priec Date: Fri, 22 Aug 2025 13:47:34 +0200 Subject: [PATCH] buffer as a feature --- Cargo.lock | 10 +++++----- Cargo.toml | 2 +- .../common/buffer.rs => buffer/functions.rs} | 6 +++--- client/src/buffer/mod.rs | 9 +++++++++ client/src/{state/app/buffer.rs => buffer/state.rs} | 2 +- .../handlers/buffer_list.rs => buffer/ui.rs} | 6 +++--- client/src/components/handlers.rs | 2 -- client/src/functions/common.rs | 5 ----- client/src/functions/mod.rs | 1 - client/src/functions/modes/navigation/add_logic_nav.rs | 3 +-- client/src/functions/modes/navigation/admin_nav.rs | 2 +- client/src/lib.rs | 1 + client/src/modes/general/dialog.rs | 5 +++-- client/src/modes/handlers/event.rs | 8 ++++---- client/src/state/app.rs | 1 - client/src/tui/functions/common/login.rs | 2 +- client/src/tui/functions/common/logout.rs | 2 +- client/src/tui/functions/common/register.rs | 2 +- client/src/tui/functions/intro.rs | 2 +- client/src/ui/handlers/render.rs | 4 ++-- client/src/ui/handlers/ui.rs | 4 ++-- 21 files changed, 40 insertions(+), 39 deletions(-) rename client/src/{functions/common/buffer.rs => buffer/functions.rs} (86%) create mode 100644 client/src/buffer/mod.rs rename client/src/{state/app/buffer.rs => buffer/state.rs} (99%) rename client/src/{components/handlers/buffer_list.rs => buffer/ui.rs} (94%) delete mode 100644 client/src/functions/common.rs diff --git a/Cargo.lock b/Cargo.lock index 3bfa951..61f2e65 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -493,7 +493,7 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "canvas" -version = "0.4.2" +version = "0.5.0" dependencies = [ "anyhow", "async-trait", @@ -584,7 +584,7 @@ dependencies = [ [[package]] name = "client" -version = "0.4.2" +version = "0.5.0" dependencies = [ "anyhow", "async-trait", @@ -635,7 +635,7 @@ dependencies = [ [[package]] name = "common" -version = "0.4.2" +version = "0.5.0" dependencies = [ "prost", "prost-types", @@ -3022,7 +3022,7 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" [[package]] name = "search" -version = "0.4.2" +version = "0.5.0" dependencies = [ "anyhow", "common", @@ -3121,7 +3121,7 @@ dependencies = [ [[package]] name = "server" -version = "0.4.2" +version = "0.5.0" dependencies = [ "anyhow", "bcrypt", diff --git a/Cargo.toml b/Cargo.toml index 3dcddd9..1f0607f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,7 @@ resolver = "2" [workspace.package] # TODO: idk how to do the name, fix later # name = "komp_ac" -version = "0.4.2" +version = "0.5.0" edition = "2021" license = "GPL-3.0-or-later" authors = ["Filip Priečinský "] diff --git a/client/src/functions/common/buffer.rs b/client/src/buffer/functions.rs similarity index 86% rename from client/src/functions/common/buffer.rs rename to client/src/buffer/functions.rs index ee4ef33..578d457 100644 --- a/client/src/functions/common/buffer.rs +++ b/client/src/buffer/functions.rs @@ -1,7 +1,7 @@ -// src/functions/common/buffer.rs +// src/buffer/functions/buffer.rs -use crate::state::app::buffer::BufferState; -use crate::state::app::buffer::AppView; +use crate::buffer::state::BufferState; +use crate::buffer::state::AppView; pub fn get_view_layer(view: &AppView) -> u8 { match view { diff --git a/client/src/buffer/mod.rs b/client/src/buffer/mod.rs new file mode 100644 index 0000000..89a2cc9 --- /dev/null +++ b/client/src/buffer/mod.rs @@ -0,0 +1,9 @@ +// src/buffer/mod.rs + +pub mod state; +pub mod functions; +pub mod ui; + +pub use state::{AppView, BufferState}; +pub use functions::*; +pub use ui::render_buffer_list; diff --git a/client/src/state/app/buffer.rs b/client/src/buffer/state.rs similarity index 99% rename from client/src/state/app/buffer.rs rename to client/src/buffer/state.rs index 111f93c..2d67413 100644 --- a/client/src/state/app/buffer.rs +++ b/client/src/buffer/state.rs @@ -1,4 +1,4 @@ -// src/state/app/buffer.rs +// src/buffer/state/buffer.rs #[derive(Debug, Clone, PartialEq, Eq)] pub enum AppView { diff --git a/client/src/components/handlers/buffer_list.rs b/client/src/buffer/ui.rs similarity index 94% rename from client/src/components/handlers/buffer_list.rs rename to client/src/buffer/ui.rs index fd814c5..0386845 100644 --- a/client/src/components/handlers/buffer_list.rs +++ b/client/src/buffer/ui.rs @@ -1,7 +1,7 @@ -// src/components/handlers/buffer_list.rs +// src/buffer/ui.rs use crate::config::colors::themes::Theme; -use crate::state::app::buffer::BufferState; +use crate::buffer::state::BufferState; use crate::state::app::state::AppState; // Add this import use ratatui::{ layout::{Alignment, Rect}, @@ -11,7 +11,7 @@ use ratatui::{ Frame, }; use unicode_width::UnicodeWidthStr; -use crate::functions::common::buffer::get_view_layer; +use crate::buffer::functions::get_view_layer; pub fn render_buffer_list( f: &mut Frame, diff --git a/client/src/components/handlers.rs b/client/src/components/handlers.rs index 9d7cc74..aa32bb7 100644 --- a/client/src/components/handlers.rs +++ b/client/src/components/handlers.rs @@ -1,6 +1,4 @@ // src/components/handlers.rs pub mod sidebar; -pub mod buffer_list; pub use sidebar::*; -pub use buffer_list::*; diff --git a/client/src/functions/common.rs b/client/src/functions/common.rs deleted file mode 100644 index 0810b57..0000000 --- a/client/src/functions/common.rs +++ /dev/null @@ -1,5 +0,0 @@ -// src/functions/common.rs - -pub mod buffer; - -pub use buffer::*; diff --git a/client/src/functions/mod.rs b/client/src/functions/mod.rs index 411f408..8b6a791 100644 --- a/client/src/functions/mod.rs +++ b/client/src/functions/mod.rs @@ -1,6 +1,5 @@ // src/functions/mod.rs -pub mod common; pub mod modes; pub use modes::*; diff --git a/client/src/functions/modes/navigation/add_logic_nav.rs b/client/src/functions/modes/navigation/add_logic_nav.rs index 5d4087c..2e4fd68 100644 --- a/client/src/functions/modes/navigation/add_logic_nav.rs +++ b/client/src/functions/modes/navigation/add_logic_nav.rs @@ -3,9 +3,8 @@ use crate::config::binds::config::{Config, EditorKeybindingMode}; use crate::state::{ app::state::AppState, pages::add_logic::{AddLogicFocus, AddLogicState}, - app::buffer::AppView, - app::buffer::BufferState, }; +use crate::buffer::{AppView, BufferState}; use crossterm::event::{KeyEvent, KeyCode, KeyModifiers}; use crate::services::GrpcClient; use tokio::sync::mpsc; diff --git a/client/src/functions/modes/navigation/admin_nav.rs b/client/src/functions/modes/navigation/admin_nav.rs index 12814d5..0cba76e 100644 --- a/client/src/functions/modes/navigation/admin_nav.rs +++ b/client/src/functions/modes/navigation/admin_nav.rs @@ -2,7 +2,7 @@ use crate::state::pages::admin::{AdminFocus, AdminState}; use crate::state::app::state::AppState; use crate::config::binds::config::Config; -use crate::state::app::buffer::{BufferState, AppView}; +use crate::buffer::state::{BufferState, AppView}; use crate::state::pages::add_table::{AddTableState, LinkDefinition}; use ratatui::widgets::ListState; use crate::state::pages::add_logic::{AddLogicState, AddLogicFocus}; // Added AddLogicFocus import diff --git a/client/src/lib.rs b/client/src/lib.rs index 216a3a2..9c2f83f 100644 --- a/client/src/lib.rs +++ b/client/src/lib.rs @@ -8,6 +8,7 @@ pub mod modes; pub mod functions; pub mod services; pub mod utils; +pub mod buffer; pub use ui::run_ui; diff --git a/client/src/modes/general/dialog.rs b/client/src/modes/general/dialog.rs index e390b6e..9d0c831 100644 --- a/client/src/modes/general/dialog.rs +++ b/client/src/modes/general/dialog.rs @@ -3,8 +3,9 @@ use crossterm::event::{Event, KeyCode}; use crate::config::binds::config::Config; use crate::ui::handlers::context::DialogPurpose; -use crate::state::app::{state::AppState, buffer::AppView}; -use crate::state::app::buffer::BufferState; +use crate::state::app::state::AppState; +use crate::buffer::AppView; +use crate::buffer::state::BufferState; use crate::state::pages::auth::{LoginState, RegisterState}; use crate::state::pages::admin::AdminState; use crate::modes::handlers::event::EventOutcome; diff --git a/client/src/modes/handlers/event.rs b/client/src/modes/handlers/event.rs index 2faf82a..2f877d5 100644 --- a/client/src/modes/handlers/event.rs +++ b/client/src/modes/handlers/event.rs @@ -1,7 +1,8 @@ // src/modes/handlers/event.rs use crate::config::binds::config::Config; use crate::config::binds::key_sequences::KeySequenceTracker; -use crate::functions::common::buffer; +use crate::buffer::functions; +use crate::buffer::{AppView, BufferState, switch_buffer}; use crate::functions::modes::navigation::add_logic_nav; use crate::functions::modes::navigation::add_logic_nav::SaveLogicResultSender; use crate::functions::modes::navigation::add_table_nav::SaveTableResultSender; @@ -19,7 +20,6 @@ use crate::services::grpc_client::GrpcClient; use canvas::{FormEditor, AppMode as CanvasMode}; use crate::state::{ app::{ - buffer::{AppView, BufferState}, search::SearchState, state::AppState, }, @@ -477,14 +477,14 @@ impl EventHandler { ) { match action { "next_buffer" => { - if buffer::switch_buffer(buffer_state, true) { + if switch_buffer(buffer_state, true) { return Ok(EventOutcome::Ok( "Switched to next buffer".to_string(), )); } } "previous_buffer" => { - if buffer::switch_buffer(buffer_state, false) { + if switch_buffer(buffer_state, false) { return Ok(EventOutcome::Ok( "Switched to previous buffer".to_string(), )); diff --git a/client/src/state/app.rs b/client/src/state/app.rs index d3b27a6..4635f0c 100644 --- a/client/src/state/app.rs +++ b/client/src/state/app.rs @@ -1,5 +1,4 @@ // src/state/app.rs pub mod state; -pub mod buffer; pub mod search; diff --git a/client/src/tui/functions/common/login.rs b/client/src/tui/functions/common/login.rs index fa1065a..d956903 100644 --- a/client/src/tui/functions/common/login.rs +++ b/client/src/tui/functions/common/login.rs @@ -4,7 +4,7 @@ use crate::services::auth::AuthClient; use crate::state::pages::auth::AuthState; use crate::state::pages::auth::LoginState; use crate::state::app::state::AppState; -use crate::state::app::buffer::{AppView, BufferState}; +use crate::buffer::state::{AppView, BufferState}; use crate::config::storage::storage::{StoredAuthData, save_auth_data}; use crate::ui::handlers::context::DialogPurpose; use common::proto::komp_ac::auth::LoginResponse; diff --git a/client/src/tui/functions/common/logout.rs b/client/src/tui/functions/common/logout.rs index b2df449..1dc3bda 100644 --- a/client/src/tui/functions/common/logout.rs +++ b/client/src/tui/functions/common/logout.rs @@ -2,7 +2,7 @@ use crate::config::storage::delete_auth_data; use crate::state::pages::auth::AuthState; use crate::state::app::state::AppState; -use crate::state::app::buffer::{AppView, BufferState}; +use crate::buffer::state::{AppView, BufferState}; use crate::ui::handlers::context::DialogPurpose; use tracing::{error, info}; diff --git a/client/src/tui/functions/common/register.rs b/client/src/tui/functions/common/register.rs index fc894e7..0f215f6 100644 --- a/client/src/tui/functions/common/register.rs +++ b/client/src/tui/functions/common/register.rs @@ -6,7 +6,7 @@ use crate::state::{ app::state::AppState, }; use crate::ui::handlers::context::DialogPurpose; -use crate::state::app::buffer::{AppView, BufferState}; +use crate::buffer::state::{AppView, BufferState}; use common::proto::komp_ac::auth::AuthResponse; use anyhow::Context; use tokio::spawn; diff --git a/client/src/tui/functions/intro.rs b/client/src/tui/functions/intro.rs index 89be99c..2f6b8fb 100644 --- a/client/src/tui/functions/intro.rs +++ b/client/src/tui/functions/intro.rs @@ -1,6 +1,6 @@ // src/tui/functions/intro.rs use crate::state::app::state::AppState; -use crate::state::app::buffer::{AppView, BufferState}; +use crate::buffer::state::{AppView, BufferState}; /// Handles intro screen selection by updating view history and managing focus state. /// 0: Continue (restores last form or default) diff --git a/client/src/ui/handlers/render.rs b/client/src/ui/handlers/render.rs index df8c6a7..c731a32 100644 --- a/client/src/ui/handlers/render.rs +++ b/client/src/ui/handlers/render.rs @@ -10,13 +10,13 @@ use crate::components::{ handlers::sidebar::{self, calculate_sidebar_layout}, intro::intro::render_intro, render_background, - render_buffer_list, render_command_line, render_status_line, }; +use crate::buffer::render_buffer_list; use crate::config::colors::themes::Theme; use crate::modes::general::command_navigation::NavigationState; -use crate::state::app::buffer::BufferState; +use crate::buffer::state::BufferState; use crate::state::app::state::AppState; use crate::state::pages::admin::AdminState; use crate::state::pages::auth::AuthState; diff --git a/client/src/ui/handlers/ui.rs b/client/src/ui/handlers/ui.rs index d4eebd9..8f7d49c 100644 --- a/client/src/ui/handlers/ui.rs +++ b/client/src/ui/handlers/ui.rs @@ -15,8 +15,8 @@ use crate::state::pages::auth::RegisterState; use crate::state::pages::admin::AdminState; use crate::state::pages::admin::AdminFocus; use crate::state::pages::intro::IntroState; -use crate::state::app::buffer::BufferState; -use crate::state::app::buffer::AppView; +use crate::buffer::state::BufferState; +use crate::buffer::state::AppView; use crate::state::app::state::AppState; use crate::tui::terminal::{EventReader, TerminalCore}; use crate::ui::handlers::render::render_ui;