mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-08-05 21:07:49 +01:00
Add persistent state save for send quality to media send module.
This commit is contained in:
@@ -90,6 +90,12 @@ object MediaSendV3Repository : MediaSendRepository {
|
||||
SignalStore.misc.isCameraFacingFront = value
|
||||
}
|
||||
|
||||
override var sentMediaQuality: SentMediaQuality
|
||||
get() = SignalStore.settings.sentMediaQuality
|
||||
set(value) {
|
||||
SignalStore.settings.sentMediaQuality = value
|
||||
}
|
||||
|
||||
override suspend fun getFolders(): List<MediaFolder> = suspendCancellableCoroutine { continuation ->
|
||||
mediaRepository.getFolders(appContext) { folders ->
|
||||
continuation.resume(folders)
|
||||
|
||||
@@ -59,6 +59,11 @@ interface MediaSendRepository {
|
||||
*/
|
||||
suspend fun deleteBlobs(media: List<Media>)
|
||||
|
||||
/**
|
||||
* User's sent-media-quality setting, backed by persistent storage.
|
||||
*/
|
||||
var sentMediaQuality: SentMediaQuality
|
||||
|
||||
/**
|
||||
* Whether the user has opted out of the warning shown before media is written to shared device storage.
|
||||
*/
|
||||
|
||||
@@ -43,7 +43,7 @@ data class MediaSendState(
|
||||
val focusedMedia: Media? = null,
|
||||
val isMeteredConnection: Boolean = false,
|
||||
val isPreUploadEnabled: Boolean = false,
|
||||
val sentMediaQuality: SentMediaQuality = SentMediaQuality.STANDARD,
|
||||
val sentMediaQuality: @WriteWith<TransientSentMediaQualityParceler> SentMediaQuality = MediaSendDependencies.mediaSendRepository.sentMediaQuality,
|
||||
/**
|
||||
* Per-media editor state keyed by URI (video trim data, image editor data, etc.).
|
||||
*/
|
||||
@@ -190,6 +190,14 @@ data class MediaSendState(
|
||||
override fun MediaConstraints.write(parcel: Parcel, flags: Int) = Unit
|
||||
}
|
||||
|
||||
/**
|
||||
* The repository is the source of truth: every toggle writes through to it, so the value is re-read rather than saved.
|
||||
*/
|
||||
private object TransientSentMediaQualityParceler : Parceler<SentMediaQuality> {
|
||||
override fun create(parcel: Parcel): SentMediaQuality = MediaSendDependencies.mediaSendRepository.sentMediaQuality
|
||||
override fun SentMediaQuality.write(parcel: Parcel, flags: Int) = Unit
|
||||
}
|
||||
|
||||
enum class ViewOnceToggleState(val code: Int) {
|
||||
OFF(0),
|
||||
ONCE(1);
|
||||
|
||||
@@ -763,6 +763,7 @@ class MediaSendViewModel(
|
||||
if (snapshot.sentMediaQuality == sentMediaQuality) return
|
||||
|
||||
updateState { copy(sentMediaQuality = sentMediaQuality, isPreUploadEnabled = false) }
|
||||
repository.sentMediaQuality = sentMediaQuality
|
||||
preUploadController.cancelAllUploads()
|
||||
|
||||
// Re-clamp video durations based on new quality
|
||||
|
||||
Reference in New Issue
Block a user