Skip to content

Commit ba09d30

Browse files
author
Daniel Browne
committed
Refactor 'if let' to 'guard let' in 'Sources'
1 parent ed5ee10 commit ba09d30

File tree

5 files changed

+142
-113
lines changed

5 files changed

+142
-113
lines changed

Sources/Models/PusherChannel.swift

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,11 @@ open class PusherChannel: NSObject {
128128
- parameter callbackId: The unique callbackId string used to identify which callback to unbind
129129
*/
130130
open func unbind(eventName: String, callbackId: String) {
131-
if let eventSpecificHandlers = self.eventHandlers[eventName] {
132-
self.eventHandlers[eventName] = eventSpecificHandlers.filter({ $0.id != callbackId })
131+
guard let eventSpecificHandlers = self.eventHandlers[eventName] else {
132+
return
133133
}
134+
135+
self.eventHandlers[eventName] = eventSpecificHandlers.filter({ $0.id != callbackId })
134136
}
135137

136138
/**
@@ -155,11 +157,13 @@ open class PusherChannel: NSObject {
155157
- parameter event: The event received from the websocket
156158
*/
157159
open func handleEvent(event: PusherEvent) {
158-
if let eventHandlerArray = self.eventHandlers[event.eventName] {
159-
for eventHandler in eventHandlerArray {
160-
// swiftlint:disable:next force_cast
161-
eventHandler.callback(event.copy() as! PusherEvent)
162-
}
160+
guard let eventHandlerArray = self.eventHandlers[event.eventName] else {
161+
return
162+
}
163+
164+
for eventHandler in eventHandlerArray {
165+
// swiftlint:disable:next force_cast
166+
eventHandler.callback(event.copy() as! PusherEvent)
163167
}
164168
}
165169

Sources/Models/PusherPresenceChannel.swift

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,13 @@ public typealias PusherUserInfoObject = [String: AnyObject]
101101
id = String.init(describing: memberJSON[Constants.JSONKeys.userId]!)
102102
}
103103

104-
if let index = self.members.firstIndex(where: { $0.userId == id }) {
105-
let member = self.members[index]
106-
self.members.remove(at: index)
107-
self.onMemberRemoved?(member)
104+
guard let index = self.members.firstIndex(where: { $0.userId == id }) else {
105+
return
108106
}
107+
108+
let member = self.members[index]
109+
self.members.remove(at: index)
110+
self.onMemberRemoved?(member)
109111
}
110112

111113
/**
@@ -116,10 +118,12 @@ public typealias PusherUserInfoObject = [String: AnyObject]
116118
to the channel
117119
*/
118120
internal func setMyUserId(channelData: String) {
119-
if let channelDataObject = parse(channelData: channelData),
120-
let userId = channelDataObject[Constants.JSONKeys.userId] {
121-
self.myId = String.init(describing: userId)
121+
guard let channelDataObject = parse(channelData: channelData),
122+
let userId = channelDataObject[Constants.JSONKeys.userId] else {
123+
return
122124
}
125+
126+
self.myId = String.init(describing: userId)
123127
}
124128

125129
/**
@@ -164,11 +168,11 @@ public typealias PusherUserInfoObject = [String: AnyObject]
164168
- returns: The connected user's PusherPresenceChannelMember object
165169
*/
166170
open func me() -> PusherPresenceChannelMember? {
167-
if let id = self.myId {
168-
return findMember(userId: id)
169-
} else {
171+
guard let id = self.myId else {
170172
return nil
171173
}
174+
175+
return findMember(userId: id)
172176
}
173177
}
174178

Sources/ObjC/ObjectiveC.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,10 +215,10 @@ public extension AuthMethod {
215215
public extension PusherError {
216216
/// The error code as an NSNumber (for Objective-C compatibility).
217217
var codeOC: NSNumber? {
218-
if let code = code {
219-
return NSNumber(value: code)
220-
} else {
218+
guard let code = code else {
221219
return nil
222220
}
221+
222+
return NSNumber(value: code)
223223
}
224224
}

Sources/Services/PusherConnection.swift

Lines changed: 99 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -160,15 +160,17 @@ import NWWebSocket
160160
- parameter channelName: The name of the channel
161161
*/
162162
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
171165
}
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)
172174
}
173175

174176
/**
@@ -209,17 +211,19 @@ import NWWebSocket
209211
- parameter channel: The name of the channel
210212
*/
211213
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")
223227
}
224228
}
225229

