From bb19505c6addf4d12fecb868f1ad8acece516cd2 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 22 May 2018 15:10:32 -0400 Subject: [PATCH] Make profile gets over websocket. --- .../profiles/ProfileFetcherJob.swift | 50 ++++++++++++------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/SignalMessaging/profiles/ProfileFetcherJob.swift b/SignalMessaging/profiles/ProfileFetcherJob.swift index bceec4ddd..4d224b298 100644 --- a/SignalMessaging/profiles/ProfileFetcherJob.swift +++ b/SignalMessaging/profiles/ProfileFetcherJob.swift @@ -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.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 }