- Removed unused `id` and `app_state` fields from `ChatPanel`; updated constructor to accept but ignore the state, reducing memory footprint. - Switched database access in `ChatPanel` from a raw `Mutex` lock to a connection pool (`app_state.conn.get()`), improving concurrency and error handling. - Reordered and cleaned up imports in `status_panel.rs` and formatted struct fields for readability. - Updated VS Code launch configuration to pass `--noui` argument, enabling headless mode for debugging. - Bumped several crate versions in `Cargo.lock` (e.g., `bitflags` to 2.10.0, `syn` to 2.0.108, `cookie` to 0.16.2) and added the new `ashpd` dependency, aligning the project with latest library releases.
44 lines
1.5 KiB
Rust
44 lines
1.5 KiB
Rust
use crate::channels::{ChannelAdapter, VoiceAdapter, WebChannelAdapter};
|
|
use crate::config::AppConfig;
|
|
use crate::llm::LLMProvider;
|
|
use crate::session::SessionManager;
|
|
use aws_sdk_s3::Client as S3Client;
|
|
use redis::Client as RedisClient;
|
|
use std::collections::HashMap;
|
|
use std::sync::Arc;
|
|
use tokio::sync::mpsc;
|
|
use crate::shared::models::BotResponse;
|
|
use crate::auth::AuthService;
|
|
use crate::shared::utils::DbPool;
|
|
pub struct AppState {
|
|
pub drive: Option<S3Client>,
|
|
pub cache: Option<Arc<RedisClient>>,
|
|
pub bucket_name: String,
|
|
pub config: Option<AppConfig>,
|
|
pub conn: DbPool,
|
|
pub session_manager: Arc<tokio::sync::Mutex<SessionManager>>,
|
|
pub llm_provider: Arc<dyn LLMProvider>,
|
|
pub auth_service: Arc<tokio::sync::Mutex<AuthService>>,
|
|
pub channels: Arc<tokio::sync::Mutex<HashMap<String, Arc<dyn ChannelAdapter>>>>,
|
|
pub response_channels: Arc<tokio::sync::Mutex<HashMap<String, mpsc::Sender<BotResponse>>>>,
|
|
pub web_adapter: Arc<WebChannelAdapter>,
|
|
pub voice_adapter: Arc<VoiceAdapter>,
|
|
}
|
|
impl Clone for AppState {
|
|
fn clone(&self) -> Self {
|
|
Self {
|
|
drive: self.drive.clone(),
|
|
bucket_name: self.bucket_name.clone(),
|
|
config: self.config.clone(),
|
|
conn: self.conn.clone(),
|
|
cache: self.cache.clone(),
|
|
session_manager: Arc::clone(&self.session_manager),
|
|
llm_provider: Arc::clone(&self.llm_provider),
|
|
auth_service: Arc::clone(&self.auth_service),
|
|
channels: Arc::clone(&self.channels),
|
|
response_channels: Arc::clone(&self.response_channels),
|
|
web_adapter: Arc::clone(&self.web_adapter),
|
|
voice_adapter: Arc::clone(&self.voice_adapter),
|
|
}
|
|
}
|
|
}
|