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 crate::tunnel::{self, Tunnel};
use crate::tunnel::Tunnel;
#[derive(Default)]
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
pub async fn update(&mut self, tunnels: &[Tunnel], index: Option<usize>) {
self.table_rows = futures::stream::iter(tunnels)
.then(tunnel::tui::to_row)
.then(Tunnel::to_row)
.collect::<Vec<_>>()
.await;
@ -144,7 +144,7 @@ impl Renderer {
}
fn compute_widths(&mut self) -> Vec<Constraint> {
let table_header = tunnel::tui::header();
let table_header = Tunnel::header();
std::iter::once(&table_header)
.chain(&self.table_rows)
.map(|row| row.iter().map(|cell| cell.width() as u16))
@ -173,7 +173,7 @@ impl Renderer {
.height(1)
});
let header = tunnel::tui::header()
let header = Tunnel::header()
.iter()
.cloned()
.map(Cell::from)

View File

@ -5,7 +5,8 @@ use ratatui::text::Span;
use super::{Tunnel, TunnelAccess};
pub fn header() -> Vec<Span<'static>> {
impl Tunnel {
pub fn header() -> Vec<Span<'static>> {
vec![
"Name".into(),
"Access".into(),
@ -15,9 +16,9 @@ pub fn header() -> Vec<Span<'static>> {
"Rx".into(),
"Tx".into(),
]
}
}
pub async fn to_row(tunnel: &Tunnel) -> Vec<Span<'static>> {
pub async fn to_row(tunnel: &Tunnel) -> Vec<Span<'static>> {
let access = match tunnel.inner.access.read().await.deref() {
TunnelAccess::Private(owner) => owner.clone().yellow(),
TunnelAccess::Protected => "PROTECTED".blue(),
@ -38,4 +39,5 @@ pub async fn to_row(tunnel: &Tunnel) -> Vec<Span<'static>> {
tunnel.inner.stats.rx().to_string().into(),
tunnel.inner.stats.tx().to_string().into(),
]
}
}