refactor: complete Phase 13 deep architecture refactoring (etaps 3-7)

Split monolithic files into modular architecture:
- ui/messages.rs (893→365 lines): extract modals/, compose_bar.rs
- tdlib/messages.rs (836→3 files): split into messages/mod, convert, operations
- config/mod.rs (642→3 files): extract validation.rs, loader.rs
- Code duplication cleanup: shared components, ~220 lines removed
- Documentation: PROJECT_STRUCTURE.md rewrite, 16 files got //! docs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Mikhail Kilin
2026-02-06 15:28:11 +03:00
parent 931954d829
commit ffd52d2384
39 changed files with 1706 additions and 1665 deletions

View File

@@ -3,6 +3,7 @@
//! Handles reply, forward, and draft functionality
use crate::app::{App, ChatState};
use crate::app::methods::messages::MessageMethods;
use crate::tdlib::{MessageInfo, TdClientTrait};
/// Compose methods for reply/forward/draft

View File

@@ -3,6 +3,7 @@
//! Handles chat list navigation and selection
use crate::app::{App, ChatState};
use crate::app::methods::search::SearchMethods;
use crate::tdlib::TdClientTrait;
/// Navigation methods for chat list

View File

@@ -1,7 +1,12 @@
//! Application state module.
//!
//! Contains `App<T>` — the central state struct parameterized by `TdClientTrait`
//! for dependency injection. Methods are organized into trait modules in `methods/`.
mod chat_filter;
mod chat_state;
mod state;
mod methods;
pub mod methods;
pub use chat_filter::{ChatFilter, ChatFilterCriteria};
pub use chat_state::ChatState;
@@ -9,7 +14,7 @@ pub use state::AppScreen;
pub use methods::*;
use crate::tdlib::{ChatInfo, TdClient, TdClientTrait};
use crate::types::{ChatId, MessageId};
use crate::types::ChatId;
use ratatui::widgets::ListState;
/// Main application state for the Telegram TUI client.
@@ -35,6 +40,7 @@ use ratatui::widgets::ListState;
///
/// ```no_run
/// use tele_tui::app::App;
/// use tele_tui::app::methods::navigation::NavigationMethods;
/// use tele_tui::config::Config;
///
/// let config = Config::default();