Handling delivery receipts.

pull/1/head
Frederic Jacobs 10 years ago
parent b22579d8f8
commit fbbeff70e4

@ -61,9 +61,6 @@
[[TSNetworkManager sharedManager] queueAuthenticatedRequest:request success:^(NSURLSessionDataTask *task, id responseObject) { [[TSNetworkManager sharedManager] queueAuthenticatedRequest:request success:^(NSURLSessionDataTask *task, id responseObject) {
[self handleMessageSent:message inThread:thread]; [self handleMessageSent:message inThread:thread];
NSLog(@"Message sent");
} failure:^(NSURLSessionDataTask *task, NSError *error) { } failure:^(NSURLSessionDataTask *task, NSError *error) {
NSHTTPURLResponse *response = (NSHTTPURLResponse *)task.response; NSHTTPURLResponse *response = (NSHTTPURLResponse *)task.response;
long statuscode = response.statusCode; long statuscode = response.statusCode;
@ -96,7 +93,7 @@
[message saveWithTransaction:transaction]; [message saveWithTransaction:transaction];
TSThread *fetchedThread = [TSThread fetchObjectWithUniqueID:thread.uniqueId]; TSThread *fetchedThread = [TSThread fetchObjectWithUniqueID:thread.uniqueId];
fetchedThread.lastMessageId = [TSInteraction timeStampFromString:message.uniqueId]; fetchedThread.lastMessageId = [TSInteraction timeStampFromString:message.uniqueId];
[thread saveWithTransaction:transaction]; [fetchedThread saveWithTransaction:transaction];
}]; }];
} }

@ -74,6 +74,7 @@
break; break;
case IncomingPushMessageSignalTypeReceipt: case IncomingPushMessageSignalTypeReceipt:
DDLogInfo(@"Received a delivery receipt"); DDLogInfo(@"Received a delivery receipt");
[self handleDeliveryReceipt:messageSignal];
break; break;
case IncomingPushMessageSignalTypeUnknown: case IncomingPushMessageSignalTypeUnknown:
DDLogWarn(@"Received an unknown message type"); 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{ - (void)handleSecureMessage:(IncomingPushMessageSignal*)secureMessage{
@synchronized(self){ @synchronized(self){
TSStorageManager *storageManager = [TSStorageManager sharedManager]; TSStorageManager *storageManager = [TSStorageManager sharedManager];
@ -94,7 +103,10 @@
int deviceId = (int) secureMessage.sourceDevice; int deviceId = (int) secureMessage.sourceDevice;
if (![storageManager containsSession:recipientId deviceId:deviceId]) { if (![storageManager containsSession:recipientId deviceId:deviceId]) {
// Deal with failure [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
TSErrorMessage *errorMessage = [TSErrorMessage missingSessionWithSignal:secureMessage];
[errorMessage saveWithTransaction:transaction];
}];
} }
PushMessageContent *content; PushMessageContent *content;

Loading…
Cancel
Save