synpad 0.1.0

A full-featured Matrix chat client built with Dioxus
use dioxus::prelude::*;

use crate::state::app_state::AppState;

/// Screen share indicator shown in the timeline when someone is screen sharing.
#[component]
pub fn ScreenShareIndicator() -> Element {
    let state = use_context::<Signal<AppState>>();
    let call = &state.read().call_state;

    if !call.is_screen_sharing && !call.participants.iter().any(|p| p.is_screen_sharing) {
        return rsx! {};
    }

    let sharer = if call.is_screen_sharing {
        "You are".to_string()
    } else {
        call.participants
            .iter()
            .find(|p| p.is_screen_sharing)
            .map(|p| format!("{} is", p.display_name))
            .unwrap_or_else(|| "Someone is".to_string())
    };

    rsx! {
        div {
            class: "screen-share-indicator",
            span { class: "screen-share-indicator__icon", "🖥" }
            span { class: "screen-share-indicator__text", "{sharer} sharing their screen" }
        }
    }
}