Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save saqib-github-commits/f80cd2d1ca2fb0d543d671a5d647432a to your computer and use it in GitHub Desktop.
Save saqib-github-commits/f80cd2d1ca2fb0d543d671a5d647432a to your computer and use it in GitHub Desktop.
// Extension function
@Composable
fun <viewModel: LifecycleObserver> viewModel.observeLifecycleEvents(lifecycle: Lifecycle) {
DisposableEffect(lifecycle) {
lifecycle.addObserver(this@observeLifecycleEvents)
onDispose {
lifecycle.removeObserver(this@observeLifecycleEvents)
}
}
}
// ViewModel
class NewsViewModelLifeCycleObserver(
private val newsRepository: NewsRepository = NewsRepositoryImpl(),
): ViewModel(), DefaultLifecycleObserver {
override fun onResume(owner: LifecycleOwner) {
viewModelScope.launch {
newsRepository.fetchNews()
}
}
}
// News Scren
@Composable
fun NewsScreenWithViewModelAsLifecycleObserver(
viewModel: NewsViewModelLifeCycleObserver = NewsViewModelLifeCycleObserver()
) {
viewModel.observeLifecycleEvents(LocalLifecycleOwner.current.lifecycle)
// list of news
LazyColumn {
// list of news
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment