2019-11-27 06:24:00 -08:00
|
|
|
package cash.z.ecc.android.ext
|
|
|
|
|
|
|
|
import android.view.View
|
|
|
|
import android.view.View.*
|
|
|
|
import cash.z.ecc.android.ui.MainActivity
|
2019-12-18 08:09:13 -08:00
|
|
|
import kotlinx.coroutines.channels.awaitClose
|
|
|
|
import kotlinx.coroutines.flow.channelFlow
|
2019-11-27 06:24:00 -08:00
|
|
|
|
|
|
|
fun View.goneIf(isGone: Boolean) {
|
|
|
|
visibility = if (isGone) GONE else VISIBLE
|
|
|
|
}
|
|
|
|
|
|
|
|
fun View.invisibleIf(isInvisible: Boolean) {
|
|
|
|
visibility = if (isInvisible) INVISIBLE else VISIBLE
|
|
|
|
}
|
|
|
|
|
|
|
|
fun View.onClickNavTo(navResId: Int) {
|
|
|
|
setOnClickListener {
|
|
|
|
(context as? MainActivity)?.navController?.navigate(navResId)
|
|
|
|
?: throw IllegalStateException("Cannot navigate from this activity. " +
|
|
|
|
"Expected MainActivity but found ${context.javaClass.simpleName}")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fun View.onClickNavUp() {
|
|
|
|
setOnClickListener {
|
|
|
|
(context as? MainActivity)?.navController?.navigateUp()
|
|
|
|
?: throw IllegalStateException(
|
|
|
|
"Cannot navigate from this activity. " +
|
|
|
|
"Expected MainActivity but found ${context.javaClass.simpleName}"
|
|
|
|
)
|
|
|
|
}
|
2019-12-18 08:09:13 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
fun View.clicks() = channelFlow<View> {
|
|
|
|
setOnClickListener {
|
|
|
|
offer(this@clicks)
|
|
|
|
}
|
|
|
|
awaitClose {
|
|
|
|
setOnClickListener(null)
|
|
|
|
}
|
2019-11-27 06:24:00 -08:00
|
|
|
}
|