From fe62aea08af4f3aaeacc101a4498195efa3dd5ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20D=E2=80=99Aquino?= Date: Fri, 26 Sep 2025 13:01:05 -0700 Subject: [PATCH] Stop ProfileManager when app is being backgrounded MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This should prevent RUNNINGBOARD 0xdead10cc crashes related to ProfileManager and app background states. Signed-off-by: Daniel D’Aquino --- .../NostrNetworkManager.swift | 16 +++++++--------- .../NostrNetworkManager/ProfilesManager.swift | 4 +++- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/damus/Core/Networking/NostrNetworkManager/NostrNetworkManager.swift b/damus/Core/Networking/NostrNetworkManager/NostrNetworkManager.swift index 1157314b..4010e998 100644 --- a/damus/Core/Networking/NostrNetworkManager/NostrNetworkManager.swift +++ b/damus/Core/Networking/NostrNetworkManager/NostrNetworkManager.swift @@ -47,7 +47,7 @@ class NostrNetworkManager { self.profilesManager = ProfilesManager(subscriptionManager: reader, ndb: delegate.ndb) } - // MARK: - Control functions + // MARK: - Control and lifecycle functions /// Connects the app to the Nostr network func connect() { @@ -60,6 +60,12 @@ class NostrNetworkManager { self.pool.disconnect() } + func close() async { + await self.reader.cancelAllTasks() + await self.profilesManager.stop() + pool.close() + } + func ping() { self.pool.ping() } @@ -137,14 +143,6 @@ class NostrNetworkManager { print("damus-donation donating...") WalletConnect.pay(url: nwc, pool: self.pool, post: self.postbox, invoice: invoice, zap_request: nil, delay: nil) } - - - // MARK: - App lifecycle functions - - func close() async { - await self.reader.cancelAllTasks() - pool.close() - } } diff --git a/damus/Core/Networking/NostrNetworkManager/ProfilesManager.swift b/damus/Core/Networking/NostrNetworkManager/ProfilesManager.swift index 2b0f462d..3d528994 100644 --- a/damus/Core/Networking/NostrNetworkManager/ProfilesManager.swift +++ b/damus/Core/Networking/NostrNetworkManager/ProfilesManager.swift @@ -49,9 +49,11 @@ extension NostrNetworkManager { } } - func stop() { + func stop() async { self.subscriptionSwitcherTask?.cancel() self.profileListenerTask?.cancel() + try? await self.subscriptionSwitcherTask?.value + try? await self.profileListenerTask?.value } private func restartProfileListenerTask() {