From fcd82c28c6878c8b2af7b9900101e779224e6407 Mon Sep 17 00:00:00 2001 From: jack Date: Fri, 5 Sep 2025 10:57:01 +0200 Subject: [PATCH] Fix: Swift 6 concurrency - avoid capturing self in detached tasks; deliver parsed Nostr messages via MainActor singleton --- bitchat/Nostr/NostrRelayManager.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bitchat/Nostr/NostrRelayManager.swift b/bitchat/Nostr/NostrRelayManager.swift index 57a08fe5..d511389f 100644 --- a/bitchat/Nostr/NostrRelayManager.swift +++ b/bitchat/Nostr/NostrRelayManager.swift @@ -291,18 +291,18 @@ class NostrRelayManager: ObservableObject { switch message { case .string(let text): // Parse off-main to reduce UI jank, then hop back for state updates - Task.detached { [weak self] in + Task.detached(priority: .utility) { guard let parsed = Self.parseInboundMessage(text) else { return } await MainActor.run { - self?.handleParsedMessage(parsed, from: relayUrl) + NostrRelayManager.shared.handleParsedMessage(parsed, from: relayUrl) } } case .data(let data): if let text = String(data: data, encoding: .utf8) { - Task.detached { [weak self] in + Task.detached(priority: .utility) { guard let parsed = Self.parseInboundMessage(text) else { return } await MainActor.run { - self?.handleParsedMessage(parsed, from: relayUrl) + NostrRelayManager.shared.handleParsedMessage(parsed, from: relayUrl) } } }