fix: issue in which inline media picker does not use avatar circularity

Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
Infi 2024-06-22 02:38:59 +02:00
parent 50924dc4ce
commit fa280dbe1b
2 changed files with 20 additions and 2 deletions

View File

@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.filled.Close
@ -29,6 +30,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import chat.revolt.R import chat.revolt.R
import chat.revolt.api.settings.GlobalState
import com.bumptech.glide.integration.compose.CrossFade import com.bumptech.glide.integration.compose.CrossFade
import com.bumptech.glide.integration.compose.ExperimentalGlideComposeApi import com.bumptech.glide.integration.compose.ExperimentalGlideComposeApi
import com.bumptech.glide.integration.compose.GlideImage import com.bumptech.glide.integration.compose.GlideImage
@ -39,6 +41,7 @@ fun InlineMediaPicker(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
mimeType: String = "image/*", mimeType: String = "image/*",
circular: Boolean = false, circular: Boolean = false,
useAvatarCircularity: Boolean = false,
onPick: (Uri) -> Unit, onPick: (Uri) -> Unit,
canRemove: Boolean = true, canRemove: Boolean = true,
onRemove: () -> Unit = {}, onRemove: () -> Unit = {},
@ -53,6 +56,7 @@ fun InlineMediaPicker(
currentModel = currentModel, currentModel = currentModel,
mimeType = mimeType, mimeType = mimeType,
circular = true, circular = true,
useAvatarCircularity = useAvatarCircularity,
onPick = onPick onPick = onPick
) )
@ -114,6 +118,7 @@ fun InlineMediaPickerMediaPicker(
currentModel: Any?, currentModel: Any?,
mimeType: String = "image/*", mimeType: String = "image/*",
circular: Boolean = false, circular: Boolean = false,
useAvatarCircularity: Boolean = false,
enabled: Boolean = true, enabled: Boolean = true,
onPick: (Uri) -> Unit onPick: (Uri) -> Unit
) { ) {
@ -132,7 +137,13 @@ fun InlineMediaPickerMediaPicker(
contentScale = if (circular) ContentScale.Crop else ContentScale.FillWidth, contentScale = if (circular) ContentScale.Crop else ContentScale.FillWidth,
modifier = if (circular) { modifier = if (circular) {
Modifier Modifier
.clip(CircleShape) .then(
if (useAvatarCircularity) {
Modifier.clip(RoundedCornerShape(GlobalState.avatarRadius))
} else {
Modifier.clip(CircleShape)
}
)
.width(82.dp) .width(82.dp)
.height(82.dp) .height(82.dp)
} else { } else {
@ -149,7 +160,13 @@ fun InlineMediaPickerMediaPicker(
Box( Box(
modifier = if (circular) { modifier = if (circular) {
Modifier Modifier
.clip(CircleShape) .then(
if (useAvatarCircularity) {
Modifier.clip(RoundedCornerShape(GlobalState.avatarRadius))
} else {
Modifier.clip(CircleShape)
}
)
.width(82.dp) .width(82.dp)
.height(82.dp) .height(82.dp)
} else { } else {

View File

@ -346,6 +346,7 @@ fun ProfileSettingsScreen(
InlineMediaPicker( InlineMediaPicker(
currentModel = viewModel.pfpModel, currentModel = viewModel.pfpModel,
circular = true, circular = true,
useAvatarCircularity = true,
onPick = { onPick = {
viewModel.pfpModel = it.toString() viewModel.pfpModel = it.toString()
viewModel.saveNewPfp() viewModel.saveNewPfp()