From 30ccaf46f2ba7474e83be19e1bab827e5e42dcfa Mon Sep 17 00:00:00 2001 From: silvzr <117378129+silvzr@users.noreply.github.com> Date: Mon, 11 Nov 2024 13:51:13 +0100 Subject: [PATCH] manager: Reset search filter after moving from SuperUser destination (#2204) By default there's an annoying behaviour for which the manager leaves the search filter after changing destination without even showing the search bar anymore. Fix that and reset the list to the top instead of leaving it at the searched app's height https://github.com/user-attachments/assets/268672af-ced9-4293-81df-4e1c7ef33489 original behaviour https://github.com/user-attachments/assets/b9b318cf-273a-4130-b199-712e99f6ed72 changed behaviour Tested-by: backslashxx [118538522+backslashxx@users.noreply.github.com](mailto:118538522+backslashxx@users.noreply.github.com) --- .../java/me/weishu/kernelsu/ui/screen/SuperUser.kt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/SuperUser.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/SuperUser.kt index 1a37d011..a2510a7f 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/SuperUser.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/SuperUser.kt @@ -4,6 +4,7 @@ import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.ExperimentalMaterialApi @@ -40,13 +41,21 @@ fun SuperUserScreen(navigator: DestinationsNavigator) { val viewModel = viewModel() val scope = rememberCoroutineScope() val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState()) + val listState = rememberLazyListState() - LaunchedEffect(Unit) { + LaunchedEffect(key1 = navigator) { + viewModel.search = "" if (viewModel.appList.isEmpty()) { viewModel.fetchAppList() } } + LaunchedEffect(viewModel.search) { + if (viewModel.search.isEmpty()) { + listState.scrollToItem(0) + } + } + Scaffold( topBar = { SearchAppBar( @@ -104,6 +113,7 @@ fun SuperUserScreen(navigator: DestinationsNavigator) { isRefreshing = viewModel.isRefreshing ) { LazyColumn( + state = listState, modifier = Modifier .fillMaxSize() .nestedScroll(scrollBehavior.nestedScrollConnection)