diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m b/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m index 1b438a869..dea5b0123 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m @@ -1235,6 +1235,18 @@ static const int kYapDatabaseRangeMaxLength = 25000; OWSAssertDebug(!viewItemCache[interaction.uniqueId]); viewItemCache[interaction.uniqueId] = viewItem; [viewItems addObject:viewItem]; + TSMessage *message = (TSMessage *)viewItem.interaction; + if (message.hasAttachmentsInNSE) { + [SSKEnvironment.shared.attachmentDownloads downloadAttachmentsForMessage:message + transaction:transaction + success:^(NSArray<TSAttachmentStream *> *attachmentStreams) { + OWSLogInfo(@"Successfully redownloaded attachment in thread: %@", message.thread); + } + failure:^(NSError *error) { + OWSLogWarn(@"Failed to redownload message with error: %@", error); + }]; + } + return viewItem; }; diff --git a/SignalServiceKit/src/Messages/Attachments/OWSAttachmentDownloads.m b/SignalServiceKit/src/Messages/Attachments/OWSAttachmentDownloads.m index f0471f14d..a471bf8e1 100644 --- a/SignalServiceKit/src/Messages/Attachments/OWSAttachmentDownloads.m +++ b/SignalServiceKit/src/Messages/Attachments/OWSAttachmentDownloads.m @@ -290,6 +290,13 @@ typedef void (^AttachmentDownloadFailure)(NSError *error); [job.attachmentPointer saveWithTransaction:transaction]; if (job.message) { + if (!CurrentAppContext().isMainApp) { + job.message.hasAttachmentsInNSE = true; + } else { + job.message.hasAttachmentsInNSE = false; + } + + [job.message saveWithTransaction:transaction]; [job.message touchWithTransaction:transaction]; } }]; diff --git a/SignalServiceKit/src/Messages/Interactions/TSMessage.h b/SignalServiceKit/src/Messages/Interactions/TSMessage.h index e4085c094..d8b5af2d7 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSMessage.h +++ b/SignalServiceKit/src/Messages/Interactions/TSMessage.h @@ -34,6 +34,8 @@ NS_ASSUME_NONNULL_BEGIN // Open groups @property (nonatomic) uint64_t openGroupServerMessageID; @property (nonatomic, readonly) BOOL isOpenGroupMessage; +// Attachments in NSE +@property (nonatomic) BOOL hasAttachmentsInNSE; - (instancetype)initInteractionWithTimestamp:(uint64_t)timestamp inThread:(TSThread *)thread NS_UNAVAILABLE; diff --git a/SignalServiceKit/src/Messages/OWSFailedAttachmentDownloadsJob.m b/SignalServiceKit/src/Messages/OWSFailedAttachmentDownloadsJob.m index f4d2a092d..010882650 100644 --- a/SignalServiceKit/src/Messages/OWSFailedAttachmentDownloadsJob.m +++ b/SignalServiceKit/src/Messages/OWSFailedAttachmentDownloadsJob.m @@ -3,6 +3,8 @@ // #import "OWSFailedAttachmentDownloadsJob.h" +#import "SSKEnvironment.h" +#import "OWSAttachmentDownloads.h" #import "OWSPrimaryStorage.h" #import "TSAttachmentPointer.h" #import <YapDatabase/YapDatabase.h> @@ -25,6 +27,12 @@ static NSString *const OWSFailedAttachmentDownloadsJobAttachmentStateIndex = @"i @implementation OWSFailedAttachmentDownloadsJob +- (OWSAttachmentDownloads *)attachmentDownloads +{ + return SSKEnvironment.shared.attachmentDownloads; +} + + - (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage { self = [super init];