Skip to content

Commit

Permalink
Update project
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelbel committed Dec 12, 2024
1 parent 0aa948f commit d6c4ce7
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions core/src/main/kotlin/org/michaelbel/core/ktx/LifecycleKtx.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package org.michaelbel.core.ktx

import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.rememberUpdatedState
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner

@Composable
fun OnResume(
onResume: () -> Unit
) {
OnLifecycleEvent(
onEvent = { _, event ->
onResume().takeIf { event == Lifecycle.Event.ON_RESUME }
}
)
}

@Composable
private fun OnLifecycleEvent(
onEvent: (owner: LifecycleOwner, event: Lifecycle.Event) -> Unit
) {
val eventHandler = rememberUpdatedState(onEvent)
val lifecycleOwner = rememberUpdatedState(LocalLifecycleOwner.current)

DisposableEffect(lifecycleOwner.value) {
val lifecycle = lifecycleOwner.value.lifecycle
val observer = LifecycleEventObserver { owner, event ->
eventHandler.value(owner, event)
}
lifecycle.addObserver(observer)
onDispose {
lifecycle.removeObserver(observer)
}
}
}

0 comments on commit d6c4ce7

Please sign in to comment.