Clean up link preview on incoming messages.

pull/51/head
Mikunj 6 years ago
parent 815c8a97fb
commit ac3cb695bb

@ -1409,14 +1409,7 @@ NS_ASSUME_NONNULL_BEGIN
dispatch_async(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
NSString *url = [OWSLinkPreview previewURLForRawBodyText:incomingMessage.body]; NSString *url = [OWSLinkPreview previewURLForRawBodyText:incomingMessage.body];
if (url != nil) { if (url != nil) {
[OWSLinkPreview tryToBuildPreviewInfoObjcWithPreviewUrl:url] [self handleLinkPreviewsIfNeededWithUrl:url message:incomingMessage];
.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];
}];
});
} }
}); });
@ -1518,12 +1511,21 @@ NS_ASSUME_NONNULL_BEGIN
linkPreviewURL = [OWSLinkPreview previewURLForRawBodyText:incomingMessage.body]; linkPreviewURL = [OWSLinkPreview previewURLForRawBodyText:incomingMessage.body];
} }
if (linkPreviewURL != nil) { if (linkPreviewURL != nil) {
[self handleLinkPreviewsIfNeededWithUrl:linkPreviewURL message:incomingMessage];
}
});
return incomingMessage;
}
}
- (void)handleLinkPreviewsIfNeededWithUrl:(NSString *)linkPreviewURL message:(TSMessage *)message {
[OWSLinkPreview tryToBuildPreviewInfoObjcWithPreviewUrl:linkPreviewURL] [OWSLinkPreview tryToBuildPreviewInfoObjcWithPreviewUrl:linkPreviewURL]
.thenOn(dispatch_get_main_queue(), ^(OWSLinkPreviewDraft *linkPreviewDraft) { .thenOn(dispatch_get_main_queue(), ^(OWSLinkPreviewDraft *linkPreviewDraft) {
[OWSPrimaryStorage.sharedManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { [OWSPrimaryStorage.sharedManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
OWSLinkPreview *linkPreview = [OWSLinkPreview buildValidatedLinkPreviewFromInfo:linkPreviewDraft transaction:transaction error:nil]; OWSLinkPreview *linkPreview = [OWSLinkPreview buildValidatedLinkPreviewFromInfo:linkPreviewDraft transaction:transaction error:nil];
incomingMessage.linkPreview = linkPreview; message.linkPreview = linkPreview;
[incomingMessage saveWithTransaction:transaction]; [message saveWithTransaction:transaction];
}]; }];
}) })
.catchOn(dispatch_get_main_queue(), ^(NSError *error) { .catchOn(dispatch_get_main_queue(), ^(NSError *error) {
@ -1543,27 +1545,22 @@ NS_ASSUME_NONNULL_BEGIN
// If we managed to get direct previews then render them // If we managed to get direct previews then render them
[OWSPrimaryStorage.sharedManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { [OWSPrimaryStorage.sharedManager.dbReadWriteConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
if (linkPreview.isDirectAttachment) { if (linkPreview.isDirectAttachment) {
if (!incomingMessage.hasAttachments) { if (!message.hasAttachments) {
[incomingMessage addAttachmentId:linkPreview.imageAttachmentId transaction:transaction]; [message addAttachmentId:linkPreview.imageAttachmentId transaction:transaction];
// Set the message id in attachment // Set the message id in attachment
TSAttachment *linkPreviewAttachment = [TSAttachment fetchObjectWithUniqueID:linkPreview.imageAttachmentId transaction:transaction]; TSAttachment *linkPreviewAttachment = [TSAttachment fetchObjectWithUniqueID:linkPreview.imageAttachmentId transaction:transaction];
linkPreviewAttachment.albumMessageId = incomingMessage.uniqueId; linkPreviewAttachment.albumMessageId = message.uniqueId;
[linkPreviewAttachment saveWithTransaction:transaction]; [linkPreviewAttachment saveWithTransaction:transaction];
} }
} else { } else {
incomingMessage.linkPreview = linkPreview; message.linkPreview = linkPreview;
[incomingMessage saveWithTransaction:transaction]; [message saveWithTransaction:transaction];
} }
}]; }];
}); });
} }
});
return incomingMessage;
}
}
// The difference between this function and `handleFriendRequestAcceptIfNeededWithEnvelope:` is that this will setup the incoming message for display to the user // The difference between this function and `handleFriendRequestAcceptIfNeededWithEnvelope:` is that this will setup the incoming message for display to the user
// While `handleFriendRequestAcceptIfNeededWithEnvelope:` handles friend request accepting logic and doesn't need a message // While `handleFriendRequestAcceptIfNeededWithEnvelope:` handles friend request accepting logic and doesn't need a message

Loading…
Cancel
Save