perf: canQueryPkg icon

This commit is contained in:
lisonge 2024-05-22 20:08:10 +08:00
parent 6edc402bd2
commit 3f7971b438
2 changed files with 11 additions and 7 deletions

View File

@ -13,7 +13,6 @@ import kotlinx.coroutines.flow.updateAndGet
import li.songe.gkd.app
import li.songe.gkd.appScope
import li.songe.gkd.shizuku.shizukuIsSafeOK
import li.songe.gkd.util.appInfoCacheFlow
import li.songe.gkd.util.initOrResetAppInfoCache
import li.songe.gkd.util.launchTry
@ -133,10 +132,7 @@ fun updatePermissionState() {
shizukuOkState
).forEach { it.updateAndGet() }
if (canQueryPkgState.stateFlow.value != canQueryPkgState.updateAndGet() ||
// https://github.com/gkd-kit/gkd/issues/543
appInfoCacheFlow.value.count { e -> !e.value.isSystem && !e.value.hidden } < 16
) {
if (canQueryPkgState.stateFlow.value != canQueryPkgState.updateAndGet()) {
appScope.launchTry {
initOrResetAppInfoCache()
}

View File

@ -23,6 +23,7 @@ import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.Sort
import androidx.compose.material.icons.filled.Android
import androidx.compose.material.icons.filled.Apps
import androidx.compose.material.icons.filled.AppsOutage
import androidx.compose.material.icons.filled.Close
import androidx.compose.material.icons.filled.PriorityHigh
import androidx.compose.material.icons.filled.Search
@ -79,6 +80,7 @@ import li.songe.gkd.util.storeFlow
val appListNav = BottomNavItem(
label = "应用", icon = Icons.Default.Apps
)
val appListOutageNav = appListNav.copy(icon = Icons.Default.AppsOutage)
@Composable
fun useAppListPage(): ScaffoldExt {
@ -124,7 +126,14 @@ fun useAppListPage(): ScaffoldExt {
}
})
val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior()
return ScaffoldExt(navItem = appListNav,
val canQueryPkg by canQueryPkgState.stateFlow.collectAsState()
val navItem = if (canQueryPkg) {
appListNav
} else {
appListOutageNav
}
return ScaffoldExt(
navItem = navItem,
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {
DisposableEffect(null) {
@ -169,7 +178,6 @@ fun useAppListPage(): ScaffoldExt {
)
}
} else {
val canQueryPkg by canQueryPkgState.stateFlow.collectAsState()
if (!canQueryPkg) {
IconButton(onClick = vm.viewModelScope.launchAsFn {
checkOrRequestPermission(context, canQueryPkgState)