|
|
|
@ -1104,6 +1104,39 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
|
|
|
|
|
return messageSend.failure(error);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void (^failedMessageSend)(NSError *error) = ^(NSError *error) {
|
|
|
|
|
// Handle the 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];
|
|
|
|
|
} else {
|
|
|
|
|
OWSFailDebug(@"Missing underlying error: %@.", error);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
OWSFailDebug(@"Unexpected error: %@.", error);
|
|
|
|
|
}
|
|
|
|
|
[self messageSendDidFail:messageSend deviceMessages:deviceMessages statusCode:statusCode error:error responseData:responseData];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Check to see if we're sending to a public channel
|
|
|
|
|
if ([recipient.recipientId isEqualToString:LKGroupChatAPI.serverURL]) {
|
|
|
|
|
NSString *userHexEncodedPublicKey = OWSIdentityManager.sharedManager.identityKeyPair.hexEncodedPublicKey;
|
|
|
|
|
NSString *displayName = [SSKEnvironment.shared.contactsManager displayNameForPhoneIdentifier:userHexEncodedPublicKey];
|
|
|
|
|
if (displayName == nil) displayName = @"Anonymous";
|
|
|
|
|
|
|
|
|
|
LKGroupMessage *groupMessage = [[LKGroupMessage alloc] initWithHexEncodedPublicKey:userHexEncodedPublicKey displayName:displayName body:message.body type:LKGroupChatAPI.publicChatMessageType timestamp:message.timestamp];
|
|
|
|
|
[[LKGroupChatAPI sendMessage:groupMessage groupID:LKGroupChatAPI.publicChatID]
|
|
|
|
|
.thenOn(OWSDispatch.sendingQueue, ^(id result) {
|
|
|
|
|
[self messageSendDidSucceed:messageSend deviceMessages:deviceMessages wasSentByUD:false wasSentByWebsocket:false];
|
|
|
|
|
})
|
|
|
|
|
.catchOn(OWSDispatch.sendingQueue, ^(NSError *error) { // The snode is unreachable
|
|
|
|
|
failedMessageSend(error);
|
|
|
|
|
}) retainUntilComplete];
|
|
|
|
|
} else {
|
|
|
|
|
// Gather the message info
|
|
|
|
|
NSDictionary *signalMessageInfo = deviceMessages.firstObject;
|
|
|
|
|
SSKProtoEnvelopeType type = ((NSNumber *)signalMessageInfo[@"type"]).integerValue;
|
|
|
|
@ -1137,20 +1170,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
|
|
|
|
|
[message saveIsCalculatingProofOfWork:NO withTransaction:transaction];
|
|
|
|
|
}];
|
|
|
|
|
// Handle the 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];
|
|
|
|
|
} else {
|
|
|
|
|
OWSFailDebug(@"Missing underlying error: %@.", error);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
OWSFailDebug(@"Unexpected error: %@.", error);
|
|
|
|
|
}
|
|
|
|
|
[self messageSendDidFail:messageSend deviceMessages:deviceMessages statusCode:statusCode error:error responseData:responseData];
|
|
|
|
|
failedMessageSend(error);
|
|
|
|
|
};
|
|
|
|
|
// Send the message using the Loki API
|
|
|
|
|
[[LKAPI sendSignalMessage:signalMessage onP2PSuccess:onP2PSuccess]
|
|
|
|
@ -1189,6 +1209,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
|
|
|
|
|
.catchOn(OWSDispatch.sendingQueue, ^(NSError *error) { // The snode is unreachable
|
|
|
|
|
handleError(error);
|
|
|
|
|
}) retainUntilComplete];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Loki: Original code
|
|
|
|
|
/*
|
|
|
|
|