mirror of https://github.com/oxen-io/session-ios
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.
108 lines
4.5 KiB
Objective-C
108 lines
4.5 KiB
Objective-C
//
|
|
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
|
|
//
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
@class OWSBlockingManager;
|
|
@class OWSContactsManager;
|
|
@class OWSMessageSender;
|
|
@class SignalAttachment;
|
|
@class TSContactThread;
|
|
@class TSInteraction;
|
|
@class TSThread;
|
|
@class YapDatabaseConnection;
|
|
|
|
@interface ThreadDynamicInteractions : NSObject
|
|
|
|
// If there are unseen messages in the thread, this is the index
|
|
// of the unseen indicator, counting from the _end_ of the conversation
|
|
// history.
|
|
//
|
|
// This is used by MessageViewController to increase the
|
|
// range size of the mappings (the load window of the conversation)
|
|
// to include the unread indicator.
|
|
@property (nonatomic, nullable, readonly) NSNumber *unreadIndicatorPosition;
|
|
|
|
// If there are unseen messages in the thread, this is the timestamp
|
|
// of the oldest unseen messaage.
|
|
//
|
|
// Once we enter messages view, we mark all messages read, so we need
|
|
// a snapshot of what the first unread message was when we entered the
|
|
// view so that we can call ensureDynamicInteractionsForThread:...
|
|
// repeatedly. The unread indicator should continue to show up until
|
|
// it has been cleared, at which point hideUnreadMessagesIndicator is
|
|
// YES in ensureDynamicInteractionsForThread:...
|
|
@property (nonatomic, nullable, readonly) NSNumber *firstUnseenInteractionTimestamp;
|
|
|
|
@property (nonatomic, readonly) BOOL hasMoreUnseenMessages;
|
|
|
|
- (void)clearUnreadIndicatorState;
|
|
|
|
@end
|
|
|
|
#pragma mark -
|
|
|
|
@class TSOutgoingMessage;
|
|
|
|
@interface ThreadUtil : NSObject
|
|
|
|
+ (TSOutgoingMessage *)sendMessageWithText:(NSString *)text
|
|
inThread:(TSThread *)thread
|
|
messageSender:(OWSMessageSender *)messageSender
|
|
success:(void (^)(void))successHandler
|
|
failure:(void (^)(NSError *error))failureHandler;
|
|
|
|
+ (TSOutgoingMessage *)sendMessageWithText:(NSString *)text
|
|
inThread:(TSThread *)thread
|
|
messageSender:(OWSMessageSender *)messageSender;
|
|
|
|
+ (TSOutgoingMessage *)sendMessageWithAttachment:(SignalAttachment *)attachment
|
|
inThread:(TSThread *)thread
|
|
messageSender:(OWSMessageSender *)messageSender;
|
|
|
|
// We only should set ignoreErrors in debug or test code.
|
|
+ (TSOutgoingMessage *)sendMessageWithAttachment:(SignalAttachment *)attachment
|
|
inThread:(TSThread *)thread
|
|
messageSender:(OWSMessageSender *)messageSender
|
|
ignoreErrors:(BOOL)ignoreErrors;
|
|
|
|
// 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
|
|
contactsManager:(OWSContactsManager *)contactsManager
|
|
blockingManager:(OWSBlockingManager *)blockingManager
|
|
dbConnection:(YapDatabaseConnection *)dbConnection
|
|
hideUnreadMessagesIndicator:(BOOL)hideUnreadMessagesIndicator
|
|
firstUnseenInteractionTimestamp:(nullable NSNumber *)firstUnseenInteractionTimestamp
|
|
maxRangeSize:(int)maxRangeSize;
|
|
|
|
+ (BOOL)shouldShowGroupProfileBannerInThread:(TSThread *)thread blockingManager:(OWSBlockingManager *)blockingManager;
|
|
|
|
// This method should be called right _before_ we send a message to a thread,
|
|
// since we want to auto-add contact threads to the profile whitelist if the
|
|
// conversation was initiated by the local user.
|
|
//
|
|
// Returns YES IFF the thread was just added to the profile whitelist.
|
|
+ (BOOL)addThreadToProfileWhitelistIfEmptyContactThread:(TSThread *)thread;
|
|
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|