Fix: Swift 6 concurrency - avoid capturing self in detached tasks; deliver parsed Nostr messages via MainActor singleton

This commit is contained in:
jack
2025-09-05 10:57:01 +02:00
parent 4e51c83914
commit fcd82c28c6
+4 -4
View File
@@ -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)
}
}
}