mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
4.0 KiB
Objective-C
92 lines
4.0 KiB
Objective-C
//
|
|
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
|
|
//
|
|
|
|
#import <SessionMessagingKit/TSInteraction.h>
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
typedef NS_ENUM(NSUInteger, TSMessageDirection) {
|
|
TSMessageDirectionIncoming,
|
|
TSMessageDirectionOutgoing
|
|
};
|
|
|
|
/**
|
|
* Abstract message class.
|
|
*/
|
|
|
|
@class OWSContact;
|
|
@class OWSLinkPreview;
|
|
@class TSAttachment;
|
|
@class TSAttachmentStream;
|
|
@class TSQuotedMessage;
|
|
@class YapDatabaseReadWriteTransaction;
|
|
|
|
extern const NSUInteger kOversizeTextMessageSizeThreshold;
|
|
|
|
@interface TSMessage : TSInteraction <OWSPreviewText>
|
|
|
|
@property (nonatomic, readonly) NSMutableArray<NSString *> *attachmentIds;
|
|
@property (nonatomic, readonly, nullable) NSString *body;
|
|
@property (nonatomic, readonly) uint32_t expiresInSeconds;
|
|
@property (nonatomic, readonly) uint64_t expireStartedAt;
|
|
@property (nonatomic, readonly) uint64_t expiresAt;
|
|
@property (nonatomic, readonly) BOOL isExpiringMessage;
|
|
@property (nonatomic, readonly, nullable) TSQuotedMessage *quotedMessage;
|
|
@property (nonatomic, nullable) OWSLinkPreview *linkPreview;
|
|
@property (nonatomic) uint64_t openGroupServerMessageID;
|
|
@property (nonatomic, readonly) BOOL isOpenGroupMessage;
|
|
@property (nonatomic, readonly, nullable) NSString *openGroupInvitationName;
|
|
@property (nonatomic, readonly, nullable) NSString *openGroupInvitationURL;
|
|
@property (nonatomic, nullable) NSString *serverHash;
|
|
@property (nonatomic) BOOL isDeleted;
|
|
@property (nonatomic) BOOL isCallMessage;
|
|
|
|
- (instancetype)initInteractionWithTimestamp:(uint64_t)timestamp inThread:(TSThread *)thread NS_UNAVAILABLE;
|
|
|
|
- (instancetype)initMessageWithTimestamp:(uint64_t)timestamp
|
|
inThread:(nullable TSThread *)thread
|
|
messageBody:(nullable NSString *)body
|
|
attachmentIds:(NSArray<NSString *> *)attachmentIds
|
|
expiresInSeconds:(uint32_t)expiresInSeconds
|
|
expireStartedAt:(uint64_t)expireStartedAt
|
|
quotedMessage:(nullable TSQuotedMessage *)quotedMessage
|
|
linkPreview:(nullable OWSLinkPreview *)linkPreview
|
|
openGroupInvitationName:(nullable NSString *)openGroupInvitationName
|
|
openGroupInvitationURL:(nullable NSString *)openGroupInvitationURL
|
|
serverHash:(nullable NSString *)serverHash NS_DESIGNATED_INITIALIZER;
|
|
|
|
- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
|
|
|
|
- (BOOL)hasAttachments;
|
|
- (NSArray<TSAttachment *> *)attachmentsWithTransaction:(YapDatabaseReadTransaction *)transaction;
|
|
- (NSArray<TSAttachment *> *)mediaAttachmentsWithTransaction:(YapDatabaseReadTransaction *)transaction;
|
|
- (nullable TSAttachment *)oversizeTextAttachmentWithTransaction:(YapDatabaseReadTransaction *)transaction;
|
|
- (void)addAttachmentWithID:(NSString *)attachmentID in:(YapDatabaseReadWriteTransaction *)transaction;
|
|
|
|
- (void)removeAttachment:(TSAttachment *)attachment
|
|
transaction:(YapDatabaseReadWriteTransaction *)transaction NS_SWIFT_NAME(removeAttachment(_:transaction:));
|
|
|
|
// Returns ids for all attachments, including message ("body") attachments,
|
|
// quoted reply thumbnails, contact share avatars, link preview images, etc.
|
|
- (NSArray<NSString *> *)allAttachmentIds;
|
|
|
|
- (void)setQuotedMessageThumbnailAttachmentStream:(TSAttachmentStream *)attachmentStream;
|
|
|
|
- (nullable NSString *)oversizeTextWithTransaction:(YapDatabaseReadTransaction *)transaction;
|
|
- (nullable NSString *)bodyTextWithTransaction:(YapDatabaseReadTransaction *)transaction;
|
|
|
|
- (BOOL)shouldStartExpireTimerWithTransaction:(YapDatabaseReadTransaction *)transaction;
|
|
|
|
#pragma mark - Update With... Methods
|
|
|
|
- (void)updateWithExpireStartedAt:(uint64_t)expireStartedAt transaction:(YapDatabaseReadWriteTransaction *)transaction;
|
|
|
|
- (void)updateWithLinkPreview:(OWSLinkPreview *)linkPreview transaction:(YapDatabaseReadWriteTransaction *)transaction;
|
|
|
|
- (void)updateForDeletionWithTransaction:(YapDatabaseReadWriteTransaction *)transaction;
|
|
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|