Add MediaCompressionHelper.defaultCompressionMode for use in RoomViewController.

This commit is contained in:
Doug 2021-09-07 14:46:02 +01:00
parent 46b79bec45
commit e8bc470bd2
2 changed files with 41 additions and 36 deletions

View file

@ -6113,18 +6113,10 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
RoomInputToolbarView *roomInputToolbarView = [self inputToolbarViewAsRoomInputToolbarView];
if (roomInputToolbarView)
{
// When the compression mode build setting hasn't been customised, use the media compression prompt setting to determine what to do.
MXKRoomInputToolbarCompressionMode compressionMode;
if (BuildSettings.roomInputToolbarCompressionMode == MXKRoomInputToolbarCompressionModePrompt)
{
compressionMode = RiotSettings.shared.showMediaCompressionPrompt ? MXKRoomInputToolbarCompressionModePrompt : MXKRoomInputToolbarCompressionModeNone;
}
// Otherwise use the compression mode defined in the build settings.
else
{
compressionMode = BuildSettings.roomInputToolbarCompressionMode;
}
[roomInputToolbarView sendSelectedImage:imageData withMimeType:uti.mimeType andCompressionMode:compressionMode isPhotoLibraryAsset:NO];
[roomInputToolbarView sendSelectedImage:imageData
withMimeType:uti.mimeType
andCompressionMode:MediaCompressionHelper.defaultCompressionMode
isPhotoLibraryAsset:NO];
}
}
@ -6153,18 +6145,10 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
RoomInputToolbarView *roomInputToolbarView = [self inputToolbarViewAsRoomInputToolbarView];
if (roomInputToolbarView)
{
// When the compression mode build setting hasn't been customised, use the media compression prompt setting to determine what to do.
MXKRoomInputToolbarCompressionMode compressionMode;
if (BuildSettings.roomInputToolbarCompressionMode == MXKRoomInputToolbarCompressionModePrompt)
{
compressionMode = RiotSettings.shared.showMediaCompressionPrompt ? MXKRoomInputToolbarCompressionModePrompt : MXKRoomInputToolbarCompressionModeNone;
}
// Otherwise use the compression mode defined in the build settings.
else
{
compressionMode = BuildSettings.roomInputToolbarCompressionMode;
}
[roomInputToolbarView sendSelectedImage:imageData withMimeType:uti.mimeType andCompressionMode:compressionMode isPhotoLibraryAsset:YES];
[roomInputToolbarView sendSelectedImage:imageData
withMimeType:uti.mimeType
andCompressionMode:MediaCompressionHelper.defaultCompressionMode
isPhotoLibraryAsset:YES];
}
}
@ -6187,18 +6171,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
// Set a 1080p video conversion preset as compression mode only has an effect on the images.
[MXSDKOptions sharedInstance].videoConversionPresetName = AVAssetExportPreset1920x1080;
// When the compression mode build setting hasn't been customised, use the media compression prompt setting to determine what to do.
MXKRoomInputToolbarCompressionMode compressionMode;
if (BuildSettings.roomInputToolbarCompressionMode == MXKRoomInputToolbarCompressionModePrompt)
{
compressionMode = RiotSettings.shared.showMediaCompressionPrompt ? MXKRoomInputToolbarCompressionModePrompt : MXKRoomInputToolbarCompressionModeNone;
}
// Otherwise use the compression mode defined in the build settings.
else
{
compressionMode = BuildSettings.roomInputToolbarCompressionMode;
}
[roomInputToolbarView sendSelectedAssets:assets withCompressionMode:compressionMode];
[roomInputToolbarView sendSelectedAssets:assets withCompressionMode:MediaCompressionHelper.defaultCompressionMode];
}
}

View file

@ -0,0 +1,32 @@
//
// Copyright 2021 New Vector Ltd
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
import Foundation
/// A collection of helpful functions for media compression.
class MediaCompressionHelper: NSObject {
/// The default compression mode taking into account the `roomInputToolbarCompressionMode` build setting
/// and the `showMediaCompressionPrompt` Riot setting.
@objc static var defaultCompressionMode: MXKRoomInputToolbarCompressionMode {
// When the compression mode build setting hasn't been customised, use the media compression prompt setting to determine what to do.
if BuildSettings.roomInputToolbarCompressionMode == MXKRoomInputToolbarCompressionModePrompt {
return RiotSettings.shared.showMediaCompressionPrompt ? MXKRoomInputToolbarCompressionModePrompt : MXKRoomInputToolbarCompressionModeNone
} else {
// Otherwise use the compression mode defined in the build settings.
return BuildSettings.roomInputToolbarCompressionMode
}
}
}