From af155bf9ed34a459d19e566d665c9900dd6eb7e5 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Tue, 13 Sep 2016 10:15:01 -0400 Subject: [PATCH] Avoid deadlock when receiving read receipt before incoming message // FREEBIE --- src/Messages/TSMessagesManager.m | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/Messages/TSMessagesManager.m b/src/Messages/TSMessagesManager.m index 0c0865f5b..6d5e86510 100644 --- a/src/Messages/TSMessagesManager.m +++ b/src/Messages/TSMessagesManager.m @@ -328,9 +328,9 @@ NSData *groupId = dataMessage.hasGroup ? dataMessage.group.id : nil; __block TSIncomingMessage *incomingMessage; + __block TSThread *thread; [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { - TSThread *thread; if (groupId) { NSMutableArray *uniqueMemberIds = [[[NSSet setWithArray:dataMessage.group.members] allObjects] mutableCopy]; TSGroupModel *model = [[TSGroupModel alloc] initWithTitle:dataMessage.group.name @@ -426,22 +426,20 @@ [incomingMessage saveWithTransaction:transaction]; } + }]; - NSString *name = [thread name]; - - if (incomingMessage && thread) { - // TODO Delay by 100ms? - - OWSReadReceiptsProcessor *readReceiptsProcessor = - [[OWSReadReceiptsProcessor alloc] initWithIncomingMessage:incomingMessage]; - [readReceiptsProcessor process]; + if (incomingMessage && thread) { + OWSReadReceiptsProcessor *readReceiptsProcessor = + [[OWSReadReceiptsProcessor alloc] initWithIncomingMessage:incomingMessage]; + [readReceiptsProcessor process]; - [[TextSecureKitEnv sharedEnv] - .notificationsManager notifyUserForIncomingMessage:incomingMessage - from:name - inThread:thread]; - } - }]; + // TODO Delay notification by 100ms? + // It's pretty annoying when you're phone keeps buzzing while you're having a conversation on Desktop. + NSString *name = [thread name]; + [[TextSecureKitEnv sharedEnv].notificationsManager notifyUserForIncomingMessage:incomingMessage + from:name + inThread:thread]; + } return incomingMessage; }