Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save TellowKrinkle/4579e76bf44b65897b87a3c230e5cdc4 to your computer and use it in GitHub Desktop.
Save TellowKrinkle/4579e76bf44b65897b87a3c230e5cdc4 to your computer and use it in GitHub Desktop.
SwiftDiscord Swift 4 DiscordGatewayPayloadData Changes
From a301a28f43fc9faa20bd3d3e8452bf20dfe988d6 Mon Sep 17 00:00:00 2001
From: Evan Tang <etang110@gmail.com>
Date: Thu, 7 Sep 2017 12:02:26 -0500
Subject: [PATCH 1/4] Fixed an issue where the library would infinitely try to
reconnect NSNumber bools are convertible to Integers and NSNumber integers
that are 0 or 1 are convertible to booleans This caused the reconnect code to
improperly assume that a netsplit occurred because it received an int
payload, not a bool
---
Sources/SwiftDiscord/Gateway/DiscordGateway.swift | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Sources/SwiftDiscord/Gateway/DiscordGateway.swift b/Sources/SwiftDiscord/Gateway/DiscordGateway.swift
index 8deaa9e..9a54786 100644
--- a/Sources/SwiftDiscord/Gateway/DiscordGateway.swift
+++ b/Sources/SwiftDiscord/Gateway/DiscordGateway.swift
@@ -142,10 +142,10 @@ extension DiscordGatewayPayloadData {
switch data {
case let object as [String: Any]:
return .object(object)
+ case let number as NSNumber where number === kCFBooleanTrue || number === kCFBooleanFalse:
+ return .bool(number.boolValue)
case let integer as Int:
return .integer(integer)
- case let bool as Bool:
- return .bool(bool)
default:
return .null
}
--
2.14.1
From 5eb40ff2316742ec0a9d125f810bff951e5e6527 Mon Sep 17 00:00:00 2001
From: Evan Tang <etang110@gmail.com>
Date: Thu, 7 Sep 2017 12:38:21 -0500
Subject: [PATCH 4/4] Hopefully fixed it for both OSX and Linux
---
Sources/SwiftDiscord/Gateway/DiscordGateway.swift | 33 ++++++++++++++++-------
1 file changed, 23 insertions(+), 10 deletions(-)
diff --git a/Sources/SwiftDiscord/Gateway/DiscordGateway.swift b/Sources/SwiftDiscord/Gateway/DiscordGateway.swift
index 9a54786..19e6ae6 100644
--- a/Sources/SwiftDiscord/Gateway/DiscordGateway.swift
+++ b/Sources/SwiftDiscord/Gateway/DiscordGateway.swift
@@ -139,16 +139,29 @@ extension DiscordGatewayPayloadData {
static func dataFromDictionary(_ data: Any?) -> DiscordGatewayPayloadData {
guard let data = data else { return .null }
- switch data {
- case let object as [String: Any]:
- return .object(object)
- case let number as NSNumber where number === kCFBooleanTrue || number === kCFBooleanFalse:
- return .bool(number.boolValue)
- case let integer as Int:
- return .integer(integer)
- default:
- return .null
- }
+ #if os(OSX) || os(iOS)
+ switch data {
+ case let object as [String: Any]:
+ return .object(object)
+ case let number as NSNumber where number === kCFBooleanTrue || number === kCFBooleanFalse:
+ return .bool(number.boolValue)
+ case let integer as Int:
+ return .integer(integer)
+ default:
+ return .null
+ }
+ #else
+ switch data {
+ case let object as [String: Any]:
+ return .object(object)
+ case let bool as Bool:
+ return .bool(bool)
+ case let integer as Int:
+ return .integer(integer)
+ default:
+ return .null
+ }
+ #endif
}
}
--
2.14.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment