diff --git a/Signal/src/Loki/LokiGroupChatPoller.swift b/Signal/src/Loki/LokiGroupChatPoller.swift index 40a42708e..9f75b2e4a 100644 --- a/Signal/src/Loki/LokiGroupChatPoller.swift +++ b/Signal/src/Loki/LokiGroupChatPoller.swift @@ -104,7 +104,7 @@ public final class LokiGroupChatPoller : NSObject { } } // Poll - let _ = LokiGroupChatAPI.getMessages(for: group.serverID, on: group.server).done { messages in + let _ = LokiGroupChatAPI.getMessages(for: group.serverID, on: group.server).done(on: .main) { messages in messages.reversed().forEach { message in if message.hexEncodedPublicKey != userHexEncodedPublicKey { processIncomingMessage(message) diff --git a/SignalServiceKit/src/Messages/OWSMessageManager.m b/SignalServiceKit/src/Messages/OWSMessageManager.m index 8694623aa..e3bfc67c5 100644 --- a/SignalServiceKit/src/Messages/OWSMessageManager.m +++ b/SignalServiceKit/src/Messages/OWSMessageManager.m @@ -1407,17 +1407,19 @@ NS_ASSUME_NONNULL_BEGIN [self.primaryStorage setIDForMessageWithServerID:dataMessage.publicChatInfo.serverID to:incomingMessage.uniqueId in:transaction]; } - NSString *url = [OWSLinkPreview previewURLForRawBodyText:incomingMessage.body]; - if (url != nil) { - [OWSLinkPreview tryToBuildPreviewInfoObjcWithPreviewUrl:url] - .thenOn(dispatch_get_main_queue(), ^(OWSLinkPreviewDraft *linkPreviewDraft) { - [OWSPrimaryStorage.sharedManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { - OWSLinkPreview *linkPreview = [OWSLinkPreview buildValidatedLinkPreviewFromInfo:linkPreviewDraft transaction:transaction error:nil]; - incomingMessage.linkPreview = linkPreview; - [incomingMessage saveWithTransaction:transaction]; - }]; - }); - } + dispatch_async(dispatch_get_main_queue(), ^{ + NSString *url = [OWSLinkPreview previewURLForRawBodyText:incomingMessage.body]; + if (url != nil) { + [OWSLinkPreview tryToBuildPreviewInfoObjcWithPreviewUrl:url] + .thenOn(dispatch_get_main_queue(), ^(OWSLinkPreviewDraft *linkPreviewDraft) { + [OWSPrimaryStorage.sharedManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { + OWSLinkPreview *linkPreview = [OWSLinkPreview buildValidatedLinkPreviewFromInfo:linkPreviewDraft transaction:transaction error:nil]; + incomingMessage.linkPreview = linkPreview; + [incomingMessage saveWithTransaction:transaction]; + }]; + }); + } + }); return incomingMessage; } @@ -1505,15 +1507,17 @@ NS_ASSUME_NONNULL_BEGIN transaction:transaction]; if (linkPreview != nil) { - [OWSLinkPreview tryToBuildPreviewInfoObjcWithPreviewUrl:linkPreview.urlString] - .thenOn(dispatch_get_main_queue(), ^(OWSLinkPreviewDraft *linkPreviewDraft) { - if (linkPreviewDraft.jpegImageData == nil) { return; } - [OWSPrimaryStorage.sharedManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { - NSString *attachmentID = [OWSLinkPreview buildValidatedLinkPreviewFromInfo:linkPreviewDraft transaction:transaction error:nil].imageAttachmentId; - linkPreview.imageAttachmentId = attachmentID; - incomingMessage.linkPreview = linkPreview; - [incomingMessage saveWithTransaction:transaction]; - }]; + dispatch_async(dispatch_get_main_queue(), ^{ + [OWSLinkPreview tryToBuildPreviewInfoObjcWithPreviewUrl:linkPreview.urlString] + .thenOn(dispatch_get_main_queue(), ^(OWSLinkPreviewDraft *linkPreviewDraft) { + if (linkPreviewDraft.jpegImageData == nil) { return; } + [OWSPrimaryStorage.sharedManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { + NSString *attachmentID = [OWSLinkPreview buildValidatedLinkPreviewFromInfo:linkPreviewDraft transaction:transaction error:nil].imageAttachmentId; + linkPreview.imageAttachmentId = attachmentID; + incomingMessage.linkPreview = linkPreview; + [incomingMessage saveWithTransaction:transaction]; + }]; + }); }); }; diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index f055bf0ae..3c7be02cc 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -1544,7 +1544,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; // A friend request means we don't have a session with the person // There's no point to check for it - Boolean isFriendRequest = [messageSend.message isKindOfClass:LKFriendRequestMessage.class]; + BOOL isFriendRequest = [messageSend.message isKindOfClass:LKFriendRequestMessage.class]; if (!isFriendRequest) { [self throws_ensureRecipientHasSessionForMessageSend:messageSend deviceId:deviceId]; }