mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-19 08:03:50 +02:00
Add an (optional) prompt when sending a video to select its size.
Use high quality when filming video in-app.
This commit is contained in:
@@ -126,6 +126,8 @@
|
||||
|
||||
#import "TypingUserInfo.h"
|
||||
|
||||
#import "MXSDKOptions.h"
|
||||
|
||||
#import "Riot-Swift.h"
|
||||
|
||||
NSNotificationName const RoomCallTileTappedNotification = @"RoomCallTileTappedNotification";
|
||||
@@ -2004,6 +2006,46 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
self.documentPickerPresenter = documentPickerPresenter;
|
||||
}
|
||||
|
||||
/**
|
||||
Send a video asset via the room input toolbar prompting the user for the conversion preset to use
|
||||
if the `promptForVideoConversionPreset` setting has been enabled.
|
||||
@param videoAsset The video asset to send
|
||||
@param isPhotoLibraryAsset Whether the asset was picked from the user's photo library.
|
||||
*/
|
||||
- (void)sendVideoAsset:(AVAsset *)videoAsset isPhotoLibraryAsset:(BOOL)isPhotoLibraryAsset
|
||||
{
|
||||
RoomInputToolbarView *roomInputToolbarView = [self inputToolbarViewAsRoomInputToolbarView];
|
||||
if (!roomInputToolbarView)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (RiotSettings.shared.promptForVideoConversionPreset)
|
||||
{
|
||||
// Show the video conversion prompt for the user to select what size video they would like to send.
|
||||
UIAlertController *compressionPrompt = [MXKTools videoConversionPromptForVideoAsset:videoAsset
|
||||
withCompletion:^(NSString *presetName) {
|
||||
// When the preset name is missing, the user cancelled.
|
||||
if (!presetName)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Set the chosen preset and send the video (conversion takes place in the SDK).
|
||||
[MXSDKOptions sharedInstance].videoConversionPresetName = presetName;
|
||||
[roomInputToolbarView sendSelectedVideoAsset:videoAsset isPhotoLibraryAsset:isPhotoLibraryAsset];
|
||||
}];
|
||||
|
||||
[self presentViewController:compressionPrompt animated:YES completion:nil];
|
||||
}
|
||||
else
|
||||
{
|
||||
// Otherwise default to 1080p and send the video.
|
||||
[MXSDKOptions sharedInstance].videoConversionPresetName = AVAssetExportPreset1920x1080;
|
||||
[roomInputToolbarView sendSelectedVideoAsset:videoAsset isPhotoLibraryAsset:isPhotoLibraryAsset];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Dialpad
|
||||
|
||||
- (void)openDialpad
|
||||
@@ -6075,12 +6117,8 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
[cameraPresenter dismissWithAnimated:YES completion:nil];
|
||||
self.cameraPresenter = nil;
|
||||
|
||||
RoomInputToolbarView *roomInputToolbarView = [self inputToolbarViewAsRoomInputToolbarView];
|
||||
if (roomInputToolbarView)
|
||||
{
|
||||
AVURLAsset *selectedVideo = [AVURLAsset assetWithURL:url];
|
||||
[roomInputToolbarView sendSelectedVideoAsset:selectedVideo isPhotoLibraryAsset:NO];
|
||||
}
|
||||
AVURLAsset *selectedVideo = [AVURLAsset assetWithURL:url];
|
||||
[self sendVideoAsset:selectedVideo isPhotoLibraryAsset:NO];
|
||||
}
|
||||
|
||||
#pragma mark - MediaPickerCoordinatorBridgePresenterDelegate
|
||||
@@ -6108,11 +6146,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
[coordinatorBridgePresenter dismissWithAnimated:YES completion:nil];
|
||||
self.mediaPickerPresenter = nil;
|
||||
|
||||
RoomInputToolbarView *roomInputToolbarView = [self inputToolbarViewAsRoomInputToolbarView];
|
||||
if (roomInputToolbarView)
|
||||
{
|
||||
[roomInputToolbarView sendSelectedVideoAsset:videoAsset isPhotoLibraryAsset:YES];
|
||||
}
|
||||
[self sendVideoAsset:videoAsset isPhotoLibraryAsset:YES];
|
||||
}
|
||||
|
||||
- (void)mediaPickerCoordinatorBridgePresenter:(MediaPickerCoordinatorBridgePresenter *)coordinatorBridgePresenter didSelectAssets:(NSArray<PHAsset *> *)assets
|
||||
@@ -6123,6 +6157,9 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
|
||||
RoomInputToolbarView *roomInputToolbarView = [self inputToolbarViewAsRoomInputToolbarView];
|
||||
if (roomInputToolbarView)
|
||||
{
|
||||
// Set a 1080p video conversion preset as compression mode only has an effect on the images.
|
||||
[MXSDKOptions sharedInstance].videoConversionPresetName = AVAssetExportPreset1920x1080;
|
||||
|
||||
[roomInputToolbarView sendSelectedAssets:assets withCompressionMode:RiotSettings.shared.roomInputToolbarCompressionMode];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user