@@ -433,36 +437,39 @@ import NWWebSocket
433437
- parameter json: The PusherEventJSON containing successful subscription data
434438
*/
435439
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+
}
438444

439-
guard event.data != nil else {
440-
self.delegate?.debugLog?(message: PusherLogger.debug(for: .subscriptionSucceededNoDataInPayload))
441-
return
442-
}
445+
chan.subscribed = true
443446

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)
451458
}
452459
}
460+
}
453461

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)
457465

458-
self.delegate?.subscribedToChannel?(name: channelName)
466+
self.delegate?.subscribedToChannel?(name: channelName)
459467

460-
chan.auth = nil
468+
chan.auth = nil
461469

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)
466473
}
467474
}
468475
}
@@ -474,21 +481,23 @@ import NWWebSocket
474481
- parameter event: The event to be processed
475482
*/
476483
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()
489494

490-
self.connectionEstablishedMessageReceived = true
495+
if options.activityTimeout == nil,
496+
let activityTimeoutFromServer = connectionData["activity_timeout"] as? TimeInterval {
497+
self.activityTimeoutInterval = activityTimeoutFromServer
491498
}
499+
500+
self.connectionEstablishedMessageReceived = true
492501
}
493502

494503
/**
@@ -509,13 +518,15 @@ import NWWebSocket
509518
- parameter event: The event to be processed
510519
*/
511520
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")
519530
}
520531
}
521532

@@ -525,13 +536,15 @@ import NWWebSocket
525536
- parameter event: The event to be processed
526537
*/
527538
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")
535548
}
536549
}
537550

@@ -559,20 +572,22 @@ import NWWebSocket
559572
Constants.JSONKeys.channel: channelName,
560573
Constants.JSONKeys.data: error.data ?? ""
561574
]
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+
}
567578

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)
575582
}
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)
576591
}
577592

578593
/**
@@ -593,9 +608,11 @@ import NWWebSocket
593608
handleMemberRemovedEvent(event: event)
594609
default:
595610
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
598614
}
615+
internalChannel.handleEvent(event: event)
599616
}
600617
}
601618

Sources/Services/PusherEventQueue.swift

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -53,21 +53,25 @@ class PusherConcreteEventQueue: PusherEventQueue {
5353
} catch PusherEventError.invalidDecryptionKey {
5454
// Reload decryption key if we could not decrypt the payload due to the key
5555
// Only events on encrypted channels throw this error, which have a channel
56-
if let channel = channel {
57-
self.delegate?.eventQueue(self, reloadDecryptionKeySyncForChannel: channel)
58-
do {
59-
try self.processEvent(json: json, channel: channel)
60-
} catch {
61-
self.delegate?.eventQueue(self,
62-
didFailToDecryptEventWithPayload: json,
63-
forChannelName: channel.name)
64-
}
56+
guard let channel = channel else {
57+
return
58+
}
59+
60+
self.delegate?.eventQueue(self, reloadDecryptionKeySyncForChannel: channel)
61+
do {
62+
try self.processEvent(json: json, channel: channel)
63+
} catch {
64+
self.delegate?.eventQueue(self,
65+
didFailToDecryptEventWithPayload: json,
66+
forChannelName: channel.name)
6567
}
6668
} catch PusherEventError.invalidEncryptedData {
6769
// If there was a problem with the payload, e.g. nonce missing, then we cannot retry
68-
if let channelName = channel?.name {
69-
self.delegate?.eventQueue(self, didFailToDecryptEventWithPayload: json, forChannelName: channelName)
70+
guard let channelName = channel?.name else {
71+
return
7072
}
73+
74+
self.delegate?.eventQueue(self, didFailToDecryptEventWithPayload: json, forChannelName: channelName)
7175
} catch {
7276
self.delegate?.eventQueue(self, didReceiveInvalidEventWithPayload: json)
7377
}

0 commit comments

Comments
 (0)