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

Loading…
Cancel
Save