From 9d3a9f9b78a875fbafeeddfb112d48d8e3bec46e Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Wed, 15 May 2019 09:30:18 +1000 Subject: [PATCH] Fix crash due to nested transaction --- SignalServiceKit/src/Contacts/TSThread.m | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/SignalServiceKit/src/Contacts/TSThread.m b/SignalServiceKit/src/Contacts/TSThread.m index 233dfab82..87782ca15 100644 --- a/SignalServiceKit/src/Contacts/TSThread.m +++ b/SignalServiceKit/src/Contacts/TSThread.m @@ -701,13 +701,14 @@ ConversationColorName const kConversationColorName_Default = ConversationColorNa - (void)updateFriendRequestStatusWithTransaction:(YapDatabaseReadWriteTransaction *)transaction { OWSLogInfo(@"[Loki] updateFriendRequestStatus"); - NSUInteger numberOfInteractions = self.numberOfInteractions; - if (numberOfInteractions == 0) { + YapDatabaseViewTransaction *interactions = [transaction ext:TSMessageDatabaseViewExtensionName]; + NSUInteger interactionCount = [interactions numberOfItemsInGroup:self.uniqueId]; + if (interactionCount == 0) { _friendRequestStatus = TSThreadFriendRequestStatusNone; - } else if (numberOfInteractions == 1) { - YapDatabaseViewTransaction *interactions = [transaction ext:TSMessageDatabaseViewExtensionName]; + } else if (interactionCount == 1) { TSInteraction *interaction = [interactions firstObjectInGroup:self.uniqueId]; - _friendRequestStatus = interaction.interactionType == OWSInteractionType_IncomingMessage ? TSThreadFriendRequestStatusRequestReceived : TSThreadFriendRequestStatusRequestSent; + BOOL isIncomingMessage = interaction.interactionType == OWSInteractionType_IncomingMessage; + _friendRequestStatus = isIncomingMessage ? TSThreadFriendRequestStatusRequestReceived : TSThreadFriendRequestStatusRequestSent; } else { _friendRequestStatus = TSThreadFriendRequestStatusFriends; }