Path: blob/main/SignalServiceKit/Messages/Interactions/TSInfoMessage.h
1 views
//1// Copyright 2017 Signal Messenger, LLC2// SPDX-License-Identifier: AGPL-3.0-only3//45#import <SignalServiceKit/OWSReadTracking.h>6#import <SignalServiceKit/TSMessage.h>78NS_ASSUME_NONNULL_BEGIN910@class SignalServiceAddress;1112@interface TSInfoMessage : TSMessage <OWSReadTracking>1314typedef NS_CLOSED_ENUM(NSInteger, TSInfoMessageType) {15/// Represents that the local user ended a 1:1 encryption session.16/// - Note:17/// Legacy info messages did not differentiate between the local and18/// remote use ending the session. Those messages default to this case.19/// - SeeAlso: ``TSInfoMessageTypeRemoteUserEndedSession``20TSInfoMessageTypeLocalUserEndedSession,21/// - Note This case is deprecated, but may be persisted in legacy messages.22TSInfoMessageUserNotRegistered,23/// - Note This case is deprecated, but may be persisted in legacy messages.24TSInfoMessageTypeUnsupportedMessage,25TSInfoMessageTypeGroupUpdate,26/// - Note This case is deprecated, but may be persisted in legacy messages.27TSInfoMessageTypeGroupQuit,28TSInfoMessageTypeDisappearingMessagesUpdate,29/// - Note This case is deprecated, but may be persisted in legacy messages.30TSInfoMessageAddToContactsOffer,31TSInfoMessageVerificationStateChange,32/// - Note This case is deprecated, but may be persisted in legacy messages.33TSInfoMessageAddUserToProfileWhitelistOffer,34/// - Note This case is deprecated, but may be persisted in legacy messages.35TSInfoMessageAddGroupToProfileWhitelistOffer,36TSInfoMessageUnknownProtocolVersion,37TSInfoMessageUserJoinedSignal,38TSInfoMessageSyncedThread,39TSInfoMessageProfileUpdate,40TSInfoMessagePhoneNumberChange,41TSInfoMessageRecipientHidden,42TSInfoMessagePaymentsActivationRequest,43TSInfoMessagePaymentsActivated,44TSInfoMessageThreadMerge,45TSInfoMessageSessionSwitchover,46TSInfoMessageReportedSpam,47TSInfoMessageLearnedProfileName,48TSInfoMessageBlockedOtherUser,49TSInfoMessageBlockedGroup,50TSInfoMessageUnblockedOtherUser,51TSInfoMessageUnblockedGroup,52TSInfoMessageAcceptedMessageRequest,53/// Represents that the remote user ended a 1:1 encryption session.54/// - SeeAlso: ``TSInfoMessageTypeLocalUserEndedSession``55TSInfoMessageTypeRemoteUserEndedSession,56TSInfoMessageTypeEndPoll,57TSInfoMessageTypePinnedMessage,58};5960typedef NSString *InfoMessageUserInfoKey NS_STRING_ENUM;6162extern InfoMessageUserInfoKey const InfoMessageUserInfoKeyLegacyGroupUpdateItems;63extern InfoMessageUserInfoKey const InfoMessageUserInfoKeyGroupUpdateItems;64extern InfoMessageUserInfoKey const InfoMessageUserInfoKeyOldGroupModel;65extern InfoMessageUserInfoKey const InfoMessageUserInfoKeyNewGroupModel;66extern InfoMessageUserInfoKey const InfoMessageUserInfoKeyOldDisappearingMessageToken;67extern InfoMessageUserInfoKey const InfoMessageUserInfoKeyNewDisappearingMessageToken;68extern InfoMessageUserInfoKey const InfoMessageUserInfoKeyGroupUpdateSourceLegacyAddress;69extern InfoMessageUserInfoKey const InfoMessageUserInfoKeyLegacyUpdaterKnownToBeLocalUser;70extern InfoMessageUserInfoKey const InfoMessageUserInfoKeyProfileChanges;71extern InfoMessageUserInfoKey const InfoMessageUserInfoKeyChangePhoneNumberAciString;72extern InfoMessageUserInfoKey const InfoMessageUserInfoKeyChangePhoneNumberOld;73extern InfoMessageUserInfoKey const InfoMessageUserInfoKeyChangePhoneNumberNew;74extern InfoMessageUserInfoKey const InfoMessageUserInfoKeyPaymentActivationRequestSenderAci;75extern InfoMessageUserInfoKey const InfoMessageUserInfoKeyPaymentActivatedAci;76extern InfoMessageUserInfoKey const InfoMessageUserInfoKeyThreadMergePhoneNumber;77extern InfoMessageUserInfoKey const InfoMessageUserInfoKeySessionSwitchoverPhoneNumber;78extern InfoMessageUserInfoKey const InfoMessageUserInfoKeyPhoneNumberDisplayNameBeforeLearningProfileName;79extern InfoMessageUserInfoKey const InfoMessageUserInfoKeyUsernameDisplayNameBeforeLearningProfileName;80extern InfoMessageUserInfoKey const InfoMessageUserInfoKeyEndPoll;81extern InfoMessageUserInfoKey const InfoMessageUserInfoKeyPinnedMessage;8283@property (nonatomic, readonly) TSInfoMessageType messageType;84@property (nonatomic, readonly, nullable) NSString *customMessage;85@property (nonatomic, readonly, nullable) SignalServiceAddress *unregisteredAddress;86@property (nonatomic, readonly, nullable) NSString *serverGuid;8788+ (NSArray<Class> *)infoMessageUserInfoObjectClasses;89@property (nonatomic, nullable) NSDictionary<InfoMessageUserInfoKey, id> *infoMessageUserInfo;9091- (instancetype)initMessageWithBuilder:(TSMessageBuilder *)messageBuilder NS_UNAVAILABLE;9293- (instancetype)initWithGrdbId:(int64_t)grdbId94uniqueId:(NSString *)uniqueId95receivedAtTimestamp:(uint64_t)receivedAtTimestamp96sortId:(uint64_t)sortId97timestamp:(uint64_t)timestamp98uniqueThreadId:(NSString *)uniqueThreadId99body:(nullable NSString *)body100bodyRanges:(nullable MessageBodyRanges *)bodyRanges101contactShare:(nullable OWSContact *)contactShare102deprecated_attachmentIds:(nullable NSArray<NSString *> *)deprecated_attachmentIds103editState:(TSEditState)editState104expireStartedAt:(uint64_t)expireStartedAt105expireTimerVersion:(nullable NSNumber *)expireTimerVersion106expiresAt:(uint64_t)expiresAt107expiresInSeconds:(unsigned int)expiresInSeconds108giftBadge:(nullable OWSGiftBadge *)giftBadge109isGroupStoryReply:(BOOL)isGroupStoryReply110isPoll:(BOOL)isPoll111isSmsMessageRestoredFromBackup:(BOOL)isSmsMessageRestoredFromBackup112isViewOnceComplete:(BOOL)isViewOnceComplete113isViewOnceMessage:(BOOL)isViewOnceMessage114linkPreview:(nullable OWSLinkPreview *)linkPreview115messageSticker:(nullable MessageSticker *)messageSticker116quotedMessage:(nullable TSQuotedMessage *)quotedMessage117storedShouldStartExpireTimer:(BOOL)storedShouldStartExpireTimer118storyAuthorUuidString:(nullable NSString *)storyAuthorUuidString119storyReactionEmoji:(nullable NSString *)storyReactionEmoji120storyTimestamp:(nullable NSNumber *)storyTimestamp121wasRemotelyDeleted:(BOOL)wasRemotelyDeleted NS_UNAVAILABLE;122123- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_UNAVAILABLE;124125- (instancetype)initWithThread:(TSThread *)thread126timestamp:(uint64_t)timestamp127serverGuid:(nullable NSString *)serverGuid128messageType:(TSInfoMessageType)messageType129expireTimerVersion:(nullable NSNumber *)expireTimerVersion130expiresInSeconds:(unsigned int)expiresInSeconds131infoMessageUserInfo:(nullable NSDictionary<InfoMessageUserInfoKey, id> *)infoMessageUserInfo132NS_DESIGNATED_INITIALIZER;133134// --- CODE GENERATION MARKER135136// This snippet is generated by /Scripts/sds_codegen/sds_generate.py. Do not manually edit it, instead run137// `sds_codegen.sh`.138139// clang-format off140141- (instancetype)initWithGrdbId:(int64_t)grdbId142uniqueId:(NSString *)uniqueId143receivedAtTimestamp:(uint64_t)receivedAtTimestamp144sortId:(uint64_t)sortId145timestamp:(uint64_t)timestamp146uniqueThreadId:(NSString *)uniqueThreadId147body:(nullable NSString *)body148bodyRanges:(nullable MessageBodyRanges *)bodyRanges149contactShare:(nullable OWSContact *)contactShare150deprecated_attachmentIds:(nullable NSArray<NSString *> *)deprecated_attachmentIds151editState:(TSEditState)editState152expireStartedAt:(uint64_t)expireStartedAt153expireTimerVersion:(nullable NSNumber *)expireTimerVersion154expiresAt:(uint64_t)expiresAt155expiresInSeconds:(unsigned int)expiresInSeconds156giftBadge:(nullable OWSGiftBadge *)giftBadge157isGroupStoryReply:(BOOL)isGroupStoryReply158isPoll:(BOOL)isPoll159isSmsMessageRestoredFromBackup:(BOOL)isSmsMessageRestoredFromBackup160isViewOnceComplete:(BOOL)isViewOnceComplete161isViewOnceMessage:(BOOL)isViewOnceMessage162linkPreview:(nullable OWSLinkPreview *)linkPreview163messageSticker:(nullable MessageSticker *)messageSticker164quotedMessage:(nullable TSQuotedMessage *)quotedMessage165storedShouldStartExpireTimer:(BOOL)storedShouldStartExpireTimer166storyAuthorUuidString:(nullable NSString *)storyAuthorUuidString167storyReactionEmoji:(nullable NSString *)storyReactionEmoji168storyTimestamp:(nullable NSNumber *)storyTimestamp169wasRemotelyDeleted:(BOOL)wasRemotelyDeleted170customMessage:(nullable NSString *)customMessage171infoMessageUserInfo:(nullable NSDictionary<InfoMessageUserInfoKey, id> *)infoMessageUserInfo172messageType:(TSInfoMessageType)messageType173read:(BOOL)read174serverGuid:(nullable NSString *)serverGuid175unregisteredAddress:(nullable SignalServiceAddress *)unregisteredAddress176NS_DESIGNATED_INITIALIZER NS_SWIFT_NAME(init(grdbId:uniqueId:receivedAtTimestamp:sortId:timestamp:uniqueThreadId:body:bodyRanges:contactShare:deprecated_attachmentIds:editState:expireStartedAt:expireTimerVersion:expiresAt:expiresInSeconds:giftBadge:isGroupStoryReply:isPoll:isSmsMessageRestoredFromBackup:isViewOnceComplete:isViewOnceMessage:linkPreview:messageSticker:quotedMessage:storedShouldStartExpireTimer:storyAuthorUuidString:storyReactionEmoji:storyTimestamp:wasRemotelyDeleted:customMessage:infoMessageUserInfo:messageType:read:serverGuid:unregisteredAddress:));177178// clang-format on179180// --- CODE GENERATION MARKER181182- (NSString *)conversationSystemMessageComponentTextWithTransaction:(DBReadTransaction *)transaction;183184185- (NSString *)infoMessagePreviewTextWithTransaction:(DBReadTransaction *)transaction;186187@end188189NS_ASSUME_NONNULL_END190191192