mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2024-09-30 00:40:49 +00:00
Improved padding and spacing for chat messages
This commit is contained in:
parent
3a70cfb9e2
commit
7bd3e0beab
@ -71,7 +71,7 @@ import com.vitorpamplona.amethyst.ui.theme.ChatPaddingInnerQuoteModifier
|
|||||||
import com.vitorpamplona.amethyst.ui.theme.ChatPaddingModifier
|
import com.vitorpamplona.amethyst.ui.theme.ChatPaddingModifier
|
||||||
import com.vitorpamplona.amethyst.ui.theme.DoubleHorzSpacer
|
import com.vitorpamplona.amethyst.ui.theme.DoubleHorzSpacer
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Font12SP
|
import com.vitorpamplona.amethyst.ui.theme.Font12SP
|
||||||
import com.vitorpamplona.amethyst.ui.theme.HalfTopPadding
|
import com.vitorpamplona.amethyst.ui.theme.HalfHalfTopPadding
|
||||||
import com.vitorpamplona.amethyst.ui.theme.ReactionRowHeightChat
|
import com.vitorpamplona.amethyst.ui.theme.ReactionRowHeightChat
|
||||||
import com.vitorpamplona.amethyst.ui.theme.RowColSpacing
|
import com.vitorpamplona.amethyst.ui.theme.RowColSpacing
|
||||||
import com.vitorpamplona.amethyst.ui.theme.RowColSpacing5dp
|
import com.vitorpamplona.amethyst.ui.theme.RowColSpacing5dp
|
||||||
@ -79,7 +79,6 @@ import com.vitorpamplona.amethyst.ui.theme.Size18Modifier
|
|||||||
import com.vitorpamplona.amethyst.ui.theme.Size20dp
|
import com.vitorpamplona.amethyst.ui.theme.Size20dp
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size5Modifier
|
import com.vitorpamplona.amethyst.ui.theme.Size5Modifier
|
||||||
import com.vitorpamplona.amethyst.ui.theme.StdHorzSpacer
|
import com.vitorpamplona.amethyst.ui.theme.StdHorzSpacer
|
||||||
import com.vitorpamplona.amethyst.ui.theme.StdTopPadding
|
|
||||||
import com.vitorpamplona.amethyst.ui.theme.chatAuthorBox
|
import com.vitorpamplona.amethyst.ui.theme.chatAuthorBox
|
||||||
import com.vitorpamplona.amethyst.ui.theme.incognitoIconModifier
|
import com.vitorpamplona.amethyst.ui.theme.incognitoIconModifier
|
||||||
import com.vitorpamplona.amethyst.ui.theme.mediumImportanceLink
|
import com.vitorpamplona.amethyst.ui.theme.mediumImportanceLink
|
||||||
@ -292,9 +291,7 @@ fun ChatBubbleLayout(
|
|||||||
modifier = if (innerQuote) ChatPaddingInnerQuoteModifier else ChatPaddingModifier,
|
modifier = if (innerQuote) ChatPaddingInnerQuoteModifier else ChatPaddingModifier,
|
||||||
horizontalArrangement = alignment,
|
horizontalArrangement = alignment,
|
||||||
) {
|
) {
|
||||||
var popupExpanded = remember { mutableStateOf(false) }
|
val popupExpanded = remember { mutableStateOf(false) }
|
||||||
|
|
||||||
val modif2 = if (innerQuote) Modifier else ChatBubbleMaxSizeModifier
|
|
||||||
|
|
||||||
val showDetails =
|
val showDetails =
|
||||||
remember {
|
remember {
|
||||||
@ -323,7 +320,7 @@ fun ChatBubbleLayout(
|
|||||||
|
|
||||||
Row(
|
Row(
|
||||||
horizontalArrangement = alignment,
|
horizontalArrangement = alignment,
|
||||||
modifier = modif2,
|
modifier = if (innerQuote) Modifier else ChatBubbleMaxSizeModifier,
|
||||||
) {
|
) {
|
||||||
Surface(
|
Surface(
|
||||||
color = backgroundBubbleColor.value,
|
color = backgroundBubbleColor.value,
|
||||||
@ -335,7 +332,7 @@ fun ChatBubbleLayout(
|
|||||||
Row(
|
Row(
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
horizontalArrangement = alignment,
|
horizontalArrangement = alignment,
|
||||||
modifier = StdTopPadding.then(Modifier.clickable(onClick = onAuthorClick)),
|
modifier = HalfHalfTopPadding.clickable(onClick = onAuthorClick),
|
||||||
) {
|
) {
|
||||||
drawAuthorLine()
|
drawAuthorLine()
|
||||||
}
|
}
|
||||||
@ -389,11 +386,14 @@ private fun BubblePreview() {
|
|||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Default.Person,
|
imageVector = Icons.Default.Person,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier.size(Size20dp).clip(CircleShape),
|
modifier =
|
||||||
|
Modifier
|
||||||
|
.size(Size20dp)
|
||||||
|
.clip(CircleShape),
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
name = {
|
name = {
|
||||||
Text("Me", fontWeight = FontWeight.Bold)
|
Text("Someone else", fontWeight = FontWeight.Bold)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
@ -419,7 +419,10 @@ private fun BubblePreview() {
|
|||||||
Icon(
|
Icon(
|
||||||
imageVector = Icons.Default.Person,
|
imageVector = Icons.Default.Person,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier.size(Size20dp).clip(CircleShape),
|
modifier =
|
||||||
|
Modifier
|
||||||
|
.size(Size20dp)
|
||||||
|
.clip(CircleShape),
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
name = {
|
name = {
|
||||||
@ -431,6 +434,39 @@ private fun BubblePreview() {
|
|||||||
) { backgroundBubbleColor ->
|
) { backgroundBubbleColor ->
|
||||||
Text("This is a very long long loong note")
|
Text("This is a very long long loong note")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ChatBubbleLayout(
|
||||||
|
isLoggedInUser = true,
|
||||||
|
innerQuote = false,
|
||||||
|
isComplete = false,
|
||||||
|
hasDetailsToShow = false,
|
||||||
|
drawAuthorInfo = false,
|
||||||
|
parentBackgroundColor = backgroundBubbleColor,
|
||||||
|
onClick = { false },
|
||||||
|
onAuthorClick = {},
|
||||||
|
actionMenu = { onDismiss ->
|
||||||
|
},
|
||||||
|
drawAuthorLine = {
|
||||||
|
UserDisplayNameLayout(
|
||||||
|
picture = {
|
||||||
|
Icon(
|
||||||
|
imageVector = Icons.Default.Person,
|
||||||
|
contentDescription = null,
|
||||||
|
modifier =
|
||||||
|
Modifier
|
||||||
|
.size(Size20dp)
|
||||||
|
.clip(CircleShape),
|
||||||
|
)
|
||||||
|
},
|
||||||
|
name = {
|
||||||
|
Text("Me", fontWeight = FontWeight.Bold)
|
||||||
|
},
|
||||||
|
)
|
||||||
|
},
|
||||||
|
detailRow = { Text("Relays and Actions") },
|
||||||
|
) { backgroundBubbleColor ->
|
||||||
|
Text("Short note")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -654,7 +690,7 @@ private fun RenderRegularTextNote(
|
|||||||
content = eventContent,
|
content = eventContent,
|
||||||
canPreview = canPreview,
|
canPreview = canPreview,
|
||||||
quotesLeft = if (innerQuote) 0 else 1,
|
quotesLeft = if (innerQuote) 0 else 1,
|
||||||
modifier = HalfTopPadding,
|
modifier = Modifier,
|
||||||
tags = tags,
|
tags = tags,
|
||||||
backgroundColor = backgroundBubbleColor,
|
backgroundColor = backgroundBubbleColor,
|
||||||
id = note.idHex,
|
id = note.idHex,
|
||||||
@ -668,7 +704,7 @@ private fun RenderRegularTextNote(
|
|||||||
content = stringRes(id = R.string.could_not_decrypt_the_message),
|
content = stringRes(id = R.string.could_not_decrypt_the_message),
|
||||||
canPreview = true,
|
canPreview = true,
|
||||||
quotesLeft = 0,
|
quotesLeft = 0,
|
||||||
modifier = HalfTopPadding,
|
modifier = Modifier,
|
||||||
tags = EmptyTagList,
|
tags = EmptyTagList,
|
||||||
backgroundColor = backgroundBubbleColor,
|
backgroundColor = backgroundBubbleColor,
|
||||||
id = note.idHex,
|
id = note.idHex,
|
||||||
@ -738,7 +774,7 @@ fun UserDisplayNameLayout(
|
|||||||
picture: @Composable () -> Unit,
|
picture: @Composable () -> Unit,
|
||||||
name: @Composable () -> Unit,
|
name: @Composable () -> Unit,
|
||||||
) {
|
) {
|
||||||
Box(chatAuthorBox, contentAlignment = Alignment.TopEnd) {
|
Box(chatAuthorBox, contentAlignment = Alignment.Center) {
|
||||||
picture()
|
picture()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,6 +107,7 @@ val HalfStartPadding = Modifier.padding(start = 5.dp)
|
|||||||
val StdStartPadding = Modifier.padding(start = 10.dp)
|
val StdStartPadding = Modifier.padding(start = 10.dp)
|
||||||
val StdTopPadding = Modifier.padding(top = 10.dp)
|
val StdTopPadding = Modifier.padding(top = 10.dp)
|
||||||
val HalfTopPadding = Modifier.padding(top = 5.dp)
|
val HalfTopPadding = Modifier.padding(top = 5.dp)
|
||||||
|
val HalfHalfTopPadding = Modifier.padding(top = 3.dp)
|
||||||
|
|
||||||
val HalfPadding = Modifier.padding(5.dp)
|
val HalfPadding = Modifier.padding(5.dp)
|
||||||
val StdPadding = Modifier.padding(10.dp)
|
val StdPadding = Modifier.padding(10.dp)
|
||||||
@ -163,7 +164,7 @@ val DividerThickness = 0.25.dp
|
|||||||
|
|
||||||
val ReactionRowHeight = Modifier.padding(vertical = 7.dp).height(24.dp)
|
val ReactionRowHeight = Modifier.padding(vertical = 7.dp).height(24.dp)
|
||||||
val ReactionRowHeightWithPadding = Modifier.padding(vertical = 7.dp).height(24.dp).padding(horizontal = 10.dp)
|
val ReactionRowHeightWithPadding = Modifier.padding(vertical = 7.dp).height(24.dp).padding(horizontal = 10.dp)
|
||||||
val ReactionRowHeightChat = Modifier.height(25.dp)
|
val ReactionRowHeightChat = Modifier.height(20.dp)
|
||||||
val ReactionRowHeightChatMaxWidth = Modifier.height(25.dp).fillMaxWidth()
|
val ReactionRowHeightChatMaxWidth = Modifier.height(25.dp).fillMaxWidth()
|
||||||
val UserNameRowHeight = Modifier.fillMaxWidth()
|
val UserNameRowHeight = Modifier.fillMaxWidth()
|
||||||
val UserNameMaxRowHeight = Modifier.fillMaxWidth()
|
val UserNameMaxRowHeight = Modifier.fillMaxWidth()
|
||||||
@ -201,7 +202,7 @@ val ZeroPadding = PaddingValues(0.dp)
|
|||||||
val FeedPadding = PaddingValues(top = 10.dp, bottom = 10.dp)
|
val FeedPadding = PaddingValues(top = 10.dp, bottom = 10.dp)
|
||||||
val ButtonPadding = PaddingValues(vertical = 6.dp, horizontal = 16.dp)
|
val ButtonPadding = PaddingValues(vertical = 6.dp, horizontal = 16.dp)
|
||||||
|
|
||||||
val ChatPaddingInnerQuoteModifier = Modifier.padding(top = 10.dp)
|
val ChatPaddingInnerQuoteModifier = Modifier
|
||||||
val ChatPaddingModifier =
|
val ChatPaddingModifier =
|
||||||
Modifier
|
Modifier
|
||||||
.fillMaxWidth(1f)
|
.fillMaxWidth(1f)
|
||||||
@ -255,7 +256,7 @@ val chatAuthorImage = Modifier.size(20.dp).clip(shape = CircleShape)
|
|||||||
val AuthorInfoVideoFeed = Modifier.width(75.dp).padding(end = 15.dp)
|
val AuthorInfoVideoFeed = Modifier.width(75.dp).padding(end = 15.dp)
|
||||||
|
|
||||||
val messageDetailsModifier = Modifier.height(Size25dp)
|
val messageDetailsModifier = Modifier.height(Size25dp)
|
||||||
val messageBubbleLimits = Modifier.padding(start = 10.dp, end = 10.dp, bottom = 5.dp)
|
val messageBubbleLimits = Modifier.padding(start = 7.dp, end = 7.dp, top = 5.dp, bottom = 5.dp)
|
||||||
|
|
||||||
val inlinePlaceholder =
|
val inlinePlaceholder =
|
||||||
Placeholder(
|
Placeholder(
|
||||||
|
Loading…
Reference in New Issue
Block a user