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