* Add `VideoCompressorPreset` enum
This represents the different compression presets used for processing videos before uploading them
* Add `VideoCompressorHelper` util class to calculate the scaled output size of the video given an input size and its optimal bitrate
Also add `MediaOptimizationConfig` which will be used to decide how to apply compression in `MediaPreProcessor`
* Add `RustMatrixClient.getMaxFileUploadSize()` function and `MaxUploadSizeProvider` so we can import only this functionality into other components
* Try preloading the max file upload size the first time we get network connectivity - it's a best effort
This should help ensure we'll have this value available later, even if we still need to load it asynchronously.
* Split the `compressMedia` preference into `compressImages` and `compressMediaPreset`
* Modify the media processing parts to use the new classes and utils
* Add `MediaOptimizationSelectorPresenter`, which will retrieve the compression values and the max file upload size, also estimating the compressed video file sizes if needed.
* Add a feature flag to allow selecting the media upload quality per upload
* Integrate the previous changes with the attachments preview screen
Add strings from localazy too.
* Adapt the rest of the app calls to upload media to using the media optimization configs
* Allow modifying the default compression values in advanced settings, based on the feature flag value
* Pass the `fileSize` in `MediaUploadInfo` too, to be able to check it against the `maxUploadSize`
* Update screenshots
---------
Co-authored-by: ElementBot <android@element.io>
* Sync Strings from Localazy
* Fix strings usage after some were moved
* Fix Norwegian string that was causing lint to fail
* Update screenshots
---------
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
* Add confirmation dialog when kicking someone, ith ability to provide a reason.
Also add the reason for banning people.
* Fix padding issue in dialogs.
* Improve TextField in dialog.
* Update screenshots
* Fix tests
* Format and import
* Add missing UI tests.
* Use `needsConfirmation` as it's already used in the code base.
---------
Co-authored-by: ElementBot <android@element.io>
* Add support for starting verification of a user
* Add support for replying to incoming user verification requests
* Add reset recovery key button and previews to `ChooseSelfVerificationModeView`
* Add 'Profile' item in room details screen
* Update screenshots
* Remove `showDeviceVerifiedScreen` parameter from `NavTarget.UseAnotherDevice`
* Allow exiting the FTUE flow, which will close the app. The previous state will be restored when the app is reopened.
* When outgoing verification fails, move to the `Canceled` state. Then, when resetting the state machine state also reset the verification service.
---------
Co-authored-by: ElementBot <android@element.io>