File tree Expand file tree Collapse file tree
core/designsystem/src/main/java/com/threegap/bitnagil/designsystem Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -18,6 +18,7 @@ import com.threegap.bitnagil.designsystem.BitnagilTheme
1818import com.threegap.bitnagil.designsystem.R
1919import com.threegap.bitnagil.designsystem.component.atom.BitnagilIcon
2020import com.threegap.bitnagil.designsystem.component.atom.BitnagilIconButton
21+ import com.threegap.bitnagil.designsystem.modifier.throttled
2122
2223@Composable
2324fun BitnagilTopBar (
@@ -35,7 +36,7 @@ fun BitnagilTopBar(
3536 if (showBackButton) {
3637 BitnagilIconButton (
3738 id = R .drawable.ic_chevron_left_lg,
38- onClick = onBackClick,
39+ onClick = throttled { onBackClick() } ,
3940 tint = BitnagilTheme .colors.coolGray10,
4041 modifier = Modifier
4142 .align(Alignment .CenterStart ),
Original file line number Diff line number Diff line change 1+ package com.threegap.bitnagil.designsystem.modifier
2+
3+ import android.os.SystemClock
4+ import androidx.compose.runtime.Composable
5+ import androidx.compose.runtime.remember
6+
7+ class ClickThrottler (private val throttleTimeMs : Long = 500L ) {
8+ private var lastClickTime: Long = 0L
9+
10+ fun processEvent (event : () -> Unit ) {
11+ val now = SystemClock .elapsedRealtime()
12+ if (now - lastClickTime >= throttleTimeMs) {
13+ lastClickTime = now
14+ event()
15+ }
16+ }
17+ }
18+
19+ @Composable
20+ fun throttled (
21+ throttleTimeMs : Long = 500L,
22+ onClick : () -> Unit
23+ ): () -> Unit {
24+ val throttler = remember { ClickThrottler (throttleTimeMs) }
25+
26+ return remember(onClick) {
27+ { throttler.processEvent(onClick) }
28+ }
29+ }
Original file line number Diff line number Diff line change 11package com.threegap.bitnagil.designsystem.modifier
22
33import androidx.compose.foundation.clickable
4- import androidx.compose.foundation.interaction.MutableInteractionSource
5- import androidx.compose.runtime.remember
64import androidx.compose.ui.Modifier
7- import androidx.compose.ui.composed
85import androidx.compose.ui.semantics.Role
96
107fun Modifier.clickableWithoutRipple (
118 enabled : Boolean = true,
129 onClickLabel : String? = null,
1310 role : Role ? = null,
1411 onClick : () -> Unit ,
15- ) = composed {
16- clickable(
17- indication = null ,
18- interactionSource = remember { MutableInteractionSource () },
19- enabled = enabled,
20- onClickLabel = onClickLabel,
21- role = role,
22- onClick = onClick,
23- )
24- }
12+ ) = this .clickable(
13+ interactionSource = null ,
14+ indication = null ,
15+ enabled = enabled,
16+ onClickLabel = onClickLabel,
17+ role = role,
18+ onClick = onClick,
19+ )
You can’t perform that action at this time.
0 commit comments