111 lines
3.5 KiB
Objective-C
111 lines
3.5 KiB
Objective-C
//
|
|
// Copyright (c) 2020 Open Whisper Systems. All rights reserved.
|
|
//
|
|
|
|
#import <SignalMessaging/OWSViewController.h>
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
typedef NS_ENUM(NSUInteger, ConversationViewAction) {
|
|
ConversationViewActionNone,
|
|
ConversationViewActionCompose,
|
|
ConversationViewActionAudioCall,
|
|
ConversationViewActionVideoCall,
|
|
};
|
|
|
|
@class TSThread;
|
|
@class ThreadViewModel;
|
|
|
|
@protocol ConversationViewItem;
|
|
|
|
@interface ConversationViewController : OWSViewController
|
|
|
|
@property (nonatomic, readonly) TSThread *thread;
|
|
@property (nonatomic, readonly) ThreadViewModel *threadViewModel;
|
|
|
|
+ (instancetype)new NS_UNAVAILABLE;
|
|
- (instancetype)init NS_UNAVAILABLE;
|
|
- (instancetype)initWithCoder:(NSCoder *)coder NS_UNAVAILABLE;
|
|
- (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil
|
|
bundle:(nullable NSBundle *)nibBundleOrNil NS_UNAVAILABLE;
|
|
|
|
- (instancetype)initWithThreadViewModel:(ThreadViewModel *)threadViewModel
|
|
action:(ConversationViewAction)action
|
|
focusMessageId:(nullable NSString *)focusMessageId NS_DESIGNATED_INITIALIZER;
|
|
|
|
- (void)popKeyBoard;
|
|
|
|
- (void)scrollToFirstUnreadMessage:(BOOL)isAnimated;
|
|
|
|
#pragma mark 3D Touch Methods
|
|
|
|
- (void)peekSetup;
|
|
- (void)popped;
|
|
|
|
#pragma mark - Keyboard Shortcuts
|
|
|
|
- (void)showConversationSettings;
|
|
- (void)focusInputToolbar;
|
|
- (void)openAllMedia;
|
|
- (void)openStickerKeyboard;
|
|
- (void)openAttachmentKeyboard;
|
|
- (void)openGifSearch;
|
|
- (void)dismissMessageActionsAnimated:(BOOL)animated;
|
|
- (void)dismissMessageActionsAnimated:(BOOL)animated completion:(void (^)(void))completion;
|
|
|
|
@end
|
|
|
|
#pragma mark - Internal Methods. Used in extensions
|
|
|
|
@class ConversationCollectionView;
|
|
@class ConversationHeaderView;
|
|
@class ConversationSearchController;
|
|
@class ConversationStyle;
|
|
@class ConversationViewCell;
|
|
@class ConversationViewLayout;
|
|
@class ConversationViewModel;
|
|
@class MessageActionsToolbar;
|
|
@class SDSDatabaseStorage;
|
|
@class SelectionHighlightView;
|
|
|
|
@protocol ConversationViewItem;
|
|
|
|
typedef NS_CLOSED_ENUM(NSUInteger,
|
|
ConversationUIMode) { ConversationUIMode_Normal, ConversationUIMode_Search, ConversationUIMode_Selection };
|
|
|
|
@interface ConversationViewController (Internal)
|
|
|
|
@property (nonatomic, readonly) ConversationCollectionView *collectionView;
|
|
@property (nonatomic, readonly) ConversationViewModel *conversationViewModel;
|
|
@property (nonatomic, readonly) SDSDatabaseStorage *databaseStorage;
|
|
@property (nonatomic, readonly) BOOL isViewVisible;
|
|
@property (nonatomic, readonly) BOOL isPresentingMessageActions;
|
|
@property (nonatomic, readonly) ConversationHeaderView *headerView;
|
|
|
|
@property (nonatomic, readonly) ConversationStyle *conversationStyle;
|
|
@property (nonatomic, readonly) ConversationViewLayout *layout;
|
|
|
|
- (void)dismissMessageRequestView;
|
|
- (void)showDetailViewForViewItem:(id<ConversationViewItem>)conversationItem;
|
|
- (void)populateReplyForViewItem:(id<ConversationViewItem>)conversationItem;
|
|
|
|
@property (nonatomic) ConversationUIMode uiMode;
|
|
- (void)updateBarButtonItems;
|
|
- (void)reloadBottomBar;
|
|
|
|
#pragma mark - Search
|
|
|
|
@property (nonatomic, readonly) ConversationSearchController *searchController;
|
|
|
|
#pragma mark - Selection
|
|
|
|
@property (nonatomic, readonly) MessageActionsToolbar *selectionToolbar;
|
|
@property (nonatomic) NSDictionary<NSString *, id<ConversationViewItem>> *selectedItems;
|
|
@property (nonatomic, readonly) SelectionHighlightView *selectionHighlightView;
|
|
|
|
- (void)conversationCell:(nonnull ConversationViewCell *)cell didSelectViewItem:(id<ConversationViewItem>)viewItem;
|
|
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|