Skip to content

Commit 640a846

Browse files
committed
fix(fc/conversation): remove unnecessary recomps with use of canScrollBackwards
Signed-off-by: Brandon McAnsh <git@bmcreations.dev>
1 parent c4992df commit 640a846

1 file changed

Lines changed: 8 additions & 21 deletions

File tree

flipchatApp/src/main/kotlin/xyz/flipchat/app/features/chat/conversation/ConversationMessages.kt

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,16 @@ import androidx.compose.material.icons.Icons
1313
import androidx.compose.material.icons.outlined.KeyboardArrowDown
1414
import androidx.compose.runtime.Composable
1515
import androidx.compose.runtime.getValue
16+
import androidx.compose.runtime.mutableStateOf
1617
import androidx.compose.runtime.remember
1718
import androidx.compose.runtime.rememberCoroutineScope
19+
import androidx.compose.runtime.setValue
1820
import androidx.compose.ui.Alignment
1921
import androidx.compose.ui.Modifier
2022
import androidx.compose.ui.draw.alpha
2123
import androidx.compose.ui.focus.FocusRequester
2224
import androidx.compose.ui.graphics.ColorFilter
25+
import androidx.compose.ui.graphics.graphicsLayer
2326
import androidx.compose.ui.platform.LocalContext
2427
import androidx.compose.ui.platform.LocalDensity
2528
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
@@ -57,8 +60,6 @@ internal fun ConversationMessages(
5760
val uriHandler = LocalUriHandler.current
5861
val context = LocalContext.current
5962

60-
val density = LocalDensity.current
61-
6263
Box(
6364
modifier = modifier,
6465
) {
@@ -127,16 +128,10 @@ internal fun ConversationMessages(
127128
val currentIndex = lazyListState.firstVisibleItemIndex
128129
val distance = abs(itemIndex - currentIndex)
129130

130-
// Calculate the center offset
131-
val centerOffset = with(density) {
132-
val viewportHeight = lazyListState.layoutInfo.viewportSize.height.toDp()
133-
viewportHeight.roundToPx() / 2
134-
}
135-
136131
if (distance <= 100) {
137-
lazyListState.animateScrollToItem(itemIndex, scrollOffset = -centerOffset)
132+
lazyListState.animateScrollToItem(itemIndex)
138133
} else {
139-
lazyListState.scrollToItem(itemIndex, scrollOffset = -centerOffset)
134+
lazyListState.scrollToItem(itemIndex)
140135
}
141136

142137
}
@@ -146,19 +141,11 @@ internal fun ConversationMessages(
146141
}
147142
)
148143

149-
150-
val canJumpToBottom = remember(lazyListState.canScrollBackward) {
151-
lazyListState.canScrollBackward
152-
}
153-
154-
val alpha by animateFloatAsState(
155-
targetValue = if (canJumpToBottom) 1f else 0f,
156-
label = "show/hide jump-to-bottom"
157-
)
158-
159144
Surface(
160145
modifier = Modifier
161-
.alpha(alpha)
146+
.graphicsLayer {
147+
alpha = if (lazyListState.canScrollBackward) 1f else 0f
148+
}
162149
.padding(
163150
end = CodeTheme.dimens.inset,
164151
bottom = CodeTheme.dimens.inset

0 commit comments

Comments
 (0)