buffer as a feature

This commit is contained in:
Priec
2025-08-22 13:47:34 +02:00
parent f49899e66d
commit f127298e5a
21 changed files with 40 additions and 39 deletions

10
Cargo.lock generated
View File

@@ -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",

View File

@@ -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ý <filippriec@gmail.com>"]

View File

@@ -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 {

9
client/src/buffer/mod.rs Normal file
View File

@@ -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;

View File

@@ -1,4 +1,4 @@
// src/state/app/buffer.rs
// src/buffer/state/buffer.rs
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum AppView {

View File

@@ -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,

View File

@@ -1,6 +1,4 @@
// src/components/handlers.rs
pub mod sidebar;
pub mod buffer_list;
pub use sidebar::*;
pub use buffer_list::*;

View File

@@ -1,5 +0,0 @@
// src/functions/common.rs
pub mod buffer;
pub use buffer::*;

View File

@@ -1,6 +1,5 @@
// src/functions/mod.rs
pub mod common;
pub mod modes;
pub use modes::*;

View File

@@ -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;

View File

@@ -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

View File

@@ -8,6 +8,7 @@ pub mod modes;
pub mod functions;
pub mod services;
pub mod utils;
pub mod buffer;
pub use ui::run_ui;

View File

@@ -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;

View File

@@ -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(),
));

View File

@@ -1,5 +1,4 @@
// src/state/app.rs
pub mod state;
pub mod buffer;
pub mod search;

View File

@@ -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;

View File

@@ -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};

View File

@@ -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;

View File

@@ -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)

View File

@@ -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;

View File

@@ -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;