mirror of https://github.com/oxen-io/session-ios
mirror of https://github.com/oxen-io/session-ios
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
3.0 KiB
83 lines
3.0 KiB
// |
|
// 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
|
|
|