Move work off main thread.

This commit is contained in:
Matthew Chen 2019-01-30 10:36:23 -05:00
parent 4feb0011d7
commit 6b5952abda
2 changed files with 8 additions and 11 deletions

View File

@ -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)

View File

@ -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()