Skip to content

Commit fcd87e7

Browse files
committed
Make sure that members are added to presence channel on subscription succeeded before calling callbacks
1 parent db7b5c2 commit fcd87e7

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

Source/PusherConnection.swift

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -302,22 +302,27 @@ open class PusherConnection: NSObject {
302302
fileprivate func handleSubscriptionSucceededEvent(json: PusherEventJSON) {
303303
if let channelName = json["channel"] as? String, let chan = self.channels.find(name: channelName) {
304304
chan.subscribed = true
305-
if let eData = json["data"] as? String {
306-
callGlobalCallbacks(forEvent: "pusher:subscription_succeeded", jsonObject: json)
307-
chan.handleEvent(name: "pusher:subscription_succeeded", data: eData)
305+
306+
guard let eventData = json["data"] as? String else {
307+
self.delegate?.debugLog?(message: "Subscription succeeded event received without data key in payload")
308+
return
308309
}
309310

310311
if PusherChannelType.isPresenceChannel(name: channelName) {
311312
if let presChan = self.channels.find(name: channelName) as? PusherPresenceChannel {
312-
if let data = json["data"] as? String, let dataJSON = getPusherEventJSON(from: data) {
313+
if let dataJSON = getPusherEventJSON(from: eventData) {
313314
if let presenceData = dataJSON["presence"] as? [String : AnyObject],
314-
let presenceHash = presenceData["hash"] as? [String : AnyObject] {
315-
presChan.addExistingMembers(memberHash: presenceHash)
315+
let presenceHash = presenceData["hash"] as? [String : AnyObject]
316+
{
317+
presChan.addExistingMembers(memberHash: presenceHash)
316318
}
317319
}
318320
}
319321
}
320322

323+
callGlobalCallbacks(forEvent: "pusher:subscription_succeeded", jsonObject: json)
324+
chan.handleEvent(name: "pusher:subscription_succeeded", data: eventData)
325+
321326
self.delegate?.subscribedToChannel?(name: channelName)
322327

323328
while chan.unsentEvents.count > 0 {

0 commit comments

Comments
 (0)