re add verify relay connection (#197)

This commit is contained in:
reya
2025-10-29 07:42:50 +07:00
committed by GitHub
parent b0fa98831d
commit 649cdff49c
5 changed files with 104 additions and 33 deletions

View File

@@ -295,10 +295,10 @@ impl Room {
}
}
/// Get a single member to represent the room
/// Get a member to represent the room
///
/// This member is always different from the current user.
fn display_member(&self, cx: &App) -> Profile {
/// Display member is always different from the current user.
pub fn display_member(&self, cx: &App) -> Profile {
let registry = Registry::global(cx);
let signer_pubkey = registry.read(cx).signer_pubkey();
@@ -386,6 +386,42 @@ impl Room {
})
}
pub fn verify_connections(&self, cx: &App) -> Task<Result<HashMap<PublicKey, bool>, Error>> {
let members = self.members();
cx.background_spawn(async move {
let client = app_state().client();
let mut result = HashMap::default();
for member in members.into_iter() {
let filter = Filter::new()
.kind(Kind::InboxRelays)
.author(member)
.limit(1);
if let Some(event) = client.database().query(filter).await?.first() {
let urls: Vec<&RelayUrl> = nip17::extract_relay_list(event).collect();
if urls.is_empty() {
result.insert(member, false);
continue;
}
for url in urls {
client.add_relay(url).await.ok();
client.connect_relay(url).await.ok();
}
result.insert(member, true);
} else {
result.insert(member, false);
}
}
Ok(result)
})
}
/// Get all messages belonging to the room
pub fn get_messages(&self, cx: &App) -> Task<Result<Vec<UnsignedEvent>, Error>> {
let conversation_id = self.id.to_string();