fix(deps): update dependency androidx.compose.material3:material3 to v1.5.0-alpha15 (#6306)

* fix(deps): update dependency androidx.compose.material3:material3 to v1.5.0-alpha15

* Fix deprecations

* Add bottom sheet workaround

* Fix new lint issues

* Fix and ignore broken tests

* Update screenshots

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
Co-authored-by: ElementBot <android@element.io>
This commit is contained in:
renovate[bot] 2026-03-24 11:24:07 +01:00 committed by GitHub
parent a6a63736e7
commit 2f99806603
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 62 additions and 42 deletions

View file

@ -12,6 +12,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.produceState
import androidx.compose.runtime.remember
import dev.zacsweers.metro.Inject
import io.element.android.features.logout.api.direct.DirectLogoutEvents
@ -30,17 +31,21 @@ class ChooseSelfVerificationModePresenter(
@Composable
override fun present(): ChooseSelfVerificationModeState {
val hasDevicesToVerifyAgainst by encryptionService.hasDevicesToVerifyAgainst.collectAsState()
val canUseRecoveryKey by encryptionService.recoveryStateStateFlow
.mapState { recoveryState ->
when (recoveryState) {
RecoveryState.WAITING_FOR_SYNC,
RecoveryState.UNKNOWN -> AsyncData.Loading()
RecoveryState.INCOMPLETE -> AsyncData.Success(true)
RecoveryState.ENABLED,
RecoveryState.DISABLED -> AsyncData.Success(false)
val canUseRecoveryKey by produceState<AsyncData<Boolean>>(AsyncData.Uninitialized) {
encryptionService.recoveryStateStateFlow
.mapState { recoveryState ->
when (recoveryState) {
RecoveryState.WAITING_FOR_SYNC,
RecoveryState.UNKNOWN -> AsyncData.Loading()
RecoveryState.INCOMPLETE -> AsyncData.Success(true)
RecoveryState.ENABLED,
RecoveryState.DISABLED -> AsyncData.Success(false)
}
}
}
.collectAsState()
.collect {
value = it
}
}
val buttonsState by remember {
derivedStateOf {
val canUseAnotherDevice = hasDevicesToVerifyAgainst.dataOrNull()

View file

@ -56,7 +56,6 @@ class RoomListViewTest {
eventsRecorder.assertList(
listOf(
RoomListEvent.UpdateVisibleRange(IntRange.EMPTY),
RoomListEvent.UpdateVisibleRange(0..5),
)
)

View file

@ -38,6 +38,7 @@ import io.element.android.tests.testutils.setSafeContent
import io.element.android.wysiwyg.link.Link
import kotlinx.collections.immutable.persistentListOf
import kotlinx.collections.immutable.toImmutableList
import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
import org.junit.rules.TestRule
@ -141,6 +142,10 @@ class TimelineViewTest {
eventsRecorder.assertSingle(TimelineEvent.HideShieldDialog)
}
@Ignore(
"performScrollToIndex in compose tests no longer sets LazyListState.isScrollInProgress to true, so the LoadMore event is not emitted." +
"This needs to be reworked to use a different approach to check the LoadMore event was emitted."
)
@Test
fun `scrolling near to the start of the loaded items triggers a pre-fetch`() {
val eventsRecorder = EventsRecorder<TimelineEvent>()

View file

@ -63,6 +63,10 @@ class ChangeRolesViewTest {
),
)
rule.pressBackKey()
// Advance time to let the event be processed, as the search toggle might have some delay (e.g. for the animation)
rule.mainClock.advanceTimeBy(1)
eventsRecorder.assertSingle(ChangeRolesEvent.ToggleSearchActive)
}