Skip to content

Commit

Permalink
perf: throttle action
Browse files Browse the repository at this point in the history
  • Loading branch information
lisonge committed Aug 1, 2024
1 parent a60ecdf commit 8adbf71
Show file tree
Hide file tree
Showing 21 changed files with 118 additions and 86 deletions.
3 changes: 2 additions & 1 deletion app/src/main/kotlin/li/songe/gkd/ui/AboutPage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootNavGraph
import li.songe.gkd.BuildConfig
import li.songe.gkd.channel
import li.songe.gkd.ui.style.EmptyHeight
import li.songe.gkd.ui.style.itemPadding
import li.songe.gkd.util.GIT_COMMIT_URL
import li.songe.gkd.util.LocalNavController
Expand Down Expand Up @@ -167,7 +168,7 @@ fun AboutPage() {
color = MaterialTheme.colorScheme.onSurfaceVariant,
)
}
Spacer(modifier = Modifier.height(40.dp))
Spacer(modifier = Modifier.height(EmptyHeight))
}
}
}
6 changes: 4 additions & 2 deletions app/src/main/kotlin/li/songe/gkd/ui/AdvancedPage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,12 @@ import li.songe.gkd.util.appInfoCacheFlow
import li.songe.gkd.util.json
import li.songe.gkd.util.launchAsFn
import li.songe.gkd.util.launchTry
import li.songe.gkd.util.navigate
import com.ramcosta.composedestinations.navigation.navigate
import li.songe.gkd.ui.style.EmptyHeight
import li.songe.gkd.util.openApp
import li.songe.gkd.util.openUri
import li.songe.gkd.util.storeFlow
import li.songe.gkd.util.throttle
import li.songe.gkd.util.toast
import rikka.shizuku.Shizuku

Expand Down Expand Up @@ -368,7 +370,7 @@ fun AdvancedPage() {
)
})

Spacer(modifier = Modifier.height(40.dp))
Spacer(modifier = Modifier.height(EmptyHeight))
}
}

Expand Down
12 changes: 7 additions & 5 deletions app/src/main/kotlin/li/songe/gkd/ui/AppConfigPage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,9 @@ import li.songe.gkd.util.ResolvedGroup
import li.songe.gkd.util.RuleSortOption
import li.songe.gkd.util.appInfoCacheFlow
import li.songe.gkd.util.launchTry
import li.songe.gkd.util.navigate
import com.ramcosta.composedestinations.navigation.navigate
import li.songe.gkd.ui.style.EmptyHeight
import li.songe.gkd.util.throttle

