Fix occasional hang on startup

pull/103/head
Niels Andriesse 5 years ago
parent fbf88271b3
commit 8b201f594e

@ -216,6 +216,8 @@ typedef NS_ENUM(NSInteger, LKThreadFriendRequestStatus) {
*/
- (void)removeOldIncomingFriendRequestMessagesIfNeededWithTransaction:(YapDatabaseReadWriteTransaction *)transaction;
- (TSInteraction *)getLastInteractionWithTransaction:(YapDatabaseReadTransaction *)transaction;
@end
NS_ASSUME_NONNULL_END

@ -292,12 +292,17 @@ ConversationColorName const kConversationColorName_Default = ConversationColorNa
{
__block TSInteraction *interaction;
[self.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) {
YapDatabaseViewTransaction *interactions = [transaction ext:TSMessageDatabaseViewExtensionName];
interaction = [interactions lastObjectInGroup:self.uniqueId];
interaction = [self getLastInteractionWithTransaction:transaction];
}];
return interaction;
}
- (TSInteraction *)getLastInteractionWithTransaction:(YapDatabaseReadTransaction *)transaction
{
YapDatabaseViewTransaction *interactions = [transaction ext:TSMessageDatabaseViewExtensionName];
return [interactions lastObjectInGroup:self.uniqueId];
}
/**
* Useful for tests and debugging. In production use an enumeration method.
*/

@ -1789,7 +1789,7 @@ NS_ASSUME_NONNULL_BEGIN
if (thread.friendRequestStatus == LKThreadFriendRequestStatusNone) { return; }
// Become happy friends and go on great adventures
[thread saveFriendRequestStatus:LKThreadFriendRequestStatusFriends withTransaction:transaction];
TSOutgoingMessage *existingFriendRequestMessage = [thread.lastInteraction as:TSOutgoingMessage.class];
TSOutgoingMessage *existingFriendRequestMessage = [[thread getLastInteractionWithTransaction:transaction] as:TSOutgoingMessage.class];
if (existingFriendRequestMessage != nil && existingFriendRequestMessage.isFriendRequest) {
[existingFriendRequestMessage saveFriendRequestStatus:LKMessageFriendRequestStatusAccepted withTransaction:transaction];
}

Loading…
Cancel
Save