atproto blogging
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}