diff --git a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h index eca1b47e2..46f8ad201 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h +++ b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h @@ -196,7 +196,7 @@ typedef NS_ENUM(NSInteger, TSGroupMetaMessage) { #pragma mark - Update With... Methods // When sending a message, when proof of work calculation is started, we should mark it as such -- (void)updateIsCalculatingProofOfWorkWithTransaction:(YapDatabaseReadWriteTransaction *)transaction; +- (void)saveIsCalculatingProofOfWork:(BOOL)isCalculatingPoW withTransaction:(YapDatabaseReadWriteTransaction *)transaction; // This method is used to record a successful send to one recipient. - (void)updateWithSentRecipient:(NSString *)recipientId diff --git a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m index 7c8fd30ff..67ff9d8b4 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m +++ b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m @@ -610,7 +610,7 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt } } [message setMostRecentFailureText:error.localizedDescription]; - [message setIsCalculatingPoW:false]; + [message setIsCalculatingPoW:NO]; }]; } @@ -627,7 +627,7 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt recipientState.state = OWSOutgoingMessageRecipientStateFailed; } } - [message setIsCalculatingPoW:false]; + [message setIsCalculatingPoW:NO]; }]; } @@ -674,14 +674,12 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt }]; } -- (void)updateIsCalculatingProofOfWorkWithTransaction:(YapDatabaseReadWriteTransaction *)transaction +- (void)saveIsCalculatingProofOfWork:(BOOL)isCalculatingPoW withTransaction:(YapDatabaseReadWriteTransaction *)transaction { OWSAssertDebug(transaction); - - [self applyChangeToSelfAndLatestCopy:transaction - changeBlock:^(TSOutgoingMessage *message) { - [message setIsCalculatingPoW:true]; - }]; + [self applyChangeToSelfAndLatestCopy:transaction changeBlock:^(TSOutgoingMessage *message) { + [message setIsCalculatingPoW:isCalculatingPoW]; + }]; } - (void)updateWithSentRecipient:(NSString *)recipientId @@ -700,7 +698,7 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt } recipientState.state = OWSOutgoingMessageRecipientStateSent; recipientState.wasSentByUD = wasSentByUD; - [message setIsCalculatingPoW:false]; + [message setIsCalculatingPoW:NO]; }]; } @@ -718,7 +716,7 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt return; } recipientState.state = OWSOutgoingMessageRecipientStateSkipped; - [message setIsCalculatingPoW:false]; + [message setIsCalculatingPoW:NO]; }]; } @@ -747,7 +745,7 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt } recipientState.state = OWSOutgoingMessageRecipientStateSent; recipientState.deliveryTimestamp = deliveryTimestamp; - [message setIsCalculatingPoW:false]; + [message setIsCalculatingPoW:NO]; }]; } @@ -771,7 +769,7 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt } recipientState.state = OWSOutgoingMessageRecipientStateSent; recipientState.readTimestamp = @(readTimestamp); - [message setIsCalculatingPoW:false]; + [message setIsCalculatingPoW:NO]; }]; } @@ -841,7 +839,7 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt } } - [message setIsCalculatingPoW:false]; + [message setIsCalculatingPoW:NO]; if (!isSentUpdate) { [message setIsFromLinkedDevice:YES]; diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index 515a0ea13..c6c66f788 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -1104,7 +1104,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; } // Update the state to show that the proof of work is being calculated - [self setIsCalculatingProofOfWorkForMessage:messageSend]; + [self saveIsCalculatingProofOfWork:YES forMessage:messageSend]; // Convert the message to a Loki message and send it using the Loki messaging API NSDictionary *signalMessage = deviceMessages.firstObject; // Update the message and thread if needed @@ -1144,6 +1144,8 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; if (messageType == TSFriendRequestMessageType) { [message.thread saveFriendRequestStatus:TSThreadFriendRequestStatusNone withTransaction:nil]; } + // Update the PoW calculation status + [self saveIsCalculatingProofOfWork:NO forMessage:messageSend]; // Handle the error NSUInteger statusCode = 0; NSData *_Nullable responseData = nil; @@ -1161,7 +1163,6 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; [self messageSendDidFail:messageSend deviceMessages:deviceMessages statusCode:statusCode error:error responseData:responseData]; }) retainUntilComplete]; } - }) retainUntilComplete]; // Loki: Original code @@ -1227,12 +1228,12 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; */ } -- (void)setIsCalculatingProofOfWorkForMessage:(OWSMessageSend *)messageSend +- (void)saveIsCalculatingProofOfWork:(BOOL)isCalculatingPoW forMessage:(OWSMessageSend *)messageSend { OWSAssertDebug(messageSend); dispatch_async(OWSDispatch.sendingQueue, ^{ [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { - [messageSend.message updateIsCalculatingProofOfWorkWithTransaction:transaction]; + [messageSend.message saveIsCalculatingProofOfWork:isCalculatingPoW withTransaction:transaction]; }]; }); }