@@ -302,22 +302,27 @@ open class PusherConnection: NSObject {
302
302
fileprivate func handleSubscriptionSucceededEvent( json: PusherEventJSON ) {
303
303
if let channelName = json [ " channel " ] as? String , let chan = self . channels. find ( name: channelName) {
304
304
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
308
309
}
309
310
310
311
if PusherChannelType . isPresenceChannel ( name: channelName) {
311
312
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 ) {
313
314
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)
316
318
}
317
319
}
318
320
}
319
321
}
320
322
323
+ callGlobalCallbacks ( forEvent: " pusher:subscription_succeeded " , jsonObject: json)
324
+ chan. handleEvent ( name: " pusher:subscription_succeeded " , data: eventData)
325
+
321
326
self . delegate? . subscribedToChannel ? ( name: channelName)
322
327
323
328
while chan. unsentEvents. count > 0 {
0 commit comments