Space filters fix previews
This commit is contained in:
parent
0466663d64
commit
e64f0af4e4
2 changed files with 19 additions and 23 deletions
|
|
@ -19,7 +19,7 @@ import io.element.android.features.home.impl.model.anInviteSender
|
||||||
import io.element.android.features.home.impl.search.RoomListSearchState
|
import io.element.android.features.home.impl.search.RoomListSearchState
|
||||||
import io.element.android.features.home.impl.search.aRoomListSearchState
|
import io.element.android.features.home.impl.search.aRoomListSearchState
|
||||||
import io.element.android.features.home.impl.spacefilters.SpaceFiltersState
|
import io.element.android.features.home.impl.spacefilters.SpaceFiltersState
|
||||||
import io.element.android.features.home.impl.spacefilters.aDisabledSpaceFiltersState
|
import io.element.android.features.home.impl.spacefilters.anUnselectedSpaceFiltersState
|
||||||
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteState
|
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteState
|
||||||
import io.element.android.features.invite.api.acceptdecline.anAcceptDeclineInviteState
|
import io.element.android.features.invite.api.acceptdecline.anAcceptDeclineInviteState
|
||||||
import io.element.android.features.leaveroom.api.LeaveRoomEvent
|
import io.element.android.features.leaveroom.api.LeaveRoomEvent
|
||||||
|
|
@ -54,7 +54,7 @@ internal fun aRoomListState(
|
||||||
leaveRoomState: LeaveRoomState = aLeaveRoomState(),
|
leaveRoomState: LeaveRoomState = aLeaveRoomState(),
|
||||||
searchState: RoomListSearchState = aRoomListSearchState(),
|
searchState: RoomListSearchState = aRoomListSearchState(),
|
||||||
filtersState: RoomListFiltersState = aRoomListFiltersState(),
|
filtersState: RoomListFiltersState = aRoomListFiltersState(),
|
||||||
spaceFiltersState: SpaceFiltersState = aDisabledSpaceFiltersState(),
|
spaceFiltersState: SpaceFiltersState = anUnselectedSpaceFiltersState(),
|
||||||
contentState: RoomListContentState = aRoomsContentState(),
|
contentState: RoomListContentState = aRoomsContentState(),
|
||||||
acceptDeclineInviteState: AcceptDeclineInviteState = anAcceptDeclineInviteState(),
|
acceptDeclineInviteState: AcceptDeclineInviteState = anAcceptDeclineInviteState(),
|
||||||
hideInvitesAvatars: Boolean = false,
|
hideInvitesAvatars: Boolean = false,
|
||||||
|
|
|
||||||
|
|
@ -23,13 +23,12 @@ import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.foundation.lazy.items
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.foundation.text.input.TextFieldState
|
import androidx.compose.foundation.text.input.TextFieldState
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
|
import androidx.compose.material3.SheetValue
|
||||||
import androidx.compose.material3.rememberModalBottomSheetState
|
import androidx.compose.material3.rememberModalBottomSheetState
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.rememberUpdatedState
|
||||||
import androidx.compose.runtime.remember
|
|
||||||
import androidx.compose.runtime.setValue
|
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
|
|
@ -56,33 +55,30 @@ fun SpaceFiltersView(
|
||||||
state: SpaceFiltersState,
|
state: SpaceFiltersState,
|
||||||
modifier: Modifier = Modifier
|
modifier: Modifier = Modifier
|
||||||
) {
|
) {
|
||||||
val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
|
val isSelecting by rememberUpdatedState(state is SpaceFiltersState.Selecting)
|
||||||
val isSelecting = state is SpaceFiltersState.Selecting
|
val sheetState = rememberModalBottomSheetState(
|
||||||
var showSheet by remember { mutableStateOf(false) }
|
skipPartiallyExpanded = true,
|
||||||
|
confirmValueChange = { sheetValueTarget ->
|
||||||
|
// This ensures the hide animation is not cancelled
|
||||||
|
when (sheetValueTarget) {
|
||||||
|
SheetValue.Expanded -> isSelecting
|
||||||
|
else -> true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
LaunchedEffect(isSelecting) {
|
LaunchedEffect(isSelecting) {
|
||||||
if (isSelecting) {
|
if (!isSelecting) {
|
||||||
showSheet = true
|
|
||||||
} else {
|
|
||||||
sheetState.hide()
|
sheetState.hide()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (sheetState.isVisible || isSelecting) {
|
||||||
// This is necessary because the animation can get cancelled
|
|
||||||
// then the sheetState is hidden but the showSheet is still true.
|
|
||||||
LaunchedEffect(sheetState.isVisible, sheetState.isAnimationRunning) {
|
|
||||||
if (!sheetState.isVisible && !sheetState.isAnimationRunning) {
|
|
||||||
showSheet = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (showSheet) {
|
|
||||||
ModalBottomSheet(
|
ModalBottomSheet(
|
||||||
modifier = modifier
|
modifier = modifier
|
||||||
.systemBarsPadding()
|
.systemBarsPadding()
|
||||||
.navigationBarsPadding(),
|
.navigationBarsPadding(),
|
||||||
sheetState = sheetState,
|
sheetState = sheetState,
|
||||||
onDismissRequest = {
|
onDismissRequest = {
|
||||||
if (isSelecting) {
|
if (state is SpaceFiltersState.Selecting) {
|
||||||
state.eventSink(SpaceFiltersEvent.Selecting.Cancel)
|
state.eventSink(SpaceFiltersEvent.Selecting.Cancel)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -92,7 +88,7 @@ fun SpaceFiltersView(
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.fillMaxHeight(0.9f)
|
.fillMaxHeight(0.9f)
|
||||||
) {
|
) {
|
||||||
if (isSelecting) {
|
if (state is SpaceFiltersState.Selecting) {
|
||||||
SpaceFiltersBottomSheetContent(
|
SpaceFiltersBottomSheetContent(
|
||||||
filters = state.visibleFilters,
|
filters = state.visibleFilters,
|
||||||
searchQuery = state.searchQuery,
|
searchQuery = state.searchQuery,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue