Rework avatar rendering of sender of message.
This commit is contained in:
parent
1ba2252dca
commit
89e3302f12
2 changed files with 33 additions and 12 deletions
|
|
@ -117,7 +117,7 @@ internal fun aTimelineItemEvent(
|
||||||
),
|
),
|
||||||
sentTime = "12:34",
|
sentTime = "12:34",
|
||||||
isMine = isMine,
|
isMine = isMine,
|
||||||
senderDisplayName = "sender",
|
senderDisplayName = "Sender",
|
||||||
groupPosition = groupPosition,
|
groupPosition = groupPosition,
|
||||||
sendState = sendState,
|
sendState = sendState,
|
||||||
inReplyTo = inReplyTo,
|
inReplyTo = inReplyTo,
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
package io.element.android.features.messages.impl.timeline.components
|
package io.element.android.features.messages.impl.timeline.components
|
||||||
|
|
||||||
|
import androidx.compose.foundation.Canvas
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||||
|
|
@ -40,12 +41,14 @@ import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.draw.clip
|
import androidx.compose.ui.draw.clip
|
||||||
import androidx.compose.ui.layout.LastBaseline
|
import androidx.compose.ui.draw.clipToBounds
|
||||||
|
import androidx.compose.ui.geometry.Offset
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
import androidx.compose.ui.text.style.TextAlign
|
import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.text.style.TextOverflow
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import androidx.compose.ui.unit.sp
|
||||||
import androidx.compose.ui.zIndex
|
import androidx.compose.ui.zIndex
|
||||||
import io.element.android.features.messages.impl.timeline.aTimelineItemEvent
|
import io.element.android.features.messages.impl.timeline.aTimelineItemEvent
|
||||||
import io.element.android.features.messages.impl.timeline.components.event.TimelineItemEventContentView
|
import io.element.android.features.messages.impl.timeline.components.event.TimelineItemEventContentView
|
||||||
|
|
@ -115,7 +118,7 @@ fun TimelineItemEventRow(
|
||||||
event.senderAvatar,
|
event.senderAvatar,
|
||||||
Modifier
|
Modifier
|
||||||
.zIndex(1f)
|
.zIndex(1f)
|
||||||
.offset(y = 12.dp)
|
.offset(y = 8.dp)
|
||||||
.clickable(onClick = ::onUserDataClicked)
|
.clickable(onClick = ::onUserDataClicked)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -163,20 +166,38 @@ fun TimelineItemEventRow(
|
||||||
@Composable
|
@Composable
|
||||||
private fun MessageSenderInformation(
|
private fun MessageSenderInformation(
|
||||||
sender: String,
|
sender: String,
|
||||||
senderAvatar: AvatarData?,
|
senderAvatar: AvatarData,
|
||||||
modifier: Modifier = Modifier
|
modifier: Modifier = Modifier
|
||||||
) {
|
) {
|
||||||
Row(modifier = modifier) {
|
val avatarStrokeSize = 3.dp
|
||||||
if (senderAvatar != null) {
|
val avatarStrokeColor = MaterialTheme.colorScheme.background
|
||||||
|
val avatarSize = senderAvatar.size.dp
|
||||||
|
Box(
|
||||||
|
modifier = modifier.offset(y = avatarStrokeSize)
|
||||||
|
) {
|
||||||
|
// Background of Avatar, to erase the corner of the message content
|
||||||
|
Canvas(
|
||||||
|
modifier = Modifier
|
||||||
|
.size(size = avatarSize + avatarStrokeSize)
|
||||||
|
.clipToBounds()
|
||||||
|
) {
|
||||||
|
drawCircle(
|
||||||
|
color = avatarStrokeColor,
|
||||||
|
center = Offset(x = (avatarSize / 2).toPx(), y = (avatarSize / 2).toPx()),
|
||||||
|
radius = (avatarSize / 2 + avatarStrokeSize).toPx()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
// Content
|
||||||
|
Row {
|
||||||
Avatar(senderAvatar)
|
Avatar(senderAvatar)
|
||||||
Spacer(modifier = Modifier.width(4.dp))
|
Spacer(modifier = Modifier.width(4.dp))
|
||||||
|
Text(
|
||||||
|
text = sender,
|
||||||
|
fontSize = 14.sp,
|
||||||
|
color = MaterialTheme.colorScheme.primary,
|
||||||
|
style = MaterialTheme.typography.titleMedium,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
Text(
|
|
||||||
text = sender,
|
|
||||||
style = MaterialTheme.typography.titleMedium,
|
|
||||||
modifier = Modifier
|
|
||||||
.alignBy(LastBaseline)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue