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.

84 lines
3.0 KiB

// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
@class OWSBlockingManager;
@class OWSLinkPreviewDraft;
@class OWSQuotedReplyModel;
@class OWSUnreadIndicator;
@class SignalAttachment;
@class TSContactThread;
@class TSGroupThread;
@class TSInteraction;
@class TSOutgoingMessage;
@class TSThread;
@class YapDatabaseConnection;
@class YapDatabaseReadTransaction;
@class YapDatabaseReadWriteTransaction;
@interface ThreadDynamicInteractions : NSObject
// Represents the "reverse index" of the focus message, if any.
// The "reverse index" is the distance of this interaction from
// the last interaction in the thread. Therefore the last interaction
// will have a "reverse index" of zero.
// We use "reverse indices" because (among other uses) we use this to
// determine the initial load window size.
@property (nonatomic, nullable, readonly) NSNumber *focusMessagePosition;
@property (nonatomic, nullable, readonly) OWSUnreadIndicator *unreadIndicator;
- (void)clearUnreadIndicatorState;
#pragma mark -
@interface ThreadUtil : NSObject
#pragma mark - dynamic interactions
// This method will create and/or remove any offers and indicators
// necessary for this thread. This includes:
// * Block offers.
// * "Add to contacts" offers.
// * Unread indicators.
// Parameters:
// * hideUnreadMessagesIndicator: If YES, the "unread indicator" has
// been cleared and should not be shown.
// * firstUnseenInteractionTimestamp: A snapshot of unseen message state
// when we entered the conversation view. See comments on
// ThreadOffersAndIndicators.
// * maxRangeSize: Loading a lot of messages in conversation view is
// slow and unwieldy. This number represents the maximum current
// size of the "load window" in that view. The unread indicator should
// always be inserted within that window.
+ (ThreadDynamicInteractions *)ensureDynamicInteractionsForThread:(TSThread *)thread
blockingManager:(OWSBlockingManager *)blockingManager
dbConnection:(YapDatabaseConnection *)dbConnection
lastUnreadIndicator:(nullable OWSUnreadIndicator *)lastUnreadIndicator
focusMessageId:(nullable NSString *)focusMessageId
#pragma mark - Delete Content
+ (void)deleteAllContent;
#pragma mark - Find Content
+ (nullable TSInteraction *)findInteractionInThreadByTimestamp:(uint64_t)timestamp
authorId:(NSString *)authorId
threadUniqueId:(NSString *)threadUniqueId
transaction:(YapDatabaseReadTransaction *)transaction;