Passing media quality from Slider to Compressor
setting media quality to MEDIUM where ui has no option for setting it (ChannelScreen, ChatroomScreen, NewUserMetadataViewModel)
This commit is contained in:
@@ -330,8 +330,8 @@ fun EditPostView(
|
||||
ImageVideoDescription(
|
||||
url,
|
||||
accountViewModel.account.settings.defaultFileServer,
|
||||
onAdd = { alt, server, sensitiveContent ->
|
||||
postViewModel.upload(url, alt, sensitiveContent, false, server, accountViewModel::toast, context)
|
||||
onAdd = { alt, server, sensitiveContent, mediaQuality ->
|
||||
postViewModel.upload(url, alt, sensitiveContent, mediaQuality, false, server, accountViewModel::toast, context)
|
||||
if (!server.isNip95) {
|
||||
accountViewModel.account.settings.changeDefaultFileServer(server.server)
|
||||
}
|
||||
|
||||
@@ -41,7 +41,6 @@ import com.vitorpamplona.amethyst.model.User
|
||||
import com.vitorpamplona.amethyst.service.FileHeader
|
||||
import com.vitorpamplona.amethyst.service.Nip96Uploader
|
||||
import com.vitorpamplona.amethyst.service.NostrSearchEventOrUserDataSource
|
||||
import com.vitorpamplona.amethyst.ui.components.CompressorQuality
|
||||
import com.vitorpamplona.amethyst.ui.components.MediaCompressor
|
||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||
import com.vitorpamplona.amethyst.ui.stringRes
|
||||
@@ -149,6 +148,7 @@ open class EditPostViewModel : ViewModel() {
|
||||
galleryUri: Uri,
|
||||
alt: String?,
|
||||
sensitiveContent: Boolean,
|
||||
mediaQuality: Float,
|
||||
isPrivate: Boolean = false,
|
||||
server: ServerOption,
|
||||
onError: (String, String) -> Unit,
|
||||
@@ -224,7 +224,7 @@ open class EditPostViewModel : ViewModel() {
|
||||
isUploadingImage = false
|
||||
onError(stringRes(context, R.string.failed_to_upload_media_no_details), stringRes(context, it))
|
||||
},
|
||||
mediaQuality = CompressorQuality.LOW,
|
||||
mediaQuality = MediaCompressor().floatToCompressorQuality(mediaQuality),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -493,8 +493,8 @@ fun NewPostView(
|
||||
ImageVideoDescription(
|
||||
url,
|
||||
accountViewModel.account.settings.defaultFileServer,
|
||||
onAdd = { alt, server, sensitiveContent ->
|
||||
postViewModel.upload(url, alt, sensitiveContent, false, server, accountViewModel::toast, context)
|
||||
onAdd = { alt, server, sensitiveContent, mediaQuality ->
|
||||
postViewModel.upload(url, alt, sensitiveContent, mediaQuality, false, server, accountViewModel::toast, context)
|
||||
if (!server.isNip95) {
|
||||
accountViewModel.account.settings.changeDefaultFileServer(server.server)
|
||||
}
|
||||
@@ -1610,7 +1610,7 @@ fun CreateButton(
|
||||
fun ImageVideoDescription(
|
||||
uri: Uri,
|
||||
defaultServer: Nip96MediaServers.ServerName,
|
||||
onAdd: (String, ServerOption, Boolean) -> Unit,
|
||||
onAdd: (String, ServerOption, Boolean, Float) -> Unit,
|
||||
onCancel: () -> Unit,
|
||||
onError: (Int) -> Unit,
|
||||
accountViewModel: AccountViewModel,
|
||||
@@ -1668,7 +1668,7 @@ fun ImageVideoDescription(
|
||||
}
|
||||
var message by remember { mutableStateOf("") }
|
||||
var sensitiveContent by remember { mutableStateOf(false) }
|
||||
var sliderPosition by remember { mutableStateOf(1f) } // 0 = Low, 1 = Medium, 2 = High
|
||||
var mediaQualitySlider by remember { mutableStateOf(1f) } // 0 = Low, 1 = Medium, 2 = High
|
||||
|
||||
Column(
|
||||
modifier =
|
||||
@@ -1861,15 +1861,15 @@ fun ImageVideoDescription(
|
||||
) {
|
||||
Column {
|
||||
Slider(
|
||||
value = sliderPosition,
|
||||
onValueChange = { sliderPosition = it },
|
||||
value = mediaQualitySlider,
|
||||
onValueChange = { mediaQualitySlider = it },
|
||||
valueRange = 0f..2f,
|
||||
steps = 1,
|
||||
)
|
||||
|
||||
Text(
|
||||
text =
|
||||
when (sliderPosition.toInt()) {
|
||||
when (mediaQualitySlider.toInt()) {
|
||||
0 -> CompressorQuality.LOW.toString()
|
||||
1 -> CompressorQuality.MEDIUM.toString()
|
||||
2 -> CompressorQuality.HIGH.toString()
|
||||
@@ -1884,7 +1884,7 @@ fun ImageVideoDescription(
|
||||
Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(vertical = 10.dp),
|
||||
onClick = { onAdd(message, selectedServer, sensitiveContent) },
|
||||
onClick = { onAdd(message, selectedServer, sensitiveContent, mediaQualitySlider) },
|
||||
shape = QuoteBorder,
|
||||
colors =
|
||||
ButtonDefaults.buttonColors(
|
||||
|
||||
@@ -46,7 +46,6 @@ import com.vitorpamplona.amethyst.service.FileHeader
|
||||
import com.vitorpamplona.amethyst.service.LocationUtil
|
||||
import com.vitorpamplona.amethyst.service.Nip96Uploader
|
||||
import com.vitorpamplona.amethyst.service.NostrSearchEventOrUserDataSource
|
||||
import com.vitorpamplona.amethyst.ui.components.CompressorQuality
|
||||
import com.vitorpamplona.amethyst.ui.components.MediaCompressor
|
||||
import com.vitorpamplona.amethyst.ui.components.Split
|
||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||
@@ -835,6 +834,7 @@ open class NewPostViewModel : ViewModel() {
|
||||
galleryUri: Uri,
|
||||
alt: String?,
|
||||
sensitiveContent: Boolean,
|
||||
mediaQuality: Float,
|
||||
isPrivate: Boolean = false,
|
||||
server: ServerOption,
|
||||
onError: (title: String, message: String) -> Unit,
|
||||
@@ -910,7 +910,7 @@ open class NewPostViewModel : ViewModel() {
|
||||
isUploadingImage = false
|
||||
onError(stringRes(context, R.string.failed_to_upload_media_no_details), stringRes(context, it))
|
||||
},
|
||||
mediaQuality = CompressorQuality.LOW,
|
||||
mediaQuality = MediaCompressor().floatToCompressorQuality(mediaQuality),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+1
@@ -212,6 +212,7 @@ class NewUserMetadataViewModel : ViewModel() {
|
||||
|
||||
onError(stringRes(context, R.string.error_when_compressing_media), stringRes(context, it))
|
||||
},
|
||||
// Use MEDIUM quality as default
|
||||
mediaQuality = CompressorQuality.MEDIUM,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -184,6 +184,22 @@ class MediaCompressor {
|
||||
}
|
||||
return arrayOf(name, extension)
|
||||
}
|
||||
|
||||
fun floatToCompressorQuality(mediaQualityFloat: Float): CompressorQuality =
|
||||
when (mediaQualityFloat) {
|
||||
0f -> CompressorQuality.LOW
|
||||
1f -> CompressorQuality.MEDIUM
|
||||
2f -> CompressorQuality.HIGH
|
||||
else -> CompressorQuality.MEDIUM
|
||||
}
|
||||
|
||||
fun compressorQualityToFloat(compressorQuality: CompressorQuality): Float =
|
||||
when (compressorQuality) {
|
||||
CompressorQuality.LOW -> 0f
|
||||
CompressorQuality.MEDIUM -> 1f
|
||||
CompressorQuality.HIGH -> 2f
|
||||
else -> 1f
|
||||
}
|
||||
}
|
||||
|
||||
enum class CompressorQuality {
|
||||
|
||||
+4
@@ -116,7 +116,9 @@ import com.vitorpamplona.amethyst.ui.actions.NewPostViewModel
|
||||
import com.vitorpamplona.amethyst.ui.actions.ServerOption
|
||||
import com.vitorpamplona.amethyst.ui.actions.UploadFromGallery
|
||||
import com.vitorpamplona.amethyst.ui.actions.UrlUserTagTransformation
|
||||
import com.vitorpamplona.amethyst.ui.components.CompressorQuality
|
||||
import com.vitorpamplona.amethyst.ui.components.LoadNote
|
||||
import com.vitorpamplona.amethyst.ui.components.MediaCompressor
|
||||
import com.vitorpamplona.amethyst.ui.components.RobohashFallbackAsyncImage
|
||||
import com.vitorpamplona.amethyst.ui.components.SensitivityWarning
|
||||
import com.vitorpamplona.amethyst.ui.components.TranslatableRichTextViewer
|
||||
@@ -466,6 +468,8 @@ fun EditFieldRow(
|
||||
galleryUri = it,
|
||||
alt = null,
|
||||
sensitiveContent = false,
|
||||
// Use MEDIUM quality
|
||||
mediaQuality = MediaCompressor().compressorQualityToFloat(CompressorQuality.MEDIUM),
|
||||
server = ServerOption(accountViewModel.account.settings.defaultFileServer, false),
|
||||
onError = accountViewModel::toast,
|
||||
context = context,
|
||||
|
||||
+4
@@ -92,6 +92,8 @@ import com.vitorpamplona.amethyst.ui.actions.PostButton
|
||||
import com.vitorpamplona.amethyst.ui.actions.ServerOption
|
||||
import com.vitorpamplona.amethyst.ui.actions.UploadFromGallery
|
||||
import com.vitorpamplona.amethyst.ui.actions.UrlUserTagTransformation
|
||||
import com.vitorpamplona.amethyst.ui.components.CompressorQuality
|
||||
import com.vitorpamplona.amethyst.ui.components.MediaCompressor
|
||||
import com.vitorpamplona.amethyst.ui.note.ClickableUserPicture
|
||||
import com.vitorpamplona.amethyst.ui.note.IncognitoIconOff
|
||||
import com.vitorpamplona.amethyst.ui.note.IncognitoIconOn
|
||||
@@ -443,6 +445,8 @@ fun PrivateMessageEditFieldRow(
|
||||
galleryUri = it,
|
||||
alt = null,
|
||||
sensitiveContent = false,
|
||||
// use MEDIUM quality
|
||||
mediaQuality = MediaCompressor().compressorQualityToFloat(CompressorQuality.MEDIUM),
|
||||
isPrivate = isPrivate,
|
||||
server = ServerOption(accountViewModel.account.settings.defaultFileServer, false),
|
||||
onError = accountViewModel::toast,
|
||||
|
||||
Reference in New Issue
Block a user