// // Copyright 2017 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only // #import #import NS_ASSUME_NONNULL_BEGIN @class SDSAnyWriteTransaction; @class SignalServiceAddress; @class TSContactThread; @class TSGroupThread; @class TSIncomingMessageBuilder; @interface TSIncomingMessage : TSMessage @property (nonatomic, readonly, nullable) NSNumber *serverTimestamp; @property (nonatomic, readonly) uint64_t serverDeliveryTimestamp; @property (nonatomic, readonly, nullable) NSString *serverGuid; @property (nonatomic, readonly) BOOL wasReceivedByUD; - (instancetype)initMessageWithBuilder:(TSMessageBuilder *)messageBuilder NS_UNAVAILABLE; - (instancetype)initWithGrdbId:(int64_t)grdbId uniqueId:(NSString *)uniqueId receivedAtTimestamp:(uint64_t)receivedAtTimestamp sortId:(uint64_t)sortId timestamp:(uint64_t)timestamp uniqueThreadId:(NSString *)uniqueThreadId attachmentIds:(NSArray *)attachmentIds body:(nullable NSString *)body bodyRanges:(nullable MessageBodyRanges *)bodyRanges contactShare:(nullable OWSContact *)contactShare editState:(TSEditState)editState expireStartedAt:(uint64_t)expireStartedAt expiresAt:(uint64_t)expiresAt expiresInSeconds:(unsigned int)expiresInSeconds giftBadge:(nullable OWSGiftBadge *)giftBadge isGroupStoryReply:(BOOL)isGroupStoryReply isViewOnceComplete:(BOOL)isViewOnceComplete isViewOnceMessage:(BOOL)isViewOnceMessage linkPreview:(nullable OWSLinkPreview *)linkPreview messageSticker:(nullable MessageSticker *)messageSticker quotedMessage:(nullable TSQuotedMessage *)quotedMessage storedShouldStartExpireTimer:(BOOL)storedShouldStartExpireTimer storyAuthorUuidString:(nullable NSString *)storyAuthorUuidString storyReactionEmoji:(nullable NSString *)storyReactionEmoji storyTimestamp:(nullable NSNumber *)storyTimestamp wasRemotelyDeleted:(BOOL)wasRemotelyDeleted NS_UNAVAILABLE; - (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER; - (instancetype)initIncomingMessageWithBuilder:(TSIncomingMessageBuilder *)incomingMessageBuilder NS_DESIGNATED_INITIALIZER NS_SWIFT_NAME(init(incomingMessageWithBuilder:)); // --- CODE GENERATION MARKER // This snippet is generated by /Scripts/sds_codegen/sds_generate.py. Do not manually edit it, instead run // `sds_codegen.sh`. // clang-format off - (instancetype)initWithGrdbId:(int64_t)grdbId uniqueId:(NSString *)uniqueId receivedAtTimestamp:(uint64_t)receivedAtTimestamp sortId:(uint64_t)sortId timestamp:(uint64_t)timestamp uniqueThreadId:(NSString *)uniqueThreadId attachmentIds:(NSArray *)attachmentIds body:(nullable NSString *)body bodyRanges:(nullable MessageBodyRanges *)bodyRanges contactShare:(nullable OWSContact *)contactShare editState:(TSEditState)editState expireStartedAt:(uint64_t)expireStartedAt expiresAt:(uint64_t)expiresAt expiresInSeconds:(unsigned int)expiresInSeconds giftBadge:(nullable OWSGiftBadge *)giftBadge isGroupStoryReply:(BOOL)isGroupStoryReply isViewOnceComplete:(BOOL)isViewOnceComplete isViewOnceMessage:(BOOL)isViewOnceMessage linkPreview:(nullable OWSLinkPreview *)linkPreview messageSticker:(nullable MessageSticker *)messageSticker quotedMessage:(nullable TSQuotedMessage *)quotedMessage storedShouldStartExpireTimer:(BOOL)storedShouldStartExpireTimer storyAuthorUuidString:(nullable NSString *)storyAuthorUuidString storyReactionEmoji:(nullable NSString *)storyReactionEmoji storyTimestamp:(nullable NSNumber *)storyTimestamp wasRemotelyDeleted:(BOOL)wasRemotelyDeleted authorPhoneNumber:(nullable NSString *)authorPhoneNumber authorUUID:(nullable NSString *)authorUUID deprecated_sourceDeviceId:(unsigned int)deprecated_sourceDeviceId read:(BOOL)read serverDeliveryTimestamp:(uint64_t)serverDeliveryTimestamp serverGuid:(nullable NSString *)serverGuid serverTimestamp:(nullable NSNumber *)serverTimestamp viewed:(BOOL)viewed wasReceivedByUD:(BOOL)wasReceivedByUD NS_DESIGNATED_INITIALIZER NS_SWIFT_NAME(init(grdbId:uniqueId:receivedAtTimestamp:sortId:timestamp:uniqueThreadId:attachmentIds:body:bodyRanges:contactShare:editState:expireStartedAt:expiresAt:expiresInSeconds:giftBadge:isGroupStoryReply:isViewOnceComplete:isViewOnceMessage:linkPreview:messageSticker:quotedMessage:storedShouldStartExpireTimer:storyAuthorUuidString:storyReactionEmoji:storyTimestamp:wasRemotelyDeleted:authorPhoneNumber:authorUUID:deprecated_sourceDeviceId:read:serverDeliveryTimestamp:serverGuid:serverTimestamp:viewed:wasReceivedByUD:)); // clang-format on // --- CODE GENERATION MARKER /// This field should always be ignored. In the beginning, we did not /// store this value and so all rows would be 0. Then we started /// storing it, but we never should have. Then we stopped. /// In other words, DONT USE IT. /// Kept only so sds codegen outputs code with backwards compatibility with our sql /// table without needing to migrate or reindex TSInteraction. @property (nonatomic, readonly) UInt32 deprecated_sourceDeviceId; @property (nonatomic, readonly) SignalServiceAddress *authorAddress; @property (nonatomic, readonly, nullable) NSString *authorPhoneNumber; @property (nonatomic, readonly, nullable) NSString *authorUUID; @property (nonatomic, readonly, getter=wasViewed) BOOL viewed; - (void)markAsViewedAtTimestamp:(uint64_t)viewedTimestamp thread:(TSThread *)thread circumstance:(OWSReceiptCircumstance)circumstance transaction:(SDSAnyWriteTransaction *)transaction; // convenience method for expiring a message which was just read - (void)debugonly_markAsReadNowWithTransaction:(SDSAnyWriteTransaction *)transaction NS_SWIFT_NAME(debugonly_markAsReadNow(transaction:)); @end NS_ASSUME_NONNULL_END