From a9a9800dd24c8fbd8fa907f210bcaccbc00cb3fe Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Wed, 8 May 2019 14:01:23 +1000 Subject: [PATCH] Fix duplicate error unwrapping --- Signal/src/AppDelegate.m | 14 +++++--------- SignalServiceKit/src/Loki/LokiAPI.swift | 15 +++------------ SignalServiceKit/src/Messages/OWSMessageSender.m | 10 +++------- 3 files changed, 11 insertions(+), 28 deletions(-) diff --git a/Signal/src/AppDelegate.m b/Signal/src/AppDelegate.m index 5281abf14..e6b4745b2 100644 --- a/Signal/src/AppDelegate.m +++ b/Signal/src/AppDelegate.m @@ -718,12 +718,10 @@ static NSTimeInterval launchStartedAt; [Environment.shared.contactsManager fetchSystemContactsOnceIfAlreadyAuthorized]; [[AppEnvironment.shared.messageFetcherJob run] retainUntilComplete]; - [[LokiAPI getMessagesObjc] - .then(^(id result) { - // TODO: handle result + [[LokiAPI objc_getMessages].then(^(id result) { + // TODO: Handle result - }) - .catch(^(NSError *error) { + }).catch(^(NSError *error) { }) retainUntilComplete]; @@ -1161,11 +1159,9 @@ static NSTimeInterval launchStartedAt; { OWSLogInfo(@"performing background fetch"); [AppReadiness runNowOrWhenAppDidBecomeReady:^{ - [[LokiAPI getMessagesObjc] - .then(^(id result) { + [[LokiAPI objc_getMessages].then(^(id result) { completionHandler(UIBackgroundFetchResultNewData); - }) - .catch(^(NSError *error) { + }).catch(^(NSError *error) { completionHandler(UIBackgroundFetchResultFailed); }) retainUntilComplete]; diff --git a/SignalServiceKit/src/Loki/LokiAPI.swift b/SignalServiceKit/src/Loki/LokiAPI.swift index f564bbb38..68ad3e0df 100644 --- a/SignalServiceKit/src/Loki/LokiAPI.swift +++ b/SignalServiceKit/src/Loki/LokiAPI.swift @@ -66,24 +66,15 @@ import PromiseKit } // MARK: Obj-C API - @objc public static func getMessagesObjc() -> AnyPromise { + @objc public static func objc_getMessages() -> AnyPromise { let promise = getMessages() let anyPromise = AnyPromise(promise) anyPromise.retainUntilComplete() return anyPromise } - @objc public static func sendSignalMessage(_ signalMessage: SignalMessage, to destination: String, requiringPoW isPoWRequired: Bool) -> AnyPromise { - let promise = LokiMessage.fromSignalMessage(signalMessage, requiringPoW: isPoWRequired) - .then(sendMessage) - .recover(on: DispatchQueue.global()) { error -> Promise in - switch error { - case NetworkManagerError.taskError(_, let underlyingError): - throw underlyingError - default: - throw error - } - } + @objc public static func objc_sendSignalMessage(_ signalMessage: SignalMessage, to destination: String, requiringPoW isPoWRequired: Bool) -> AnyPromise { + let promise = LokiMessage.fromSignalMessage(signalMessage, requiringPoW: isPoWRequired).then(sendMessage) let anyPromise = AnyPromise(promise) anyPromise.retainUntilComplete() return anyPromise diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index d2c83d902..74c3340c3 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -1111,31 +1111,27 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; // Convert the message to a Loki message and send it using the Loki messaging API NSDictionary *signalMessage = deviceMessages.firstObject; BOOL isPoWRequired = YES; // TODO: Base on message type - - [[LokiAPI sendSignalMessage:signalMessage to:recipient.recipientId requiringPoW:isPoWRequired] + [[LokiAPI objc_sendSignalMessage:signalMessage to:recipient.recipientId requiringPoW:isPoWRequired] .thenOn([OWSDispatch sendingQueue], ^(id result) { [self messageSendDidSucceed:messageSend deviceMessages:deviceMessages wasSentByUD:false wasSentByWebsocket:false]; }) - .catchOn([OWSDispatch sendingQueue], ^(NSError *error) { + .catchOn(OWSDispatch.sendingQueue, ^(NSError *error) { NSUInteger statusCode = 0; NSData *_Nullable responseData = nil; if ([error.domain isEqualToString:TSNetworkManagerErrorDomain]) { statusCode = error.code; - NSError *_Nullable underlyingError = error.userInfo[NSUnderlyingErrorKey]; if (underlyingError) { - responseData - = underlyingError.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey]; + responseData = underlyingError.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey]; } else { OWSFailDebug(@"Missing underlying error: %@", error); } } else { OWSFailDebug(@"Unexpected error: %@", error); } - [self messageSendDidFail:messageSend deviceMessages:deviceMessages statusCode:statusCode