@RootNavGraph
@Destination(style = ProfileTransitions::class)
Expand Down Expand Up @@ -161,7 +163,7 @@ fun AppConfigPage(appId: String) {
},
floatingActionButton = {
FloatingActionButton(
onClick = {
onClick = throttle {
navController.navigate(AppItemPageDestination(LOCAL_SUBS_ID, appId))
},
content = {
Expand All @@ -187,7 +189,7 @@ fun AppConfigPage(appId: String) {
vm = vm,
group = g.group,
checked = checked,
onClick = {
onClick = throttle {
navController.navigate(
GlobalRulePageDestination(
g.subsItem.id,
Expand Down Expand Up @@ -252,7 +254,7 @@ fun AppConfigPage(appId: String) {
}
}
item {
Spacer(modifier = Modifier.height(40.dp))
Spacer(modifier = Modifier.height(EmptyHeight))
if (globalGroups.size + appGroups.size == 0) {
Text(
text = "暂无规则",
Expand All @@ -261,7 +263,7 @@ fun AppConfigPage(appId: String) {
)
} else {
// 避免被 floatingActionButton 遮挡
Spacer(modifier = Modifier.height(40.dp))
Spacer(modifier = Modifier.height(EmptyHeight))
}
}
}
Expand Down
10 changes: 6 additions & 4 deletions app/src/main/kotlin/li/songe/gkd/ui/AppItemPage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,9 @@ import li.songe.gkd.util.json
import li.songe.gkd.util.json5ToJson
import li.songe.gkd.util.launchAsFn
import li.songe.gkd.util.launchTry
import li.songe.gkd.util.navigate
import com.ramcosta.composedestinations.navigation.navigate
import li.songe.gkd.ui.style.EmptyHeight
import li.songe.gkd.util.throttle
import li.songe.gkd.util.toast
import li.songe.gkd.util.updateSubscription

Expand Down Expand Up @@ -327,15 +329,15 @@ fun AppItemPage(
}

item {
Spacer(modifier = Modifier.height(40.dp))
Spacer(modifier = Modifier.height(EmptyHeight))
if (appRaw.groups.isEmpty()) {
Text(
text = "暂无规则",
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center
)
} else if (editable) {
Spacer(modifier = Modifier.height(40.dp))
Spacer(modifier = Modifier.height(EmptyHeight))
}
}
}
Expand All @@ -357,7 +359,7 @@ fun AppItemPage(
},
confirmButton = {
if (showGroupItemVal.allExampleUrls.isNotEmpty()) {
TextButton(onClick = {
TextButton(onClick = throttle {
setShowGroupItem(null)
navController.navigate(
GroupImagePageDestination(
Expand Down
5 changes: 3 additions & 2 deletions app/src/main/kotlin/li/songe/gkd/ui/CategoryPage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ import li.songe.gkd.data.RawSubscription
import li.songe.gkd.db.DbSet
import li.songe.gkd.ui.component.TowLineText
import li.songe.gkd.ui.component.getDialogResult
import li.songe.gkd.ui.style.EmptyHeight
import li.songe.gkd.ui.style.itemPadding
import li.songe.gkd.util.EnableGroupOption
import li.songe.gkd.util.LocalNavController
Expand Down Expand Up @@ -226,15 +227,15 @@ fun CategoryPage(subsItemId: Long) {
}
}
item {
Spacer(modifier = Modifier.height(40.dp))
Spacer(modifier = Modifier.height(EmptyHeight))
if (categories.isEmpty()) {
Text(
text = "暂无类别",
textAlign = TextAlign.Center,
modifier = Modifier.fillMaxWidth()
)
} else if (editable) {
Spacer(modifier = Modifier.height(40.dp))
Spacer(modifier = Modifier.height(EmptyHeight))
}
}
}
Expand Down
12 changes: 7 additions & 5 deletions app/src/main/kotlin/li/songe/gkd/ui/ClickLogPage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,10 @@ import li.songe.gkd.util.LocalNavController
import li.songe.gkd.util.ProfileTransitions
import li.songe.gkd.util.appInfoCacheFlow
import li.songe.gkd.util.launchAsFn
import li.songe.gkd.util.navigate
import com.ramcosta.composedestinations.navigation.navigate
import li.songe.gkd.ui.style.EmptyHeight
import li.songe.gkd.util.subsIdToRawFlow
import li.songe.gkd.util.throttle
import li.songe.gkd.util.toast

@RootNavGraph
Expand Down Expand Up @@ -182,7 +184,7 @@ fun ClickLogPage() {
HorizontalDivider()
}
item {
Spacer(modifier = Modifier.height(40.dp))
Spacer(modifier = Modifier.height(EmptyHeight))
if (clickLogCount == 0) {
Text(
text = "暂无记录",
Expand All @@ -209,8 +211,8 @@ fun ClickLogPage() {
val appInfo = appInfoCache[clickLog.appId]

Text(text = "查看规则组", modifier = Modifier
.clickable {
clickLog.appId ?: return@clickable
.clickable(onClick = throttle {
clickLog.appId ?: return@throttle
if (clickLog.groupType == SubsConfig.AppGroupType) {
navController.navigate(
AppItemPageDestination(
Expand All @@ -225,7 +227,7 @@ fun ClickLogPage() {
)
}
previewClickLog = null
}
})
.fillMaxWidth()
.padding(16.dp))
if (clickLog.groupType == SubsConfig.GlobalGroupType && clickLog.appId != null) {
Expand Down
5 changes: 3 additions & 2 deletions app/src/main/kotlin/li/songe/gkd/ui/GlobalRuleExcludePage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ import li.songe.gkd.db.DbSet
import li.songe.gkd.service.launcherAppId
import li.songe.gkd.ui.component.AppBarTextField
import li.songe.gkd.ui.component.TowLineText
import li.songe.gkd.ui.style.EmptyHeight
import li.songe.gkd.ui.style.appItemPadding
import li.songe.gkd.ui.style.menuPadding
import li.songe.gkd.util.LocalNavController
Expand Down Expand Up @@ -344,14 +345,14 @@ fun GlobalRuleExcludePage(subsItemId: Long, groupKey: Int) {
}
}
item {
Spacer(modifier = Modifier.height(40.dp))
Spacer(modifier = Modifier.height(EmptyHeight))
if (showAppInfos.isEmpty()) {
Column(
modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally,
) {
Text(text = "暂无搜索结果")
Spacer(modifier = Modifier.height(40.dp))
Spacer(modifier = Modifier.height(EmptyHeight))
}
}
}
Expand Down
12 changes: 7 additions & 5 deletions app/src/main/kotlin/li/songe/gkd/ui/GlobalRulePage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,9 @@ import li.songe.gkd.util.encodeToJson5String
import li.songe.gkd.util.json
import li.songe.gkd.util.launchAsFn
import li.songe.gkd.util.launchTry
import li.songe.gkd.util.navigate
import com.ramcosta.composedestinations.navigation.navigate
import li.songe.gkd.ui.style.EmptyHeight
import li.songe.gkd.util.throttle
import li.songe.gkd.util.toast
import li.songe.gkd.util.updateSubscription

Expand Down Expand Up @@ -233,7 +235,7 @@ fun GlobalRulePage(subsItemId: Long, focusGroupKey: Int? = null) {
text = {
Text(text = "编辑禁用")
},
onClick = {
onClick = throttle {
expanded = false
navController.navigate(
GlobalRuleExcludePageDestination(
Expand Down Expand Up @@ -295,15 +297,15 @@ fun GlobalRulePage(subsItemId: Long, focusGroupKey: Int? = null) {
}
}
item {
Spacer(modifier = Modifier.height(40.dp))
Spacer(modifier = Modifier.height(EmptyHeight))
if (globalGroups.isEmpty()) {
Text(
text = "暂无规则",
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center
)
} else if (editable) {
Spacer(modifier = Modifier.height(40.dp))
Spacer(modifier = Modifier.height(EmptyHeight))
}
}
}
Expand Down Expand Up @@ -465,7 +467,7 @@ fun GlobalRulePage(subsItemId: Long, focusGroupKey: Int? = null) {
},
confirmButton = {
if (showGroupItem.allExampleUrls.isNotEmpty()) {
TextButton(onClick = {
TextButton(onClick = throttle {
setShowGroupItem(null)
navController.navigate(
GroupImagePageDestination(
Expand Down
14 changes: 8 additions & 6 deletions app/src/main/kotlin/li/songe/gkd/ui/SlowGroupPage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,10 @@ import li.songe.gkd.ui.style.itemPadding
import li.songe.gkd.util.LocalNavController
import li.songe.gkd.util.ProfileTransitions
import li.songe.gkd.util.appInfoCacheFlow
import li.songe.gkd.util.navigate
import com.ramcosta.composedestinations.navigation.navigate
import li.songe.gkd.ui.style.EmptyHeight
import li.songe.gkd.util.ruleSummaryFlow
import li.songe.gkd.util.throttle

@RootNavGraph
@Destination(style = ProfileTransitions::class)
Expand Down Expand Up @@ -91,14 +93,14 @@ fun SlowGroupPage() {
) { (group, rule) ->
SlowGroupCard(
modifier = Modifier
.clickable {
.clickable(onClick = throttle {
navController.navigate(
GlobalRulePageDestination(
rule.subsItem.id,
group.key
)
)
}
})
.itemPadding(),
title = group.name,
desc = "${rule.rawSubs.name}/全局规则"
Expand All @@ -110,22 +112,22 @@ fun SlowGroupPage() {
) { (group, rule) ->
SlowGroupCard(
modifier = Modifier
.clickable {
.clickable(onClick = throttle {
navController.navigate(
AppItemPageDestination(
rule.subsItem.id,
rule.app.id,
group.key
)
)
}
})
.itemPadding(),
title = group.name,
desc = "${rule.rawSubs.name}/应用规则/${appInfoCache[rule.app.id]?.name ?: rule.app.name ?: rule.app.id}"
)
}
item {
Spacer(modifier = Modifier.height(40.dp))
Spacer(modifier = Modifier.height(EmptyHeight))
if (ruleSummary.slowGroupCount == 0) {
Text(
text = "暂无规则",
Expand Down
10 changes: 6 additions & 4 deletions app/src/main/kotlin/li/songe/gkd/ui/SnapshotPage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,11 @@ import li.songe.gkd.util.LocalNavController
import li.songe.gkd.util.LocalPickContentLauncher
import li.songe.gkd.util.ProfileTransitions
import li.songe.gkd.util.launchAsFn
import li.songe.gkd.util.navigate
import com.ramcosta.composedestinations.navigation.navigate
import li.songe.gkd.ui.style.EmptyHeight
import li.songe.gkd.util.shareFile
import li.songe.gkd.util.snapshotZipDir
import li.songe.gkd.util.throttle
import li.songe.gkd.util.toast

@RootNavGraph
Expand Down Expand Up @@ -156,7 +158,7 @@ fun SnapshotPage() {
HorizontalDivider()
}
item {
Spacer(modifier = Modifier.height(40.dp))
Spacer(modifier = Modifier.height(EmptyHeight))
if (snapshots.isEmpty()) {
Text(
text = "暂无记录",
Expand All @@ -182,15 +184,15 @@ fun SnapshotPage() {
.padding(16.dp)
Text(
text = "查看", modifier = Modifier
.clickable(onClick = scope.launchAsFn {
.clickable(onClick = throttle(fn = scope.launchAsFn {
navController.navigate(
ImagePreviewPageDestination(
filePath = snapshotVal.screenshotFile.absolutePath,
title = snapshotVal.appName,
)
)
selectedSnapshot = null
})
}))
.then(modifier)
)
HorizontalDivider()
Expand Down
Loading

0 comments on commit 8adbf71

Please sign in to comment.