This commit is contained in:
Jorge Martín
2026-05-15 14:57:39 +02:00
committed by Benoit Marty
parent ab4b11b9f0
commit bf1462f9b1
18 changed files with 59 additions and 21 deletions
@@ -17,6 +17,7 @@ import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.consumeWindowInsets
@@ -412,7 +413,7 @@ fun MessagesView(
}
@Composable
internal fun MessagesMenuActions(
internal fun RowScope.MessagesMenuActions(
displayThreads: Boolean,
roomCallState: RoomCallState,
onJoinCallClick: (isAudioCall: Boolean) -> Unit,
@@ -28,6 +28,7 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
@@ -157,6 +158,7 @@ private fun ScrollHelper(
listState: LazyListState,
onPaginate: () -> Unit,
) {
val updatedOnPaginate by rememberUpdatedState(onPaginate)
val lastVisibleItemIndex by remember {
derivedStateOf { listState.firstVisibleItemIndex + listState.layoutInfo.visibleItemsInfo.size - 1 }
}
@@ -168,7 +170,7 @@ private fun ScrollHelper(
}
LaunchedEffect(needsPagination, lastVisibleItemIndex) {
if (needsPagination) {
onPaginate()
updatedOnPaginate()
delay(400L)
}
}
@@ -9,7 +9,9 @@
package io.element.android.features.messages.impl.timeline.model.event
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.produceState
import androidx.compose.runtime.rememberUpdatedState
import io.element.android.features.location.api.Location
import io.element.android.libraries.designsystem.components.PinVariant
import io.element.android.libraries.designsystem.components.avatar.AvatarData
@@ -103,8 +105,9 @@ private fun rememberIsLiveLocationActive(
mode: TimelineItemLocationContent.Mode.Live,
currentTimeMillis: () -> Long,
): Boolean {
val updatedCurrentTimeMillis by rememberUpdatedState(currentTimeMillis)
fun TimelineItemLocationContent.Mode.Live.isActive(): Boolean {
return isActive && endTimestamp > currentTimeMillis()
return isActive && endTimestamp > updatedCurrentTimeMillis()
}
return produceState(
initialValue = mode.isActive(),
@@ -112,7 +115,7 @@ private fun rememberIsLiveLocationActive(
key2 = mode.isActive,
) {
if (mode.isActive) {
val remainingMillis = mode.endTimestamp - currentTimeMillis()
val remainingMillis = mode.endTimestamp - updatedCurrentTimeMillis()
delay(remainingMillis)
}
value = false