diff --git a/Signal/src/textsecure/Messages/TSMessagesManager+sendMessages.m b/Signal/src/textsecure/Messages/TSMessagesManager+sendMessages.m index 48d1048e1..c9b8ed889 100644 --- a/Signal/src/textsecure/Messages/TSMessagesManager+sendMessages.m +++ b/Signal/src/textsecure/Messages/TSMessagesManager+sendMessages.m @@ -61,9 +61,6 @@ [[TSNetworkManager sharedManager] queueAuthenticatedRequest:request success:^(NSURLSessionDataTask *task, id responseObject) { [self handleMessageSent:message inThread:thread]; - NSLog(@"Message sent"); - - } failure:^(NSURLSessionDataTask *task, NSError *error) { NSHTTPURLResponse *response = (NSHTTPURLResponse *)task.response; long statuscode = response.statusCode; @@ -96,7 +93,7 @@ [message saveWithTransaction:transaction]; TSThread *fetchedThread = [TSThread fetchObjectWithUniqueID:thread.uniqueId]; fetchedThread.lastMessageId = [TSInteraction timeStampFromString:message.uniqueId]; - [thread saveWithTransaction:transaction]; + [fetchedThread saveWithTransaction:transaction]; }]; } diff --git a/Signal/src/textsecure/Messages/TSMessagesManager.m b/Signal/src/textsecure/Messages/TSMessagesManager.m index 6f040dc10..1b9d2d0ab 100644 --- a/Signal/src/textsecure/Messages/TSMessagesManager.m +++ b/Signal/src/textsecure/Messages/TSMessagesManager.m @@ -64,7 +64,7 @@ [self handlePreKeyBundle:messageSignal]; break; - // Other messages are just dismissed for now. + // Other messages are just dismissed for now. case IncomingPushMessageSignalTypeKeyExchange: DDLogWarn(@"Received Key Exchange Message, not supported"); @@ -74,6 +74,7 @@ break; case IncomingPushMessageSignalTypeReceipt: DDLogInfo(@"Received a delivery receipt"); + [self handleDeliveryReceipt:messageSignal]; break; case IncomingPushMessageSignalTypeUnknown: DDLogWarn(@"Received an unknown message type"); @@ -87,6 +88,14 @@ } } +- (void)handleDeliveryReceipt:(IncomingPushMessageSignal*)signal{ + [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { + TSOutgoingMessage *message = [TSOutgoingMessage fetchObjectWithUniqueID:[TSInteraction stringFromTimeStamp:signal.timestamp] transaction:transaction]; + message.messageState = TSOutgoingMessageStateDelivered; + [message saveWithTransaction:transaction]; + }]; +} + - (void)handleSecureMessage:(IncomingPushMessageSignal*)secureMessage{ @synchronized(self){ TSStorageManager *storageManager = [TSStorageManager sharedManager]; @@ -94,7 +103,10 @@ int deviceId = (int) secureMessage.sourceDevice; if (![storageManager containsSession:recipientId deviceId:deviceId]) { - // Deal with failure + [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { + TSErrorMessage *errorMessage = [TSErrorMessage missingSessionWithSignal:secureMessage]; + [errorMessage saveWithTransaction:transaction]; + }]; } PushMessageContent *content;