Tunnel tui functions are now implemented on Tunnel

This commit is contained in:
Dreaded_X 2025-04-16 02:14:57 +02:00
parent 3ada40d4ae
commit 693df6817a
Signed by: Dreaded_X
GPG Key ID: FA5F485356B0D2D4
2 changed files with 39 additions and 37 deletions

View File

@ -12,7 +12,7 @@ use ratatui::{
}; };
use unicode_width::UnicodeWidthStr; use unicode_width::UnicodeWidthStr;
use crate::tunnel::{self, Tunnel}; use crate::tunnel::Tunnel;
#[derive(Default)] #[derive(Default)]
pub struct Renderer { pub struct Renderer {
@ -28,7 +28,7 @@ impl Renderer {
// NOTE: This needs to be a separate function as the render functions can not be async // NOTE: This needs to be a separate function as the render functions can not be async
pub async fn update(&mut self, tunnels: &[Tunnel], index: Option<usize>) { pub async fn update(&mut self, tunnels: &[Tunnel], index: Option<usize>) {
self.table_rows = futures::stream::iter(tunnels) self.table_rows = futures::stream::iter(tunnels)
.then(tunnel::tui::to_row) .then(Tunnel::to_row)
.collect::<Vec<_>>() .collect::<Vec<_>>()
.await; .await;
@ -144,7 +144,7 @@ impl Renderer {
} }
fn compute_widths(&mut self) -> Vec<Constraint> { fn compute_widths(&mut self) -> Vec<Constraint> {
let table_header = tunnel::tui::header(); let table_header = Tunnel::header();
std::iter::once(&table_header) std::iter::once(&table_header)
.chain(&self.table_rows) .chain(&self.table_rows)
.map(|row| row.iter().map(|cell| cell.width() as u16)) .map(|row| row.iter().map(|cell| cell.width() as u16))
@ -173,7 +173,7 @@ impl Renderer {
.height(1) .height(1)
}); });
let header = tunnel::tui::header() let header = Tunnel::header()
.iter() .iter()
.cloned() .cloned()
.map(Cell::from) .map(Cell::from)

View File

@ -5,6 +5,7 @@ use ratatui::text::Span;
use super::{Tunnel, TunnelAccess}; use super::{Tunnel, TunnelAccess};
impl Tunnel {
pub fn header() -> Vec<Span<'static>> { pub fn header() -> Vec<Span<'static>> {
vec![ vec![
"Name".into(), "Name".into(),
@ -39,3 +40,4 @@ pub async fn to_row(tunnel: &Tunnel) -> Vec<Span<'static>> {
tunnel.inner.stats.tx().to_string().into(), tunnel.inner.stats.tx().to_string().into(),
] ]
} }
}