Fix FAB not collapsing with no selected items

This commit is contained in:
FooIbar authored and Vladimir Dostoyevskiy committed 2023-11-30 09:28:26 +08:00
1 parent 082e05584a
commit 086db7572d
2 files changed
+13 -24

No files matched your search

@@ -44,13 +44,13 @@ import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.material3.rememberDismissState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.SideEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateListOf
import androidx.compose.runtime.mutableStateMapOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
@@ -114,12 +114,9 @@ fun DownloadsScreen(navigator: DestinationsNavigator) {
var filterType by rememberSaveable { mutableStateOf(-1) }
var searchBarOffsetY by remember { mutableStateOf(0) }
val searchFieldState = rememberTextFieldState()
var selectMode by remember { mutableStateOf(false) }
LockDrawer(selectMode)
val checkedInfoMap = remember { mutableStateMapOf<Long, DownloadInfo>() }
SideEffect {
if (checkedInfoMap.isEmpty()) selectMode = false
}
val selectMode by rememberUpdatedState(checkedInfoMap.isNotEmpty())
LockDrawer(selectMode)
val context = LocalContext.current
val activity = remember(context) { context.findActivity<MainActivity>() }
@@ -313,7 +310,7 @@ fun DownloadsScreen(navigator: DestinationsNavigator) {
searchFieldHint = hint,
showSearchFab = selectMode,
onApplySearch = { keyword = it.takeUnless { it.isBlank() } },
onSearchExpanded = { selectMode = false },
onSearchExpanded = { checkedInfoMap.clear() },
onSearchHidden = {},
searchBarOffsetY = { searchBarOffsetY },
trailingIcon = {
@@ -446,7 +443,6 @@ fun DownloadsScreen(navigator: DestinationsNavigator) {
},
onLongClick = {
checkedInfoMap[info.gid] = info
selectMode = true
},
onStart = {
val intent = Intent(activity, DownloadService::class.java)
@@ -492,10 +488,7 @@ fun DownloadsScreen(navigator: DestinationsNavigator) {
FabLayout(
hidden = !selectMode,
expanded = selectMode,
onExpandChanged = {
checkedInfoMap.clear()
selectMode = false
},
onExpandChanged = { checkedInfoMap.clear() },
autoCancel = false,
showAddButton = false,
) {
@@ -28,7 +28,6 @@ import androidx.compose.material3.TopAppBar
import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.SideEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.currentRecomposeScope
import androidx.compose.runtime.getValue
@@ -36,6 +35,7 @@ import androidx.compose.runtime.mutableStateMapOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
@@ -214,20 +214,19 @@ fun FavouritesScreen(navigator: DestinationsNavigator) {
var expanded by remember { mutableStateOf(false) }
var hidden by remember { mutableStateOf(false) }
var selectMode by remember { mutableStateOf(false) }
LockDrawer(selectMode)
val checkedInfoMap = remember { mutableStateMapOf<Long, BaseGalleryInfo>() }
SideEffect {
if (checkedInfoMap.isEmpty()) selectMode = false
if (selectMode) expanded = true
}
val selectMode by rememberUpdatedState(checkedInfoMap.isNotEmpty())
LockDrawer(selectMode)
SearchBarScreen(
title = title,
searchFieldState = searchFieldState,
searchFieldHint = searchBarHint,
onApplySearch = { refresh(FavListUrlBuilder(urlBuilder.favCat, it)) },
onSearchExpanded = { hidden = true },
onSearchExpanded = {
checkedInfoMap.clear()
hidden = true
},
onSearchHidden = { hidden = false },
refreshState = refreshState,
searchBarOffsetY = { searchBarOffsetY },
@@ -271,7 +270,6 @@ fun FavouritesScreen(navigator: DestinationsNavigator) {
}
},
onLongClick = {
selectMode = true
checkedInfoMap[info.gid] = info
},
info = info,
@@ -297,7 +295,6 @@ fun FavouritesScreen(navigator: DestinationsNavigator) {
}
},
onLongClick = {
selectMode = true
checkedInfoMap[info.gid] = info
},
info = info,
@@ -314,11 +311,10 @@ fun FavouritesScreen(navigator: DestinationsNavigator) {
val select = selectMode
FabLayout(
hidden = hidden,
expanded = expanded,
expanded = expanded || selectMode,
onExpandChanged = {
expanded = it
checkedInfoMap.clear()
selectMode = false
},
autoCancel = !selectMode,
delayOnShow = true,