@@ -160,15 +160,17 @@ import NWWebSocket
160
160
- parameter channelName: The name of the channel
161
161
*/
162
162
internal func unsubscribe( channelName: String ) {
163
- if let chan = self . channels. find ( name: channelName) , chan. subscribed {
164
- self . sendEvent ( event: Constants . Events. Pusher. unsubscribe,
165
- data: [
166
- Constants . JSONKeys. channel: channelName
167
- ] as [ String : Any ]
168
- )
169
-
170
- self . channels. remove ( name: channelName)
163
+ guard let chan = self . channels. find ( name: channelName) , chan. subscribed else {
164
+ return
171
165
}
166
+
167
+ self . sendEvent ( event: Constants . Events. Pusher. unsubscribe,
168
+ data: [
169
+ Constants . JSONKeys. channel: channelName
170
+ ] as [ String : Any ]
171
+ )
172
+
173
+ self . channels. remove ( name: channelName)
172
174
}
173
175
174
176
/**
@@ -209,17 +211,19 @@ import NWWebSocket
209
211
- parameter channel: The name of the channel
210
212
*/
211
213
fileprivate func sendClientEvent( event: String , data: Any , channel: PusherChannel ? ) {
212
- if let channel = channel {
213
- if channel. type == . presence || channel. type == . private {
214
- let dataString = JSONStringify ( [ Constants . JSONKeys. event: event,
215
- Constants . JSONKeys. data: data,
216
- Constants . JSONKeys. channel: channel. name] as [ String : Any ] )
217
- self . delegate? . debugLog ? ( message: PusherLogger . debug ( for: . clientEventSent,
218
- context: dataString) )
219
- self . socket. send ( string: dataString)
220
- } else {
221
- print ( " You must be subscribed to a private or presence channel to send client events " )
222
- }
214
+ guard let channel = channel else {
215
+ return
216
+ }
217
+
218
+ if channel. type == . presence || channel. type == . private {
219
+ let dataString = JSONStringify ( [ Constants . JSONKeys. event: event,
220
+ Constants . JSONKeys. data: data,
221
+ Constants . JSONKeys. channel: channel. name] as [ String : Any ] )
222
+ self . delegate? . debugLog ? ( message: PusherLogger . debug ( for: . clientEventSent,
223
+ context: dataString) )
224
+ self . socket. send ( string: dataString)
225
+ } else {
226
+ print ( " You must be subscribed to a private or presence channel to send client events " )
223
227
}
224
228
}
225
229
@@ -433,36 +437,39 @@ import NWWebSocket
433
437
- parameter json: The PusherEventJSON containing successful subscription data
434
438
*/
435
439
fileprivate func handleSubscriptionSucceededEvent( event: PusherEvent ) {
436
- if let channelName = event. channelName, let chan = self . channels. find ( name: channelName) {
437
- chan. subscribed = true
440
+ guard let channelName = event. channelName,
441
+ let chan = self . channels. find ( name: channelName) else {
442
+ return
443
+ }
438
444
439
- guard event. data != nil else {
440
- self . delegate? . debugLog ? ( message: PusherLogger . debug ( for: . subscriptionSucceededNoDataInPayload) )
441
- return
442
- }
445
+ chan. subscribed = true
443
446
444
- if PusherChannelType . isPresenceChannel ( name: channelName) {
445
- if let presChan = self . channels. find ( name: channelName) as? PusherPresenceChannel {
446
- if let dataJSON = event. dataToJSONObject ( ) as? [ String : Any ] ,
447
- let presenceData = dataJSON [ Constants . JSONKeys. presence] as? [ String : AnyObject ] ,
448
- let presenceHash = presenceData [ Constants . JSONKeys. hash] as? [ String : AnyObject ] {
449
- presChan. addExistingMembers ( memberHash: presenceHash)
450
- }
447
+ guard event. data != nil else {
448
+ self . delegate? . debugLog ? ( message: PusherLogger . debug ( for: . subscriptionSucceededNoDataInPayload) )
449
+ return
450
+ }
451
+
452
+ if PusherChannelType . isPresenceChannel ( name: channelName) {
453
+ if let presChan = self . channels. find ( name: channelName) as? PusherPresenceChannel {
454
+ if let dataJSON = event. dataToJSONObject ( ) as? [ String : Any ] ,
455
+ let presenceData = dataJSON [ Constants . JSONKeys. presence] as? [ String : AnyObject ] ,
456
+ let presenceHash = presenceData [ Constants . JSONKeys. hash] as? [ String : AnyObject ] {
457
+ presChan. addExistingMembers ( memberHash: presenceHash)
451
458
}
452
459
}
460
+ }
453
461
454
- let subscriptionEvent = event. copy ( withEventName: Constants . Events. Pusher. subscriptionSucceeded)
455
- callGlobalCallbacks ( event: subscriptionEvent)
456
- chan. handleEvent ( event: subscriptionEvent)
462
+ let subscriptionEvent = event. copy ( withEventName: Constants . Events. Pusher. subscriptionSucceeded)
463
+ callGlobalCallbacks ( event: subscriptionEvent)
464
+ chan. handleEvent ( event: subscriptionEvent)
457
465
458
- self . delegate? . subscribedToChannel ? ( name: channelName)
466
+ self . delegate? . subscribedToChannel ? ( name: channelName)
459
467
460
- chan. auth = nil
468
+ chan. auth = nil
461
469
462
- while chan. unsentEvents. count > 0 {
463
- if let pusherEvent = chan. unsentEvents. popLast ( ) {
464
- chan. trigger ( eventName: pusherEvent. name, data: pusherEvent. data)
465
- }
470
+ while chan. unsentEvents. count > 0 {
471
+ if let pusherEvent = chan. unsentEvents. popLast ( ) {
472
+ chan. trigger ( eventName: pusherEvent. name, data: pusherEvent. data)
466
473
}
467
474
}
468
475
}
@@ -474,21 +481,23 @@ import NWWebSocket
474
481
- parameter event: The event to be processed
475
482
*/
476
483
fileprivate func handleConnectionEstablishedEvent( event: PusherEvent ) {
477
- if let connectionData = event. dataToJSONObject ( ) as? [ String : Any ] ,
478
- let socketId = connectionData [ Constants . JSONKeys. socketId] as? String {
479
- self . socketId = socketId
480
- self . delegate? . debugLog ? ( message: PusherLogger . debug ( for: . connectionEstablished,
481
- context: socketId) )
482
- self . reconnectAttempts = 0
483
- self . reconnectTimer? . invalidate ( )
484
-
485
- if options. activityTimeout == nil ,
486
- let activityTimeoutFromServer = connectionData [ " activity_timeout " ] as? TimeInterval {
487
- self . activityTimeoutInterval = activityTimeoutFromServer
488
- }
484
+ guard let connectionData = event. dataToJSONObject ( ) as? [ String : Any ] ,
485
+ let socketId = connectionData [ Constants . JSONKeys. socketId] as? String else {
486
+ return
487
+ }
488
+
489
+ self . socketId = socketId
490
+ self . delegate? . debugLog ? ( message: PusherLogger . debug ( for: . connectionEstablished,
491
+ context: socketId) )
492
+ self . reconnectAttempts = 0
493
+ self . reconnectTimer? . invalidate ( )
489
494
490
- self . connectionEstablishedMessageReceived = true
495
+ if options. activityTimeout == nil ,
496
+ let activityTimeoutFromServer = connectionData [ " activity_timeout " ] as? TimeInterval {
497
+ self . activityTimeoutInterval = activityTimeoutFromServer
491
498
}
499
+
500
+ self . connectionEstablishedMessageReceived = true
492
501
}
493
502
494
503
/**
@@ -509,13 +518,15 @@ import NWWebSocket
509
518
- parameter event: The event to be processed
510
519
*/
511
520
fileprivate func handleMemberAddedEvent( event: PusherEvent ) {
512
- if let channelName = event. channelName,
513
- let chan = self . channels. find ( name: channelName) as? PusherPresenceChannel {
514
- if let memberJSON = event. dataToJSONObject ( ) as? [ String : Any ] {
515
- chan. addMember ( memberJSON: memberJSON)
516
- } else {
517
- print ( " Unable to add member " )
518
- }
521
+ guard let channelName = event. channelName,
522
+ let chan = self . channels. find ( name: channelName) as? PusherPresenceChannel else {
523
+ return
524
+ }
525
+
526
+ if let memberJSON = event. dataToJSONObject ( ) as? [ String : Any ] {
527
+ chan. addMember ( memberJSON: memberJSON)
528
+ } else {
529
+ print ( " Unable to add member " )
519
530
}
520
531
}
521
532
@@ -525,13 +536,15 @@ import NWWebSocket
525
536
- parameter event: The event to be processed
526
537
*/
527
538
fileprivate func handleMemberRemovedEvent( event: PusherEvent ) {
528
- if let channelName = event. channelName,
529
- let chan = self . channels. find ( name: channelName) as? PusherPresenceChannel {
530
- if let memberJSON = event. dataToJSONObject ( ) as? [ String : Any ] {
531
- chan. removeMember ( memberJSON: memberJSON)
532
- } else {
533
- print ( " Unable to remove member " )
534
- }
539
+ guard let channelName = event. channelName,
540
+ let chan = self . channels. find ( name: channelName) as? PusherPresenceChannel else {
541
+ return
542
+ }
543
+
544
+ if let memberJSON = event. dataToJSONObject ( ) as? [ String : Any ] {
545
+ chan. removeMember ( memberJSON: memberJSON)
546
+ } else {
547
+ print ( " Unable to remove member " )
535
548
}
536
549
}
537
550
@@ -559,20 +572,22 @@ import NWWebSocket
559
572
Constants . JSONKeys. channel: channelName,
560
573
Constants . JSONKeys. data: error. data ?? " "
561
574
]
562
- if let event = try ? self . eventFactory. makeEvent ( fromJSON: json, withDecryptionKey: nil ) {
563
- DispatchQueue . main. async {
564
- // TODO: Consider removing in favour of exclusively using delegate
565
- self . handleEvent ( event: event)
566
- }
575
+ guard let event = try ? self . eventFactory. makeEvent ( fromJSON: json, withDecryptionKey: nil ) else {
576
+ return
577
+ }
567
578
568
- if let message = error. message {
569
- print ( message)
570
- }
571
- self . delegate? . failedToSubscribeToChannel ? ( name: channelName,
572
- response: error. response,
573
- data: error. data,
574
- error: error. error)
579
+ DispatchQueue . main. async {
580
+ // TODO: Consider removing in favour of exclusively using delegate
581
+ self . handleEvent ( event: event)
575
582
}
583
+
584
+ if let message = error. message {
585
+ print ( message)
586
+ }
587
+ self . delegate? . failedToSubscribeToChannel ? ( name: channelName,
588
+ response: error. response,
589
+ data: error. data,
590
+ error: error. error)
576
591
}
577
592
578
593
/**
@@ -593,9 +608,11 @@ import NWWebSocket
593
608
handleMemberRemovedEvent ( event: event)
594
609
default :
595
610
callGlobalCallbacks ( event: event)
596
- if let channelName = event. channelName, let internalChannel = self . channels. find ( name: channelName) {
597
- internalChannel. handleEvent ( event: event)
611
+ guard let channelName = event. channelName,
612
+ let internalChannel = self . channels. find ( name: channelName) else {
613
+ return
598
614
}
615
+ internalChannel. handleEvent ( event: event)
599
616
}
600
617
}
601
618
0 commit comments