fixup! Sticky avatar
This commit is contained in:
@@ -123,8 +123,7 @@ private const val TIMELINE_TOP_PREFETCH_THRESHOLD = 4
|
|||||||
private const val TIMELINE_BOTTOM_AUTOSCROLL_THRESHOLD = 3
|
private const val TIMELINE_BOTTOM_AUTOSCROLL_THRESHOLD = 3
|
||||||
private const val MAX_INITIAL_UNREAD_SEARCH_LIMIT = 500
|
private const val MAX_INITIAL_UNREAD_SEARCH_LIMIT = 500
|
||||||
private val TIMELINE_AVATAR_SIZE = 32.dp
|
private val TIMELINE_AVATAR_SIZE = 32.dp
|
||||||
private val TIMELINE_AVATAR_START_PADDING = 8.dp
|
private val MESSAGE_FIELD_TOP_PADDING = 8.dp
|
||||||
private val TIMELINE_AVATAR_BOTTOM_PADDING = 8.dp
|
|
||||||
|
|
||||||
private val simpleHtmlTags = setOf(
|
private val simpleHtmlTags = setOf(
|
||||||
"a", "b", "blockquote", "br", "code", "del", "div", "em", "h1", "h2",
|
"a", "b", "blockquote", "br", "code", "del", "div", "em", "h1", "h2",
|
||||||
@@ -320,7 +319,6 @@ fun Room(modifier: Modifier = Modifier, rid: String) {
|
|||||||
timelineItems = timelineItems,
|
timelineItems = timelineItems,
|
||||||
layoutInfo = listState.layoutInfo,
|
layoutInfo = listState.layoutInfo,
|
||||||
avatarSizePx = with(density) { TIMELINE_AVATAR_SIZE.roundToPx() },
|
avatarSizePx = with(density) { TIMELINE_AVATAR_SIZE.roundToPx() },
|
||||||
bottomPaddingPx = with(density) { TIMELINE_AVATAR_BOTTOM_PADDING.roundToPx() },
|
|
||||||
viewportBottomLimitPx = listContainerHeightPx,
|
viewportBottomLimitPx = listContainerHeightPx,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -353,7 +351,7 @@ fun Room(modifier: Modifier = Modifier, rid: String) {
|
|||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.offset {
|
.offset {
|
||||||
IntOffset(
|
IntOffset(
|
||||||
x = with(density) { TIMELINE_AVATAR_START_PADDING.roundToPx() },
|
x = with(density) { MESSAGE_FIELD_TOP_PADDING.roundToPx() },
|
||||||
y = avatarState.yPx,
|
y = avatarState.yPx,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -367,7 +365,7 @@ fun Room(modifier: Modifier = Modifier, rid: String) {
|
|||||||
Row(Modifier.fillMaxWidth()) {
|
Row(Modifier.fillMaxWidth()) {
|
||||||
OutlinedTextField(
|
OutlinedTextField(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.padding(4.dp)
|
.padding(MESSAGE_FIELD_TOP_PADDING)
|
||||||
.weight(1f),
|
.weight(1f),
|
||||||
value = message,
|
value = message,
|
||||||
onValueChange = { message = it },
|
onValueChange = { message = it },
|
||||||
@@ -776,7 +774,6 @@ private fun calculateStickyAvatarState(
|
|||||||
timelineItems: List<TimelineUiItem>,
|
timelineItems: List<TimelineUiItem>,
|
||||||
layoutInfo: androidx.compose.foundation.lazy.LazyListLayoutInfo,
|
layoutInfo: androidx.compose.foundation.lazy.LazyListLayoutInfo,
|
||||||
avatarSizePx: Int,
|
avatarSizePx: Int,
|
||||||
bottomPaddingPx: Int,
|
|
||||||
viewportBottomLimitPx: Int,
|
viewportBottomLimitPx: Int,
|
||||||
): StickyAvatarState? {
|
): StickyAvatarState? {
|
||||||
val viewportBottom = if (viewportBottomLimitPx > 0) {
|
val viewportBottom = if (viewportBottomLimitPx > 0) {
|
||||||
@@ -785,7 +782,7 @@ private fun calculateStickyAvatarState(
|
|||||||
layoutInfo.viewportEndOffset
|
layoutInfo.viewportEndOffset
|
||||||
}
|
}
|
||||||
val viewportTop = layoutInfo.viewportStartOffset
|
val viewportTop = layoutInfo.viewportStartOffset
|
||||||
val pinnedAvatarTop = viewportBottom - avatarSizePx - bottomPaddingPx
|
val pinnedAvatarTop = viewportBottom - avatarSizePx
|
||||||
|
|
||||||
return layoutInfo.visibleItemsInfo
|
return layoutInfo.visibleItemsInfo
|
||||||
.mapNotNull { visibleItem ->
|
.mapNotNull { visibleItem ->
|
||||||
|
|||||||
Reference in New Issue
Block a user