Make profile gets over websocket.

pull/1/head
Matthew Chen 7 years ago
parent 69b6eb9f4e
commit bb19505c6a

@ -12,6 +12,7 @@ public class ProfileFetcherJob: NSObject {
let TAG = "[ProfileFetcherJob]" let TAG = "[ProfileFetcherJob]"
let networkManager: TSNetworkManager let networkManager: TSNetworkManager
let socketManager: TSSocketManager
let primaryStorage: OWSPrimaryStorage let primaryStorage: OWSPrimaryStorage
// This property is only accessed on the main queue. // This property is only accessed on the main queue.
@ -33,6 +34,7 @@ public class ProfileFetcherJob: NSObject {
public init(networkManager: TSNetworkManager, ignoreThrottling: Bool = false) { public init(networkManager: TSNetworkManager, ignoreThrottling: Bool = false) {
self.networkManager = networkManager self.networkManager = networkManager
self.socketManager = TSSocketManager.shared()
self.primaryStorage = OWSPrimaryStorage.shared() self.primaryStorage = OWSPrimaryStorage.shared()
self.ignoreThrottling = ignoreThrottling self.ignoreThrottling = ignoreThrottling
} }
@ -113,24 +115,38 @@ public class ProfileFetcherJob: NSObject {
let (promise, fulfill, reject) = Promise<SignalServiceProfile>.pending() let (promise, fulfill, reject) = Promise<SignalServiceProfile>.pending()
self.networkManager.makeRequest( if self.socketManager.canMakeRequests {
request, self.socketManager.make(request,
success: { (_: URLSessionDataTask?, responseObject: Any?) -> Void in success: { (responseObject: Any?) -> Void in
do { do {
let profile = try SignalServiceProfile(recipientId: recipientId, rawResponse: responseObject) let profile = try SignalServiceProfile(recipientId: recipientId, rawResponse: responseObject)
fulfill(profile) fulfill(profile)
} catch { } catch {
reject(error)
}
},
failure: { (_: NSInteger, error: Error) in
reject(error) reject(error)
} })
}, } else {
failure: { (_: URLSessionDataTask?, error: Error?) in self.networkManager.makeRequest(request,
success: { (_: URLSessionDataTask?, responseObject: Any?) -> Void in
if let error = error { do {
reject(error) let profile = try SignalServiceProfile(recipientId: recipientId, rawResponse: responseObject)
} fulfill(profile)
} catch {
reject(ProfileFetcherJobError.unknownNetworkError) reject(error)
}) }
},
failure: { (_: URLSessionDataTask?, error: Error?) in
if let error = error {
reject(error)
}
reject(ProfileFetcherJobError.unknownNetworkError)
})
}
return promise return promise
} }

Loading…
Cancel
Save