Merge pull request #923 from VASHvic/redesign_emoji_selector

redesign emoji selector
This commit is contained in:
Vitor Pamplona
2024-06-20 17:36:23 -04:00
committed by GitHub
3 changed files with 102 additions and 91 deletions

View File

@@ -27,6 +27,7 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -112,6 +113,7 @@ fun AllRelayListView(
Text( Text(
text = stringRes(R.string.relay_settings), text = stringRes(R.string.relay_settings),
style = MaterialTheme.typography.titleLarge, style = MaterialTheme.typography.titleLarge,
modifier = Modifier.widthIn(max = 200.dp),
) )
SaveButton( SaveButton(

View File

@@ -34,6 +34,8 @@ import androidx.compose.animation.slideInVertically
import androidx.compose.animation.slideOutVertically import androidx.compose.animation.slideOutVertically
import androidx.compose.animation.togetherWith import androidx.compose.animation.togetherWith
import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
@@ -47,10 +49,15 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.ripple.rememberRipple import androidx.compose.material.ripple.rememberRipple
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.ElevatedCard
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.LinearProgressIndicator import androidx.compose.material3.LinearProgressIndicator
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ProgressIndicatorDefaults import androidx.compose.material3.ProgressIndicatorDefaults
@@ -1323,6 +1330,13 @@ fun ReactionChoicePopup(
offset = IntOffset(0, iconSizePx), offset = IntOffset(0, iconSizePx),
onDismissRequest = { onDismiss() }, onDismissRequest = { onDismiss() },
) { ) {
ElevatedCard(
Modifier
.border(width = 1.dp, color = MaterialTheme.colorScheme.outline, shape = RoundedCornerShape(5.dp)),
elevation = CardDefaults.elevatedCardElevation(defaultElevation = 8.dp),
colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surfaceVariant),
) {
Box(modifier = Modifier.padding(5.dp)) {
FlowRow(horizontalArrangement = Arrangement.Center) { FlowRow(horizontalArrangement = Arrangement.Center) {
account.reactionChoices.forEach { reactionType -> account.reactionChoices.forEach { reactionType ->
ActionableReactionButton( ActionableReactionButton(
@@ -1336,6 +1350,8 @@ fun ReactionChoicePopup(
} }
} }
} }
}
}
} }
@Composable @Composable
@@ -1348,24 +1364,11 @@ private fun ActionableReactionButton(
onChangeAmount: () -> Unit, onChangeAmount: () -> Unit,
toRemove: ImmutableSet<String>, toRemove: ImmutableSet<String>,
) { ) {
Button(
modifier = Modifier.padding(horizontal = 3.dp),
onClick = {
accountViewModel.reactToOrDelete(
baseNote,
reactionType,
)
onDismiss()
},
shape = ButtonBorder,
colors =
ButtonDefaults.buttonColors(
containerColor = MaterialTheme.colorScheme.primary,
),
) {
val thisModifier = val thisModifier =
remember(reactionType) { remember(reactionType) {
Modifier.combinedClickable( Modifier
.padding(horizontal = 3.dp)
.combinedClickable(
onClick = { onClick = {
accountViewModel.reactToOrDelete( accountViewModel.reactToOrDelete(
baseNote, baseNote,
@@ -1375,6 +1378,7 @@ private fun ActionableReactionButton(
}, },
onLongClick = { onChangeAmount() }, onLongClick = { onChangeAmount() },
) )
.padding(5.dp)
} }
val removeSymbol = val removeSymbol =
@@ -1400,6 +1404,7 @@ private fun ActionableReactionButton(
renderable, renderable,
style = SpanStyle(color = Color.White), style = SpanStyle(color = Color.White),
maxLines = 1, maxLines = 1,
modifier = thisModifier,
) )
} else { } else {
when (reactionType) { when (reactionType) {
@@ -1429,7 +1434,6 @@ private fun ActionableReactionButton(
) )
} }
} }
}
} }
@OptIn(ExperimentalFoundationApi::class, ExperimentalLayoutApi::class) @OptIn(ExperimentalFoundationApi::class, ExperimentalLayoutApi::class)

View File

@@ -21,12 +21,14 @@
package com.vitorpamplona.amethyst.ui.note package com.vitorpamplona.amethyst.ui.note
import androidx.compose.animation.animateContentSize import androidx.compose.animation.animateContentSize
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.ExperimentalLayoutApi
import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.FlowRow
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
@@ -38,6 +40,7 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Button import androidx.compose.material3.Button
@@ -265,15 +268,17 @@ private fun RenderReactionOption(
reactionType: String, reactionType: String,
postViewModel: UpdateReactionTypeViewModel, postViewModel: UpdateReactionTypeViewModel,
) { ) {
Button( Box(
modifier = Modifier.padding(horizontal = 3.dp), modifier =
shape = ButtonBorder, Modifier
colors = .padding(3.dp)
ButtonDefaults.buttonColors( .clickable { postViewModel.removeChoice(reactionType) }
containerColor = MaterialTheme.colorScheme.primary, .border(
), width = 1.dp,
onClick = { postViewModel.removeChoice(reactionType) }, color = MaterialTheme.colorScheme.surfaceDim,
contentPadding = PaddingValues(horizontal = 5.dp), shape = RoundedCornerShape(8.dp),
)
.padding(8.dp),
) { ) {
if (reactionType.startsWith(":")) { if (reactionType.startsWith(":")) {
val noStartColon = reactionType.removePrefix(":") val noStartColon = reactionType.removePrefix(":")
@@ -287,30 +292,30 @@ private fun RenderReactionOption(
InLineIconRenderer( InLineIconRenderer(
renderable, renderable,
style = SpanStyle(color = Color.White), style = SpanStyle(color = MaterialTheme.colorScheme.onBackground),
maxLines = 1, maxLines = 1,
) )
} else { } else {
when (reactionType) { when (reactionType) {
"+" -> { "+" -> {
LikedIcon(modifier = Modifier.size(16.dp), tint = Color.White) LikedIcon(modifier = Modifier.size(16.dp), tint = MaterialTheme.colorScheme.onBackground)
Text( Text(
text = "", text = "",
color = Color.White, color = MaterialTheme.colorScheme.onBackground,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
) )
} }
"-" -> "-" ->
Text( Text(
text = "\uD83D\uDC4E", text = "\uD83D\uDC4E",
color = Color.White, color = MaterialTheme.colorScheme.onBackground,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
) )
else -> else ->
Text( Text(
text = "$reactionType", text = "$reactionType",
color = Color.White, color = MaterialTheme.colorScheme.onBackground,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
) )
} }