// // Copyright (c) 2017 Open Whisper Systems. All rights reserved. // NS_ASSUME_NONNULL_BEGIN extern NSString *const kAttachmentDownloadProgressNotification; extern NSString *const kAttachmentDownloadProgressKey; extern NSString *const kAttachmentDownloadAttachmentIDKey; @class TSAttachmentPointer; @class TSAttachmentStream; @class TSMessage; @class TSNetworkManager; @class TSStorageManager; @class TSThread; @class OWSSignalServiceProtosAttachmentPointer; @class YapDatabaseReadWriteTransaction; /** * Given incoming attachment protos, determines which we support. * It can download those that we support and notifies threads when it receives unsupported attachments. */ @interface OWSAttachmentsProcessor : NSObject @property (nullable, nonatomic, readonly) NSArray *attachmentIds; @property (nonatomic, readonly) NSArray *supportedAttachmentIds; @property (nonatomic, readonly) BOOL hasSupportedAttachments; - (instancetype)init NS_UNAVAILABLE; - (instancetype)initWithAttachmentProtos:(NSArray *)attachmentProtos timestamp:(uint64_t)timestamp relay:(nullable NSString *)relay thread:(TSThread *)thread networkManager:(TSNetworkManager *)networkManager storageManager:(TSStorageManager *)storageManager transaction:(YapDatabaseReadWriteTransaction *)transaction NS_DESIGNATED_INITIALIZER; /* * Retry fetching failed attachment download */ - (instancetype)initWithAttachmentPointer:(TSAttachmentPointer *)attachmentPointer networkManager:(TSNetworkManager *)networkManager storageManager:(TSStorageManager *)storageManager NS_DESIGNATED_INITIALIZER; - (void)fetchAttachmentsForMessage:(nullable TSMessage *)message storageManager:(TSStorageManager *)storageManager success:(void (^)(TSAttachmentStream *attachmentStream))successHandler failure:(void (^)(NSError *error))failureHandler; - (void)fetchAttachmentsForMessage:(nullable TSMessage *)message transaction:(YapDatabaseReadWriteTransaction *)transaction success:(void (^)(TSAttachmentStream *attachmentStream))successHandler failure:(void (^)(NSError *error))failureHandler; @end NS_ASSUME_NONNULL_END