Skip to content

Commit 67baa14

Browse files
author
Tiago Araujo de Souza
committed
Added onClickExtension
1 parent db7280b commit 67baa14

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.monstarlab.arch.extensions
2+
3+
import android.view.View
4+
5+
class DebounceOnClickListener(
6+
private val interval: Long = 400L,
7+
private val listenerBlock: (View) -> Unit,
8+
) : View.OnClickListener {
9+
private var lastClickTime = 0L
10+
override fun onClick(v: View) {
11+
val time = System.currentTimeMillis()
12+
if (time - lastClickTime >= interval) {
13+
lastClickTime = time
14+
listenerBlock(v)
15+
}
16+
}
17+
}

app/src/main/java/com/monstarlab/arch/extensions/ViewExtensions.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,12 @@ fun <T1, T2> Fragment.zipFlows(flow1: Flow<T1>, flow2: Flow<T2>, collectBlock:
7878
}
7979
}
8080

81-
8281
fun View.clicks(throttleTime: Long = 400): Flow<Unit> = callbackFlow {
8382
this@clicks.setOnClickListener {
8483
offer(Unit)
8584
}
8685
awaitClose { this@clicks.setOnClickListener(null) }
87-
}.throttleFirst(throttleTime)
86+
}.throttleFirst(throttleTime)
87+
88+
fun View.onClick(listenerBlock: (View) -> Unit) =
89+
setOnClickListener(DebounceOnClickListener(listenerBlock = listenerBlock))

0 commit comments

Comments
 (0)