mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
83 lines
3 KiB
Objective-C
83 lines
3 KiB
Objective-C
//
|
|
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
|
|
//
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
@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;
|
|
|
|
@end
|
|
|
|
#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
|
|
hideUnreadMessagesIndicator:(BOOL)hideUnreadMessagesIndicator
|
|
lastUnreadIndicator:(nullable OWSUnreadIndicator *)lastUnreadIndicator
|
|
focusMessageId:(nullable NSString *)focusMessageId
|
|
maxRangeSize:(int)maxRangeSize;
|
|
|
|
#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;
|
|
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|