Skip to content

Instantly share code, notes, and snippets.

View HarryTylenol's full-sized avatar
🍊

Harry Park HarryTylenol

🍊
  • Goyang, Gyeong-Gi
View GitHub Profile
fun getFestival( ... ): ResponseWrapper<FestivalData> {
val request: suspend () -> Unit = {
val festival = festivalAPI.get( ... )
("Festival API" to "Fetched from API").debug()
festivalDAO.insert(festival)
("Festival DAO" to "Inserted to DB").debug()
}
val refreshTrigger = MutableLiveData<Unit>()
val refreshState = refresh.switchMap {
("Festival Refresh" to "Refresh Request").debug()
private val festivalRequest = MutableLiveData<An>()
private val festivalResponse = festivalRequest.map { getFestivalUseCase.execute(it) }
val festival = festivalResponse.switchMap { it.data }
val festivalState = festivalResponse.switchMap { it.state }
val festivalRefreshState = festivalResponse.switchMap { it.refreshState }
binding.btnRequest.setOnClickListener {
viewModel.requestFestival( ... )
}
binding.btnRetry.setOnClickListener {
viewModel.refreshFestival()
}
viewModel.festival.observer {
// 페스티벌 데이터가 나옵니다.
}
val observer = { state: NetworkState? ->
fun <T> intentExtra(defaultValue: T? = null) = object : ReadOnlyProperty<Activity, T?> {
override fun getValue(thisRef: Activity, property: KProperty<*>): T? {
return when (defaultValue) {
is String -> thisRef.intent.getStringExtra(property.name) as T
is Int -> thisRef.intent.getIntExtra(property.name, defaultValue) as T
is Long -> thisRef.intent.getLongExtra(property.name, defaultValue) as T
// And More...
else -> null
}
}
@HarryTylenol
HarryTylenol / ConstraintLayout.kt
Created October 16, 2021 02:10
Compose ConstraintLayout Extensions
@Composable
fun ConstraintLayoutScope.t2t(
ref: ConstrainedLayoutReference? = null,
margin: Dp = 0.dp
): Constraint = {
val reference = ref ?: parent
top.linkTo(reference.top, margin)
}
@HarryTylenol
HarryTylenol / LottoTheme.kt
Last active November 2, 2021 11:35
Devfest 2021 Jetpack Compose Lottery App
@Composable
fun LottoTheme(
content : @Composable () -> Unit
) {
MaterialTheme(
content = content
)
}