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.
		
		
		
		
		
			
		
			
				
	
	
		
			119 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Objective-C
		
	
			
		
		
	
	
			119 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Objective-C
		
	
| //
 | |
| //  Copyright (c) 2018 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;
 | |
| @class TSQuotedMessage;
 | |
| 
 | |
| @interface ThreadUtil : NSObject
 | |
| 
 | |
| + (TSOutgoingMessage *)sendMessageWithText:(NSString *)text
 | |
|                                   inThread:(TSThread *)thread
 | |
|                              quotedMessage:(nullable TSQuotedMessage *)quotedMessage
 | |
|                              messageSender:(OWSMessageSender *)messageSender
 | |
|                                    success:(void (^)(void))successHandler
 | |
|                                    failure:(void (^)(NSError *error))failureHandler;
 | |
| 
 | |
| + (TSOutgoingMessage *)sendMessageWithText:(NSString *)text
 | |
|                                   inThread:(TSThread *)thread
 | |
|                              quotedMessage:(nullable TSQuotedMessage *)quotedMessage
 | |
|                              messageSender:(OWSMessageSender *)messageSender;
 | |
| 
 | |
| + (TSOutgoingMessage *)sendMessageWithAttachment:(SignalAttachment *)attachment
 | |
|                                         inThread:(TSThread *)thread
 | |
|                                    quotedMessage:(nullable TSQuotedMessage *)quotedMessage
 | |
|                                    messageSender:(OWSMessageSender *)messageSender
 | |
|                                       completion:(void (^_Nullable)(NSError *_Nullable error))completion;
 | |
| 
 | |
| // We only should set ignoreErrors in debug or test code.
 | |
| + (TSOutgoingMessage *)sendMessageWithAttachment:(SignalAttachment *)attachment
 | |
|                                         inThread:(TSThread *)thread
 | |
|                                    quotedMessage:(nullable TSQuotedMessage *)quotedMessage
 | |
|                                    messageSender:(OWSMessageSender *)messageSender
 | |
|                                     ignoreErrors:(BOOL)ignoreErrors
 | |
|                                       completion:(void (^_Nullable)(NSError *_Nullable error))completion;
 | |
| 
 | |
| // 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;
 | |
| 
 | |
| #pragma mark - Delete Content
 | |
| 
 | |
| + (void)deleteAllContent;
 | |
| 
 | |
| @end
 | |
| 
 | |
| NS_ASSUME_NONNULL_END
 |