diff --git a/app/src/main/java/li/songe/gkd/ui/component/SettingItem.kt b/app/src/main/java/li/songe/gkd/ui/component/SettingItem.kt index 80686dc2d..8633bf0fc 100644 --- a/app/src/main/java/li/songe/gkd/ui/component/SettingItem.kt +++ b/app/src/main/java/li/songe/gkd/ui/component/SettingItem.kt @@ -3,8 +3,8 @@ package li.songe.gkd.ui.component import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.KeyboardArrowRight @@ -30,7 +30,7 @@ fun SettingItem( ) .fillMaxWidth() .padding(10.dp, 10.dp) - .height(30.dp), + .defaultMinSize(minHeight = 30.dp), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically, ) { diff --git a/app/src/main/java/li/songe/gkd/util/NavExt.kt b/app/src/main/java/li/songe/gkd/util/NavExt.kt index 863ee2735..1930c474c 100644 --- a/app/src/main/java/li/songe/gkd/util/NavExt.kt +++ b/app/src/main/java/li/songe/gkd/util/NavExt.kt @@ -10,15 +10,12 @@ import com.ramcosta.composedestinations.spec.Direction val LocalNavController = compositionLocalOf { error("not found DestinationsNavigator") } -private var lastNavigateTime = -1L +private val navThrottle = useThrottle() fun NavController.navigate( direction: Direction, navOptionsBuilder: NavOptionsBuilder.() -> Unit = {}, ) { - val t = System.currentTimeMillis() - if (t - lastNavigateTime < 1000) { - return + navThrottle { + navigate(direction.route, navOptionsBuilder) } - lastNavigateTime = t - navigate(direction.route, navOptionsBuilder) } \ No newline at end of file diff --git a/app/src/main/java/li/songe/gkd/util/TimeExt.kt b/app/src/main/java/li/songe/gkd/util/TimeExt.kt index 8898ca181..1d1115cbf 100644 --- a/app/src/main/java/li/songe/gkd/util/TimeExt.kt +++ b/app/src/main/java/li/songe/gkd/util/TimeExt.kt @@ -34,4 +34,15 @@ fun Long.format(formatStr: String): String { formatDateMap[formatStr] = df } return df.format(this) +} + +fun useThrottle(interval: Long = 1000L): (fn: () -> Unit) -> Unit { + var lastTriggerTime = 0L + return { fn -> + val t = System.currentTimeMillis() + if (t - lastTriggerTime > interval) { + lastTriggerTime = t + fn() + } + } } \ No newline at end of file