Skip to content

Commit 18fa544

Browse files
authored
Preemptively serialize Dates in QueryEncoder
Fix parse-community#113 by preemptively serializing Date objects before they are sent to JSONSerialization by the Client.
1 parent ce50858 commit 18fa544

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

Sources/ParseLiveQuery/Internal/QueryEncoder.swift

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ extension Dictionary where Key: ExpressibleByStringLiteral, Value: AnyObject {
3636
encodedQueryDictionary[key] = geoPoint.encodedDictionary as? Value
3737
} else if let object = val as? PFObject {
3838
encodedQueryDictionary[key] = PFPointerObjectEncoder.object().encode(object) as? Value
39+
} else if let date = val as? Date {
40+
encodedQueryDictionary[key] = date.encodedString as? Value
3941
} else {
4042
encodedQueryDictionary[key] = val
4143
}
@@ -51,3 +53,20 @@ extension PFGeoPoint {
5153
"longitude": longitude]
5254
}
5355
}
56+
57+
fileprivate extension Formatter {
58+
fileprivate static let iso8601: DateFormatter = {
59+
let formatter = DateFormatter()
60+
formatter.calendar = Calendar(identifier: .iso8601)
61+
formatter.locale = Locale(identifier: "en_US_POSIX")
62+
formatter.timeZone = TimeZone(secondsFromGMT: 0)
63+
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSXXXXX"
64+
return formatter
65+
}()
66+
}
67+
68+
fileprivate extension Date {
69+
fileprivate var encodedString: String {
70+
return Formatter.iso8601.string(from: self)
71+
}
72+
}

0 commit comments

Comments
 (0)