Move work off main thread.
This commit is contained in:
parent
4feb0011d7
commit
6b5952abda
|
@ -1,5 +1,5 @@
|
|||
//
|
||||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
@ -98,7 +98,7 @@ public class ProfileFetcherJob: NSObject {
|
|||
Logger.error("background task time ran out before profile fetch completed.")
|
||||
})
|
||||
|
||||
DispatchQueue.main.async {
|
||||
DispatchQueue.global().async {
|
||||
for recipientId in recipientIds {
|
||||
self.getAndUpdateProfile(recipientId: recipientId)
|
||||
}
|
||||
|
@ -112,7 +112,7 @@ public class ProfileFetcherJob: NSObject {
|
|||
public func getAndUpdateProfile(recipientId: String, remainingRetries: Int = 3) {
|
||||
self.getProfile(recipientId: recipientId).map(on: DispatchQueue.global()) { profile in
|
||||
self.updateProfile(signalServiceProfile: profile)
|
||||
}.catch { error in
|
||||
}.catch(on: DispatchQueue.global()) { error in
|
||||
switch error {
|
||||
case ProfileFetcherJobError.throttled(let lastTimeInterval):
|
||||
Logger.info("skipping updateProfile: \(recipientId), lastTimeInterval: \(lastTimeInterval)")
|
||||
|
@ -129,7 +129,6 @@ public class ProfileFetcherJob: NSObject {
|
|||
}
|
||||
|
||||
public func getProfile(recipientId: String) -> Promise<SignalServiceProfile> {
|
||||
AssertIsOnMainThread()
|
||||
if !ignoreThrottling {
|
||||
if let lastDate = ProfileFetcherJob.fetchDateMap[recipientId] {
|
||||
let lastTimeInterval = fabs(lastDate.timeIntervalSinceNow)
|
||||
|
@ -162,8 +161,6 @@ public class ProfileFetcherJob: NSObject {
|
|||
private func requestProfile(recipientId: String,
|
||||
udAccess: OWSUDAccess?,
|
||||
canFailoverUDAuth: Bool) -> Promise<SignalServiceProfile> {
|
||||
AssertIsOnMainThread()
|
||||
|
||||
let requestMaker = RequestMaker(label: "Profile Fetch",
|
||||
requestFactoryBlock: { (udAccessKeyForRequest) -> TSRequest in
|
||||
return OWSRequestFactory.getProfileRequest(recipientId: recipientId, udAccessKey: udAccessKeyForRequest)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
//
|
||||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
@ -95,7 +95,7 @@ public class RequestMaker: NSObject {
|
|||
@objc
|
||||
public func makeRequestObjc() -> AnyPromise {
|
||||
let promise = makeRequest()
|
||||
.recover { (error: Error) -> Promise<RequestMakerResult> in
|
||||
.recover(on: DispatchQueue.global()) { (error: Error) -> Promise<RequestMakerResult> in
|
||||
switch error {
|
||||
case NetworkManagerError.taskError(_, let underlyingError):
|
||||
throw underlyingError
|
||||
|
@ -140,7 +140,7 @@ public class RequestMaker: NSObject {
|
|||
}) { (statusCode: Int, responseData: Data?, error: Error) in
|
||||
resolver.reject(RequestMakerError.websocketRequestError(statusCode: statusCode, responseData: responseData, underlyingError: error))
|
||||
}
|
||||
}.recover { (error: Error) -> Promise<RequestMakerResult> in
|
||||
}.recover(on: DispatchQueue.global()) { (error: Error) -> Promise<RequestMakerResult> in
|
||||
switch error {
|
||||
case RequestMakerError.websocketRequestError(let statusCode, _, _):
|
||||
if isUDRequest && (statusCode == 401 || statusCode == 403) {
|
||||
|
@ -173,7 +173,7 @@ public class RequestMaker: NSObject {
|
|||
}
|
||||
} else {
|
||||
return self.networkManager.makePromise(request: request)
|
||||
.map { (networkManagerResult: TSNetworkManager.NetworkManagerResult) -> RequestMakerResult in
|
||||
.map(on: DispatchQueue.global()) { (networkManagerResult: TSNetworkManager.NetworkManagerResult) -> RequestMakerResult in
|
||||
if self.udManager.isUDVerboseLoggingEnabled() {
|
||||
if isUDRequest {
|
||||
Logger.debug("UD REST request '\(self.label)' succeeded.")
|
||||
|
@ -188,7 +188,7 @@ public class RequestMaker: NSObject {
|
|||
return RequestMakerResult(responseObject: networkManagerResult.responseObject,
|
||||
wasSentByUD: isUDRequest,
|
||||
wasSentByWebsocket: false)
|
||||
}.recover { (error: Error) -> Promise<RequestMakerResult> in
|
||||
}.recover(on: DispatchQueue.global()) { (error: Error) -> Promise<RequestMakerResult> in
|
||||
switch error {
|
||||
case NetworkManagerError.taskError(let task, _):
|
||||
let statusCode = task.statusCode()
|
||||
|
|
Loading…
Reference in New Issue