Skip to content

Commit 78b7bb4

Browse files
authored
fix(realtime): wildcard event not handled in onBroadcast callback (#749)
* Fix wildcard event not handled in onBroadcast callback * Update comment
1 parent 2eac629 commit 78b7bb4

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

Sources/Realtime/CallbackManager.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ final class CallbackManager: Sendable {
124124
}
125125
return nil
126126
}
127-
let callbacks = broadcastCallbacks.filter { $0.event == event }
127+
let callbacks = broadcastCallbacks.filter { $0.event == "*" || $0.event.lowercased() == event.lowercased() }
128128
callbacks.forEach { $0.callback(json) }
129129
}
130130

Tests/RealtimeTests/CallbackManagerTests.swift

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,14 +187,29 @@ final class CallbackManagerTests: XCTestCase {
187187

188188
let jsonObject = try JSONObject(message)
189189

190+
// Match exact event
190191
let receivedMessage = LockIsolated<JSONObject?>(nil)
191192
callbackManager.addBroadcastCallback(event: event) {
192193
receivedMessage.setValue($0)
193194
}
194-
195195
callbackManager.triggerBroadcast(event: event, json: jsonObject)
196-
197196
XCTAssertEqual(receivedMessage.value, jsonObject)
197+
198+
// Match event case-insensitive
199+
let caseInsensitiveMessage = LockIsolated<JSONObject?>(nil)
200+
callbackManager.addBroadcastCallback(event: event) {
201+
caseInsensitiveMessage.setValue($0)
202+
}
203+
callbackManager.triggerBroadcast(event: "NEW_USER", json: jsonObject)
204+
XCTAssertEqual(caseInsensitiveMessage.value, jsonObject)
205+
206+
// Match any events with wildcard
207+
let wildcardReceivedMessage = LockIsolated<JSONObject?>(nil)
208+
callbackManager.addBroadcastCallback(event: "*") {
209+
wildcardReceivedMessage.setValue($0)
210+
}
211+
callbackManager.triggerBroadcast(event: event, json: jsonObject)
212+
XCTAssertEqual(wildcardReceivedMessage.value, jsonObject)
198213
}
199214

200215
func testTriggerPresenceDiffs() {

0 commit comments

Comments
 (0)