session-ios/SessionMessagingKit/Sending & Receiving/Attachments/TSAttachmentPointer.h

66 lines
2.5 KiB
Objective-C

#import <SessionMessagingKit/TSAttachment.h>
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@class OWSBackupFragment;
@class SNProtoAttachmentPointer;
@class TSAttachmentStream;
@class TSMessage;
typedef NS_ENUM(NSUInteger, TSAttachmentPointerType) {
TSAttachmentPointerTypeUnknown = 0,
TSAttachmentPointerTypeIncoming = 1,
TSAttachmentPointerTypeRestoring = 2,
};
typedef NS_ENUM(NSUInteger, TSAttachmentPointerState) {
TSAttachmentPointerStateEnqueued = 0,
TSAttachmentPointerStateDownloading = 1,
TSAttachmentPointerStateFailed = 2,
};
/**
* A TSAttachmentPointer is a yet-to-be-downloaded attachment.
*/
@interface TSAttachmentPointer : TSAttachment
@property (nonatomic) TSAttachmentPointerType pointerType;
@property (atomic) TSAttachmentPointerState state;
@property (nullable, atomic) NSString *mostRecentFailureLocalizedText;
// Though now required, `digest` may be null for pre-existing records or from
// messages received from other clients
@property (nullable, nonatomic, readonly) NSData *digest;
@property (nonatomic, readonly) CGSize mediaSize;
// Optional property. Only set for attachments which need "lazy backup restore."
@property (nonatomic, nullable) NSString *lazyRestoreFragmentId;
- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithServerId:(UInt64)serverId
key:(nullable NSData *)key
digest:(nullable NSData *)digest
byteCount:(UInt32)byteCount
contentType:(NSString *)contentType
sourceFilename:(nullable NSString *)sourceFilename
caption:(nullable NSString *)caption
albumMessageId:(nullable NSString *)albumMessageId
attachmentType:(TSAttachmentType)attachmentType
mediaSize:(CGSize)mediaSize NS_DESIGNATED_INITIALIZER;
- (instancetype)initForRestoreWithAttachmentStream:(TSAttachmentStream *)attachmentStream NS_DESIGNATED_INITIALIZER;
+ (nullable TSAttachmentPointer *)attachmentPointerFromProto:(SNProtoAttachmentPointer *)attachmentProto
albumMessage:(nullable TSMessage *)message;
+ (NSArray<TSAttachmentPointer *> *)attachmentPointersFromProtos:
(NSArray<SNProtoAttachmentPointer *> *)attachmentProtos
albumMessage:(TSMessage *)message;
@end
NS_ASSUME_NONNULL_END