tappi-share 1.0.2

A modern TUI p2p file sharing app
use ratatui::{
    buffer::Buffer,
    layout::Rect,
    widgets::{Paragraph, Widget},
};
use ratatui_macros::line;

use crate::{
    app::app_main::App,
    cli::{Commands, SignalingSolutions},
    ui::utils::{BlockDefault, BlockExt, StringExt},
};

pub fn server_handshake_widget(app: &mut App, area: Rect, buf: &mut Buffer) {
    if let Commands::Client(client_args) = &app.args.app_mode {
        let line = match &client_args.signaling_mode {
            SignalingSolutions::Socket(args) => {
                line!(format!("{} ({}:{})", args.room, args.address, args.port))
            }
            SignalingSolutions::Mqtt(args) => {
                line!(format!(
                    "Local: {} Remote: {}",
                    args.local_name, args.remote_name
                ))
            }
            _ => {
                line!("")
            }
        };

        let window_block = BlockDefault::window(&app.theme, None, false);
        let block = BlockDefault::bordered(&app.theme).title("Signaling status".spaced());

        let paragraph = Paragraph::new(vec![
            line,
            line!(format!("Status: {:?}", app.handshake_state)),
        ]);

        let block_area = window_block.inner(area);
        let paragraph_area: Rect = block.inner_with_margin(block_area, 0, 1);
        window_block.render(area, buf);
        block.render(block_area, buf);
        paragraph.render(paragraph_area, buf);
    }
}