From ac05b8377282d652bfa6904621a6333e7673c0f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20D=E2=80=99Aquino?= Date: Thu, 22 Jan 2026 12:20:51 -0800 Subject: [PATCH] Make RelayPool actor a global actor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This allows us to use the same actor for related classes to help with thread safety. Changelog-None Signed-off-by: Daniel D’Aquino --- damus/Core/Nostr/RelayPool.swift | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/damus/Core/Nostr/RelayPool.swift b/damus/Core/Nostr/RelayPool.swift index 88b3e6c5..be8e3c80 100644 --- a/damus/Core/Nostr/RelayPool.swift +++ b/damus/Core/Nostr/RelayPool.swift @@ -27,8 +27,15 @@ struct SeenEvent: Hashable { let evid: NoteId } +@globalActor +actor RelayPoolActor { + static let shared = RelayPoolActor() + private init() {} +} + /// Establishes and manages connections and subscriptions to a list of relays. -actor RelayPool { +@RelayPoolActor +class RelayPool { @MainActor private(set) var relays: [Relay] = [] var open: Bool = false @@ -72,7 +79,7 @@ actor RelayPool { seen.removeAll() } - init(ndb: Ndb?, keypair: Keypair? = nil) { + nonisolated init(ndb: Ndb?, keypair: Keypair? = nil) { self.ndb = ndb self.keypair = keypair