@@ -167,15 +167,17 @@ import NWWebSocket
167
167
- parameter channelName: The name of the channel
168
168
*/
169
169
internal func unsubscribe( channelName: String ) {
170
- if let chan = self . channels. find ( name: channelName) , chan. subscribed {
171
- self . sendEvent ( event: Constants . Events. Pusher. unsubscribe,
172
- data: [
173
- Constants . JSONKeys. channel: channelName
174
- ] as [ String : Any ]
175
- )
176
-
177
- self . channels. remove ( name: channelName)
170
+ guard let chan = self . channels. find ( name: channelName) , chan. subscribed else {
171
+ return
178
172
}
173
+
174
+ self . sendEvent ( event: Constants . Events. Pusher. unsubscribe,
175
+ data: [
176
+ Constants . JSONKeys. channel: channelName
177
+ ] as [ String : Any ]
178
+ )
179
+
180
+ self . channels. remove ( name: channelName)
179
181
}
180
182
181
183
/**
@@ -216,17 +218,19 @@ import NWWebSocket
216
218
- parameter channel: The name of the channel
217
219
*/
218
220
fileprivate func sendClientEvent( event: String , data: Any , channel: PusherChannel ? ) {
219
- if let channel = channel {
220
- if channel. type == . presence || channel. type == . private {
221
- let dataString = JSONStringify ( [ Constants . JSONKeys. event: event,
222
- Constants . JSONKeys. data: data,
223
- Constants . JSONKeys. channel: channel. name] as [ String : Any ] )
224
- PusherLogger . shared. debug ( for: . clientEventSent,
225
- context: dataString)
226
- self . socket. send ( string: dataString)
227
- } else {
228
- PusherLogger . shared. debug ( for: . cannotSendClientEventForChannel)
229
- }
221
+ guard let channel = channel else {
222
+ return
223
+ }
224
+
225
+ if channel. type == . presence || channel. type == . private {
226
+ let dataString = JSONStringify ( [ Constants . JSONKeys. event: event,
227
+ Constants . JSONKeys. data: data,
228
+ Constants . JSONKeys. channel: channel. name] as [ String : Any ] )
229
+ PusherLogger . shared. debug ( for: . clientEventSent,
230
+ context: dataString)
231
+ self . socket. send ( string: dataString)
232
+ } else {
233
+ PusherLogger . shared. debug ( for: . cannotSendClientEventForChannel)
230
234
}
231
235
}
232
236
@@ -440,36 +444,39 @@ import NWWebSocket
440
444
- parameter json: The PusherEventJSON containing successful subscription data
441
445
*/
442
446
fileprivate func handleSubscriptionSucceededEvent( event: PusherEvent ) {
443
- if let channelName = event. channelName, let chan = self . channels. find ( name: channelName) {
444
- chan. subscribed = true
447
+ guard let channelName = event. channelName,
448
+ let chan = self . channels. find ( name: channelName) else {
449
+ return
450
+ }
445
451
446
- guard event. data != nil else {
447
- PusherLogger . shared. debug ( for: . subscriptionSucceededNoDataInPayload)
448
- return
449
- }
452
+ chan. subscribed = true
450
453
451
- if PusherChannelType . isPresenceChannel ( name: channelName) {
452
- if let presChan = self . channels. find ( name: channelName) as? PusherPresenceChannel {
453
- if let dataJSON = event. dataToJSONObject ( ) as? [ String : Any ] ,
454
- let presenceData = dataJSON [ Constants . JSONKeys. presence] as? [ String : AnyObject ] ,
455
- let presenceHash = presenceData [ Constants . JSONKeys. hash] as? [ String : AnyObject ] {
456
- presChan. addExistingMembers ( memberHash: presenceHash)
457
- }
454
+ guard event. data != nil else {
455
+ PusherLogger . shared. debug ( for: . subscriptionSucceededNoDataInPayload)
456
+ return
457
+ }
458
+
459
+ if PusherChannelType . isPresenceChannel ( name: channelName) {
460
+ if let presChan = self . channels. find ( name: channelName) as? PusherPresenceChannel {
461
+ if let dataJSON = event. dataToJSONObject ( ) as? [ String : Any ] ,
462
+ let presenceData = dataJSON [ Constants . JSONKeys. presence] as? [ String : AnyObject ] ,
463
+ let presenceHash = presenceData [ Constants . JSONKeys. hash] as? [ String : AnyObject ] {
464
+ presChan. addExistingMembers ( memberHash: presenceHash)
458
465
}
459
466
}
467
+ }
460
468
461
- let subscriptionEvent = event. copy ( withEventName: Constants . Events. Pusher. subscriptionSucceeded)
462
- callGlobalCallbacks ( event: subscriptionEvent)
463
- chan. handleEvent ( event: subscriptionEvent)
469
+ let subscriptionEvent = event. copy ( withEventName: Constants . Events. Pusher. subscriptionSucceeded)
470
+ callGlobalCallbacks ( event: subscriptionEvent)
471
+ chan. handleEvent ( event: subscriptionEvent)
464
472
465
- self . delegate? . subscribedToChannel ? ( name: channelName)
473
+ self . delegate? . subscribedToChannel ? ( name: channelName)
466
474
467
- chan. auth = nil
475
+ chan. auth = nil
468
476
469
- while chan. unsentEvents. count > 0 {
470
- if let pusherEvent = chan. unsentEvents. popLast ( ) {
471
- chan. trigger ( eventName: pusherEvent. name, data: pusherEvent. data)
472
- }
477
+ while chan. unsentEvents. count > 0 {
478
+ if let pusherEvent = chan. unsentEvents. popLast ( ) {
479
+ chan. trigger ( eventName: pusherEvent. name, data: pusherEvent. data)
473
480
}
474
481
}
475
482
}
@@ -481,21 +488,23 @@ import NWWebSocket
481
488
- parameter event: The event to be processed
482
489
*/
483
490
fileprivate func handleConnectionEstablishedEvent( event: PusherEvent ) {
484
- if let connectionData = event. dataToJSONObject ( ) as? [ String : Any ] ,
485
- let socketId = connectionData [ Constants . JSONKeys. socketId] as? String {
486
- self . socketId = socketId
487
- PusherLogger . shared. debug ( for: . connectionEstablished,
488
- context: socketId)
489
- self . reconnectAttempts = 0
490
- self . reconnectTimer? . invalidate ( )
491
-
492
- if options. activityTimeout == nil ,
493
- let activityTimeoutFromServer = connectionData [ " activity_timeout " ] as? TimeInterval {
494
- self . activityTimeoutInterval = activityTimeoutFromServer
495
- }
491
+ guard let connectionData = event. dataToJSONObject ( ) as? [ String : Any ] ,
492
+ let socketId = connectionData [ Constants . JSONKeys. socketId] as? String else {
493
+ return
494
+ }
495
+
496
+ self . socketId = socketId
497
+ PusherLogger . shared. debug ( for: . connectionEstablished,
498
+ context: socketId)
499
+ self . reconnectAttempts = 0
500
+ self . reconnectTimer? . invalidate ( )
496
501
497
- self . connectionEstablishedMessageReceived = true
502
+ if options. activityTimeout == nil ,
503
+ let activityTimeoutFromServer = connectionData [ " activity_timeout " ] as? TimeInterval {
504
+ self . activityTimeoutInterval = activityTimeoutFromServer
498
505
}
506
+
507
+ self . connectionEstablishedMessageReceived = true
499
508
}
500
509
501
510
/**
@@ -517,13 +526,15 @@ import NWWebSocket
517
526
- parameter event: The event to be processed
518
527
*/
519
528
fileprivate func handleMemberAddedEvent( event: PusherEvent ) {
520
- if let channelName = event. channelName,
521
- let chan = self . channels. find ( name: channelName) as? PusherPresenceChannel {
522
- if let memberJSON = event. dataToJSONObject ( ) as? [ String : Any ] {
523
- chan. addMember ( memberJSON: memberJSON)
524
- } else {
525
- PusherLogger . shared. debug ( for: . unableToAddMemberToChannel)
526
- }
529
+ guard let channelName = event. channelName,
530
+ let chan = self . channels. find ( name: channelName) as? PusherPresenceChannel else {
531
+ return
532
+ }
533
+
534
+ if let memberJSON = event. dataToJSONObject ( ) as? [ String : Any ] {
535
+ chan. addMember ( memberJSON: memberJSON)
536
+ } else {
537
+ PusherLogger . shared. debug ( for: . unableToAddMemberToChannel)
527
538
}
528
539
}
529
540
@@ -533,13 +544,15 @@ import NWWebSocket
533
544
- parameter event: The event to be processed
534
545
*/
535
546
fileprivate func handleMemberRemovedEvent( event: PusherEvent ) {
536
- if let channelName = event. channelName,
537
- let chan = self . channels. find ( name: channelName) as? PusherPresenceChannel {
538
- if let memberJSON = event. dataToJSONObject ( ) as? [ String : Any ] {
539
- chan. removeMember ( memberJSON: memberJSON)
540
- } else {
541
- PusherLogger . shared. debug ( for: . unableToRemoveMemberFromChannel)
542
- }
547
+ guard let channelName = event. channelName,
548
+ let chan = self . channels. find ( name: channelName) as? PusherPresenceChannel else {
549
+ return
550
+ }
551
+
552
+ if let memberJSON = event. dataToJSONObject ( ) as? [ String : Any ] {
553
+ chan. removeMember ( memberJSON: memberJSON)
554
+ } else {
555
+ PusherLogger . shared. debug ( for: . unableToRemoveMemberFromChannel)
543
556
}
544
557
}
545
558
@@ -567,17 +580,19 @@ import NWWebSocket
567
580
Constants . JSONKeys. channel: channelName,
568
581
Constants . JSONKeys. data: error. data ?? " "
569
582
]
570
- if let event = try ? self . eventFactory. makeEvent ( fromJSON: json, withDecryptionKey: nil ) {
571
- DispatchQueue . main. async {
572
- // TODO: Consider removing in favour of exclusively using delegate
573
- self . handleEvent ( event: event)
574
- }
583
+ guard let event = try ? self . eventFactory. makeEvent ( fromJSON: json, withDecryptionKey: nil ) else {
584
+ return
585
+ }
575
586
576
- self . delegate? . failedToSubscribeToChannel ? ( name: channelName,
577
- response: error. response,
578
- data: error. data,
579
- error: error. error)
587
+ DispatchQueue . main. async {
588
+ // TODO: Consider removing in favour of exclusively using delegate
589
+ self . handleEvent ( event: event)
580
590
}
591
+
592
+ self . delegate? . failedToSubscribeToChannel ? ( name: channelName,
593
+ response: error. response,
594
+ data: error. data,
595
+ error: error. error)
581
596
}
582
597
583
598
/**
@@ -598,9 +613,11 @@ import NWWebSocket
598
613
handleMemberRemovedEvent ( event: event)
599
614
default :
600
615
callGlobalCallbacks ( event: event)
601
- if let channelName = event. channelName, let internalChannel = self . channels. find ( name: channelName) {
602
- internalChannel. handleEvent ( event: event)
616
+ guard let channelName = event. channelName,
617
+ let internalChannel = self . channels. find ( name: channelName) else {
618
+ return
603
619
}
620
+ internalChannel. handleEvent ( event: event)
604
621
}
605
622
}
606
623
0 commit comments