From 6c808aea5cdba9683cba0ded00f552d1175e7081 Mon Sep 17 00:00:00 2001 From: Ultradesu Date: Tue, 21 Jul 2026 20:10:37 +0300 Subject: [PATCH] Extendex DHT info --- Cargo.lock | 2 -- Cargo.toml | 2 +- src/federation/mod.rs | 4 ++++ src/ui/federation.rs | 8 ++++++++ 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 47955db..5257d3a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1493,7 +1493,6 @@ dependencies = [ [[package]] name = "federation-net" version = "0.1.0" -source = "git+https://gt.hexor.cy/ab/frid.git#8ee1db9cf89ea604c6b8a8c3fe089a714c1e321f" dependencies = [ "blake3", "data-encoding", @@ -3027,7 +3026,6 @@ dependencies = [ [[package]] name = "music-dht" version = "0.1.0" -source = "git+https://gt.hexor.cy/ab/frid.git#8ee1db9cf89ea604c6b8a8c3fe089a714c1e321f" dependencies = [ "async-trait", "blake3", diff --git a/Cargo.toml b/Cargo.toml index 622fb9e..6a6f546 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,7 @@ image = { version = "0.25.10", default-features = false, features = ["jpeg", "pn lofty = "0.22" # P2P federation: library index in a shared DHT + audio streaming between # peers (same protocol as furumi-fd). -music-dht = { git = "https://gt.hexor.cy/ab/frid.git" } +music-dht = { path = "../frid/crates/music-dht" } ratatui = "0.30.1" rodio = { version = "0.22.2", default-features = false, features = ["playback", "mp3", "flac", "vorbis", "wav", "symphonia-aac", "symphonia-isomp4", "symphonia-alac"] } rusqlite = { version = "0.32", features = ["bundled", "functions"] } diff --git a/src/federation/mod.rs b/src/federation/mod.rs index 01d2f5d..2a2857d 100644 --- a/src/federation/mod.rs +++ b/src/federation/mod.rs @@ -149,8 +149,10 @@ pub struct FedStatus { pub running: bool, pub network: String, pub endpoint_id: String, + pub dht_node_id: String, pub connected_peers: Vec, pub known_contacts: usize, + pub stored_dht_records: Option, pub published_items: usize, pub last_sync: Option, pub last_error: Option, @@ -509,12 +511,14 @@ impl Federation { status.running = true; status.network = running.network_name.clone(); status.endpoint_id = service.endpoint_id().to_string(); + status.dht_node_id = service.node_id().to_string(); status.connected_peers = service .connected_peers() .iter() .map(|p| p.to_string()) .collect(); status.known_contacts = service.known_peers().len(); + status.stored_dht_records = service.dht_record_count().await.ok(); status.published_items = service .list_local_items() .await diff --git a/src/ui/federation.rs b/src/ui/federation.rs index cb51e70..ae309e5 100644 --- a/src/ui/federation.rs +++ b/src/ui/federation.rs @@ -109,6 +109,7 @@ fn draw_status(frame: &mut Frame, area: Rect, state: &AppState) { lines.push(status_line("Node", "running".to_string())); lines.push(status_line("Network", status.network.clone())); lines.push(status_line("Endpoint ID", status.endpoint_id.clone())); + lines.push(status_line("DHT node ID", status.dht_node_id.clone())); let peers = if status.connected_peers.is_empty() { "none yet".to_string() } else { @@ -121,6 +122,13 @@ fn draw_status(frame: &mut Frame, area: Rect, state: &AppState) { "Known contacts", status.known_contacts.to_string(), )); + lines.push(status_line( + "Stored DHT records", + status + .stored_dht_records + .map(|count| count.to_string()) + .unwrap_or_else(|| "unavailable".to_string()), + )); lines.push(status_line( "Published items", status.published_items.to_string(),