at main 32 lines 1.1 kB view raw
1//! Real-time collaboration debug state. 2//! 3//! This module provides CollabDebugState which is set as context by 4//! the CollabCoordinator component for display in the editor debug panel. 5 6use dioxus::prelude::*; 7use jacquard::smol_str::SmolStr; 8 9/// Debug state for the collab session, displayed in editor debug panel. 10#[derive(Clone, Default)] 11pub struct CollabDebugState { 12 /// Our node ID 13 pub node_id: Option<SmolStr>, 14 /// Our relay URL 15 pub relay_url: Option<SmolStr>, 16 /// URI of our published session record 17 pub session_record_uri: Option<String>, 18 /// Number of discovered peers 19 pub discovered_peers: usize, 20 /// Number of connected peers 21 pub connected_peers: usize, 22 /// Whether we've joined the gossip swarm 23 pub is_joined: bool, 24 /// Last error message 25 pub last_error: Option<SmolStr>, 26} 27 28/// Hook to get the collab debug state signal. 29/// Returns None if called outside CollabCoordinator. 30pub fn try_use_collab_debug() -> Option<Signal<CollabDebugState>> { 31 try_use_context::<Signal<CollabDebugState>>() 32}