Use REST for UD requests.

pull/1/head
Matthew Chen 7 years ago
parent 16aec33e24
commit b865b91147

@ -137,6 +137,11 @@ NS_ASSUME_NONNULL_BEGIN
[Environment.shared.contactsManager requestSystemContactsOnce];
}]];
[items addObject:[OWSTableItem itemWithTitle:@"Cycle websockets"
actionBlock:^() {
[SSKEnvironment.shared.socketManager cycleSocket];
}]];
return [OWSTableSection sectionWithTitle:self.name items:items];
}

@ -1102,8 +1102,10 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
[[requestMaker makeRequestObjc]
.then(^(OWSRequestMakerResult *result) {
dispatch_async([OWSDispatch sendingQueue], ^{
const BOOL wasSentByUD = result.wasSentByUD;
[self messageSendDidSucceed:messageSend deviceMessages:deviceMessages wasSentByUD:wasSentByUD];
[self messageSendDidSucceed:messageSend
deviceMessages:deviceMessages
wasSentByUD:result.wasSentByUD
wasSentByWebsocket:result.wasSentByWebsocket];
});
})
.catch(^(NSError *error) {
@ -1139,13 +1141,15 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
- (void)messageSendDidSucceed:(OWSMessageSend *)messageSend
deviceMessages:(NSArray<NSDictionary *> *)deviceMessages
wasSentByUD:(BOOL)wasSentByUD {
wasSentByUD:(BOOL)wasSentByUD
wasSentByWebsocket:(BOOL)wasSentByWebsocket
{
OWSAssertDebug(messageSend);
OWSAssertDebug(deviceMessages);
SignalRecipient *recipient = messageSend.recipient;
OWSLogInfo(@"Message send succeeded (wasSentByUD: %d).", wasSentByUD);
OWSLogInfo(@"Message send succeeded; wasSentByUD: %d, wasSentByWebsocket: %d.", wasSentByUD, wasSentByWebsocket);
if (messageSend.isLocalNumber && deviceMessages.count == 0) {
OWSLogInfo(@"Sent a message with no device messages; clearing 'mayHaveLinkedDevices'.");

@ -23,11 +23,16 @@ public class RequestMakerResult: NSObject {
@objc
public let wasSentByUD: Bool
@objc
public let wasSentByWebsocket: Bool
@objc
public init(responseObject: Any?,
wasSentByUD: Bool) {
wasSentByUD: Bool,
wasSentByWebsocket: Bool) {
self.responseObject = responseObject
self.wasSentByUD = wasSentByUD
self.wasSentByWebsocket = wasSentByWebsocket
}
}
@ -115,7 +120,7 @@ public class RequestMaker: NSObject {
let isUDRequest: Bool = udAccessForRequest != nil
let request: TSRequest = requestFactoryBlock(udAccessForRequest?.udAccessKey)
let webSocketType: OWSWebSocketType = (isUDRequest ? .UD : .default)
let canMakeWebsocketRequests = (socketManager.canMakeRequests(of: webSocketType) && !skipWebsocket)
let canMakeWebsocketRequests = (socketManager.canMakeRequests(of: webSocketType) && !skipWebsocket && !isUDRequest)
if canMakeWebsocketRequests {
return Promise { resolver in
@ -130,7 +135,9 @@ public class RequestMaker: NSObject {
self.requestSucceeded(udAccess: udAccessForRequest)
resolver.fulfill(RequestMakerResult(responseObject: responseObject, wasSentByUD: isUDRequest))
resolver.fulfill(RequestMakerResult(responseObject: responseObject,
wasSentByUD: isUDRequest,
wasSentByWebsocket: true))
}) { (statusCode: Int, responseData: Data?, error: Error) in
resolver.reject(RequestMakerError.websocketRequestError(statusCode: statusCode, responseData: responseData, underlyingError: error))
}
@ -179,7 +186,9 @@ public class RequestMaker: NSObject {
self.requestSucceeded(udAccess: udAccessForRequest)
// Unwrap the network manager promise into a request maker promise.
return RequestMakerResult(responseObject: networkManagerResult.responseObject, wasSentByUD: isUDRequest)
return RequestMakerResult(responseObject: networkManagerResult.responseObject,
wasSentByUD: isUDRequest,
wasSentByWebsocket: false)
}.recover { (error: Error) -> Promise<RequestMakerResult> in
switch error {
case NetworkManagerError.taskError(let task, _):

Loading…
Cancel
Save