diff --git a/apps/desktop2/src/components/conversation.tsx b/apps/desktop2/src/components/conversation.tsx index 2f9c30b6..335bd3ec 100644 --- a/apps/desktop2/src/components/conversation.tsx +++ b/apps/desktop2/src/components/conversation.tsx @@ -12,7 +12,7 @@ export function Conversation({ className?: string; }) { const { ark } = useRouteContext({ strict: false }); - const thread = ark.parse_event_thread(event.tags); + const thread = ark.get_thread(event.tags); return ( diff --git a/packages/ark/src/ark.ts b/packages/ark/src/ark.ts index 59d4434f..fe480bc8 100644 --- a/packages/ark/src/ark.ts +++ b/packages/ark/src/ark.ts @@ -1,10 +1,8 @@ import { - type Contact, type Event, type EventWithReplies, type Interests, type Keys, - Kind, type LumeColumn, type Metadata, type Settings, @@ -413,12 +411,19 @@ export class Ark { } } - public parse_event_thread(tags: string[][]) { + public get_thread(tags: string[][]) { let root: string = null; let reply: string = null; // Get all event references from tags, ignore mention const events = tags.filter((el) => el[0] === "e" && el[3] !== "mention"); + const relays = tags.filter((el) => el[0] === "e" && el[2].length); + + if (relays.length >= 1) { + for (const relay of relays) { + if (relay[2]?.length) this.add_relay(relay[2]); + } + } if (events.length === 1) { root = events[0][1]; diff --git a/src-tauri/src/nostr/relay.rs b/src-tauri/src/nostr/relay.rs index 4cb6aed3..d1c3ec8b 100644 --- a/src-tauri/src/nostr/relay.rs +++ b/src-tauri/src/nostr/relay.rs @@ -84,9 +84,14 @@ pub async fn list_connected_relays(state: State<'_, Nostr>) -> Result, #[tauri::command] pub async fn connect_relay(relay: &str, state: State<'_, Nostr>) -> Result { let client = &state.client; - if let Ok(_) = client.add_relay(relay).await { - let _ = client.connect_relay(relay); - Ok(true) + if let Ok(status) = client.add_relay(relay).await { + if status == true { + println!("connecting to relay: {}", relay); + let _ = client.connect_relay(relay); + Ok(true) + } else { + Ok(false) + } } else { Ok(false) }