From e24b65833a699df24af8ad4938c416aa60745f98 Mon Sep 17 00:00:00 2001 From: Alex Emmet <111742636+Alex-Emmet@users.noreply.github.com> Date: Tue, 25 Nov 2025 16:14:37 +0100 Subject: [PATCH] TUI Changes prep --- src/gui/settings_panel.rs | 1 - src/gui/tui.rs | 36 ++++++++++++++++++++++++++++++++++++ src/gui/user_panel.rs | 1 - src/main.rs | 4 ++++ src/server/server.rs | 5 +---- src/util/file_util.rs | 2 +- 6 files changed, 42 insertions(+), 7 deletions(-) delete mode 100644 src/gui/settings_panel.rs create mode 100644 src/gui/tui.rs delete mode 100644 src/gui/user_panel.rs diff --git a/src/gui/settings_panel.rs b/src/gui/settings_panel.rs deleted file mode 100644 index 8b13789..0000000 --- a/src/gui/settings_panel.rs +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/gui/tui.rs b/src/gui/tui.rs new file mode 100644 index 0000000..ce4331e --- /dev/null +++ b/src/gui/tui.rs @@ -0,0 +1,36 @@ +use sha1::digest::block_buffer::Lazy; +use tokio::{self, sync::RwLock}; + +use crate::{gui::log_panel, main::SHUTDOWN}; + +// ****** UTIL ****** +fn init_terminal() { + let mut stdout = stdout(); + execute!(stdout, EnterAlternateScreen).unwrap(); + enable_raw_mode().unwrap(); +} + +// ****** MAIN ****** +pub static UNIQUE: Lazy> = Lazy::new(|| RwLock::new(false)); +pub static TERMINAL: LazyLock>>>> = + LazyLock::new(|| { + Arc::new(Mutex::new( + Terminal::new(CrosstermBackend::new(stdout())).unwrap(), + )) + }); + +pub fn start_tui() { + tokio::spawn(async move { + init_terminal(); + while !SHUTDOWN.read().await { + if UNIQUE.read().await { + render_tui(); + } else { + thread::sleep(Duration::from_millis(50)); + } + } + }) +} +pub fn render_tui() { + log_panel::render(); +} diff --git a/src/gui/user_panel.rs b/src/gui/user_panel.rs deleted file mode 100644 index 8b13789..0000000 --- a/src/gui/user_panel.rs +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/main.rs b/src/main.rs index 33c2be8..1525907 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,9 @@ use json::{self, JsonValue::String}; +use once_cell::sync::Lazy; use std::sync::Arc; use std::sync::LazyLock; use std::sync::Mutex; +use tokio::sync::RwLock; use tokio::time::{Duration, sleep}; use uuid::Uuid; @@ -34,6 +36,8 @@ use crate::util::file_util::has_dir; pub static APP_STATE: LazyLock>> = LazyLock::new(|| Arc::new(Mutex::new(AppState::new()))); +pub static SHUTDOWN: Lazy> = Lazy::new(|| RwLock::new(false)); + #[tokio::main(flavor = "multi_thread", worker_threads = 8)] #[allow(unused_must_use, dead_code)] async fn main() { diff --git a/src/server/server.rs b/src/server/server.rs index 29c2980..4a14490 100644 --- a/src/server/server.rs +++ b/src/server/server.rs @@ -8,9 +8,8 @@ use base64::engine::general_purpose::STANDARD; use bytes::Bytes; use futures::StreamExt; use futures_util::TryFutureExt; +use http_body_util::BodyExt; use http_body_util::Full; -use http_body_util::{BodyExt, Collected}; -use hyper::upgrade::OnUpgrade; use hyper::{Method, StatusCode}; use hyper::{ Request as HttpRequest, Response as HttpResponse, body::Incoming, server::conn::http1, upgrade, @@ -19,7 +18,6 @@ use hyper_util::rt::tokio::TokioIo; use hyper_util::service::TowerToHyperService; use rustls::ServerConfig; use rustls::pki_types::{CertificateDer, PrivateKeyDer}; -use sha1::digest::generic_array::arr::Inc; use sha1::{Digest, Sha1}; use std::error::Error; use std::io::ErrorKind; @@ -27,7 +25,6 @@ use std::io::{self, BufReader}; use std::net::{IpAddr, SocketAddr}; use std::result::Result::Ok; use std::sync::Arc; -use std::thread::panicking; use std::{future::Future, pin::Pin, time::Duration}; use tokio::net::TcpListener; use tokio_rustls::TlsAcceptor; diff --git a/src/util/file_util.rs b/src/util/file_util.rs index adb38e1..ab00781 100644 --- a/src/util/file_util.rs +++ b/src/util/file_util.rs @@ -1,6 +1,6 @@ use std::ffi::OsStr; use std::fs::{self, File}; -use std::io::{self, BufReader, Cursor, Read}; +use std::io::{self, BufReader, Read}; use std::path::{Path, PathBuf}; use sysinfo::System; use uuid::Uuid;