mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-23 18:12:44 +02:00
Move composer send media selection to it's own coordinator and us e ioS 15 api for sheet
This commit is contained in:
@@ -97,7 +97,7 @@ static CGSize kThreadListBarButtonItemImageSize;
|
||||
@interface RoomViewController () <UISearchBarDelegate, UIGestureRecognizerDelegate, UIScrollViewAccessibilityDelegate, RoomTitleViewTapGestureDelegate, MXKRoomMemberDetailsViewControllerDelegate, ContactsTableViewControllerDelegate, MXServerNoticesDelegate, RoomContextualMenuViewControllerDelegate,
|
||||
ReactionsMenuViewModelCoordinatorDelegate, EditHistoryCoordinatorBridgePresenterDelegate, MXKDocumentPickerPresenterDelegate, EmojiPickerCoordinatorBridgePresenterDelegate,
|
||||
ReactionHistoryCoordinatorBridgePresenterDelegate, CameraPresenterDelegate, MediaPickerCoordinatorBridgePresenterDelegate,
|
||||
RoomDataSourceDelegate, RoomCreationModalCoordinatorBridgePresenterDelegate, RoomInfoCoordinatorBridgePresenterDelegate, DialpadViewControllerDelegate, RemoveJitsiWidgetViewDelegate, VoiceMessageControllerDelegate, SpaceDetailPresenterDelegate, UserSuggestionCoordinatorBridgeDelegate, ThreadsCoordinatorBridgePresenterDelegate, ThreadsBetaCoordinatorBridgePresenterDelegate, MXThreadingServiceDelegate, RoomParticipantsInviteCoordinatorBridgePresenterDelegate, RoomInputToolbarViewDelegate>
|
||||
RoomDataSourceDelegate, RoomCreationModalCoordinatorBridgePresenterDelegate, RoomInfoCoordinatorBridgePresenterDelegate, DialpadViewControllerDelegate, RemoveJitsiWidgetViewDelegate, VoiceMessageControllerDelegate, SpaceDetailPresenterDelegate, UserSuggestionCoordinatorBridgeDelegate, ThreadsCoordinatorBridgePresenterDelegate, ThreadsBetaCoordinatorBridgePresenterDelegate, MXThreadingServiceDelegate, RoomParticipantsInviteCoordinatorBridgePresenterDelegate, RoomInputToolbarViewDelegate, ComposerCreateActionListBridgePresenterDelegate>
|
||||
{
|
||||
|
||||
// The preview header
|
||||
@@ -209,6 +209,7 @@ static CGSize kThreadListBarButtonItemImageSize;
|
||||
@property (nonatomic, strong) ThreadsCoordinatorBridgePresenter *threadsBridgePresenter;
|
||||
@property (nonatomic, strong) ThreadsBetaCoordinatorBridgePresenter *threadsBetaBridgePresenter;
|
||||
@property (nonatomic, strong) SlidingModalPresenter *threadsNoticeModalPresenter;
|
||||
@property (nonatomic, strong) ComposerCreateActionListBridgePresenter *composerCreateActionListBridgePresenter;
|
||||
@property (nonatomic, getter=isActivitiesViewExpanded) BOOL activitiesViewExpanded;
|
||||
@property (nonatomic, getter=isScrollToBottomHidden) BOOL scrollToBottomHidden;
|
||||
@property (nonatomic, getter=isMissedDiscussionsBadgeHidden) BOOL missedDiscussionsBadgeHidden;
|
||||
@@ -2252,35 +2253,6 @@ static CGSize kThreadListBarButtonItemImageSize;
|
||||
|
||||
- (void)setupActions {
|
||||
|
||||
if (@available(iOS 16.0, *)) {
|
||||
if ([self.inputToolbarView isKindOfClass:WysiwygInputToolbarView.class]) {
|
||||
//TODO actions should respect the build settings/preferences as with the legacy view just below
|
||||
((WysiwygInputToolbarView *) self.inputToolbarView).startModuleAction = ^(enum ComposerModule module) {
|
||||
switch (module) {
|
||||
case ComposerModulePhotoLibrary:
|
||||
[self showMediaPickerAnimated:YES];
|
||||
break;
|
||||
case ComposerModuleStickers:
|
||||
[self roomInputToolbarViewPresentStickerPicker];
|
||||
break;
|
||||
case ComposerModuleAttachments:
|
||||
[self roomInputToolbarViewDidTapFileUpload];
|
||||
break;
|
||||
case ComposerModulePolls:
|
||||
[self.delegate roomViewControllerDidRequestPollCreationFormPresentation:self];
|
||||
break;
|
||||
case ComposerModuleLocation:
|
||||
[self.delegate roomViewControllerDidRequestLocationSharingFormPresentation:self];
|
||||
break;
|
||||
case ComposerModuleCamera:
|
||||
[self showCameraControllerAnimated:YES];
|
||||
break;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (![self.inputToolbarView isKindOfClass:RoomInputToolbarView.class]) {
|
||||
return;
|
||||
}
|
||||
@@ -5003,6 +4975,39 @@ static CGSize kThreadListBarButtonItemImageSize;
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)roomInputToolbarViewShowSendMediaActions:(MXKRoomInputToolbarView *)toolbarView
|
||||
{
|
||||
NSMutableArray *actionItems = [NSMutableArray new];
|
||||
if (RiotSettings.shared.roomScreenAllowMediaLibraryAction)
|
||||
{
|
||||
[actionItems addObject:@(ComposerCreateActionPhotoLibrary)];
|
||||
}
|
||||
if (RiotSettings.shared.roomScreenAllowStickerAction && !self.isNewDirectChat)
|
||||
{
|
||||
[actionItems addObject:@(ComposerCreateActionStickers)];
|
||||
}
|
||||
if (RiotSettings.shared.roomScreenAllowFilesAction)
|
||||
{
|
||||
[actionItems addObject:@(ComposerCreateActionAttachments)];
|
||||
}
|
||||
if (BuildSettings.pollsEnabled && self.displayConfiguration.sendingPollsEnabled && !self.isNewDirectChat)
|
||||
{
|
||||
[actionItems addObject:@(ComposerCreateActionPolls)];
|
||||
}
|
||||
if (BuildSettings.locationSharingEnabled && !self.isNewDirectChat)
|
||||
{
|
||||
[actionItems addObject:@(ComposerCreateActionLocation)];
|
||||
}
|
||||
if (RiotSettings.shared.roomScreenAllowCameraAction)
|
||||
{
|
||||
[actionItems addObject:@(ComposerCreateActionCamera)];
|
||||
}
|
||||
|
||||
self.composerCreateActionListBridgePresenter = [[ComposerCreateActionListBridgePresenter alloc] initWithActions:actionItems];
|
||||
self.composerCreateActionListBridgePresenter.delegate = self;
|
||||
[self.composerCreateActionListBridgePresenter presentFrom:self animated:YES];
|
||||
}
|
||||
|
||||
- (void)roomInputToolbarView:(RoomInputToolbarView *)toolbarView sendAttributedTextMessage:(NSAttributedString *)attributedTextMessage
|
||||
{
|
||||
// Create before sending the message in case of a discussion (direct chat)
|
||||
@@ -7906,4 +7911,39 @@ static CGSize kThreadListBarButtonItemImageSize;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - ComposerCreateActionListBridgePresenter
|
||||
|
||||
- (void)composerCreateActionListBridgePresenterDelegateDidComplete:(ComposerCreateActionListBridgePresenter *)coordinatorBridgePresenter action:(enum ComposerCreateAction)action
|
||||
{
|
||||
|
||||
[coordinatorBridgePresenter dismissWithAnimated:true completion:^{
|
||||
switch (action) {
|
||||
case ComposerCreateActionPhotoLibrary:
|
||||
[self showMediaPickerAnimated:YES];
|
||||
break;
|
||||
case ComposerCreateActionStickers:
|
||||
[self roomInputToolbarViewPresentStickerPicker];
|
||||
break;
|
||||
case ComposerCreateActionAttachments:
|
||||
[self roomInputToolbarViewDidTapFileUpload];
|
||||
break;
|
||||
case ComposerCreateActionPolls:
|
||||
[self.delegate roomViewControllerDidRequestPollCreationFormPresentation:self];
|
||||
break;
|
||||
case ComposerCreateActionLocation:
|
||||
[self.delegate roomViewControllerDidRequestLocationSharingFormPresentation:self];
|
||||
break;
|
||||
case ComposerCreateActionCamera:
|
||||
[self showCameraControllerAnimated:YES];
|
||||
break;
|
||||
}
|
||||
self.composerCreateActionListBridgePresenter = nil;
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)composerCreateActionListBridgePresenterDidDismissInteractively:(ComposerCreateActionListBridgePresenter *)coordinatorBridgePresenter
|
||||
{
|
||||
self.composerCreateActionListBridgePresenter = nil;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user