From 3022b35201f691b7601f20c737e4bd043dce7d89 Mon Sep 17 00:00:00 2001 From: skydoves Date: Thu, 3 Jun 2021 00:41:48 +0900 Subject: [PATCH] Refactor previous onSuccess() --- .../com/skydoves/pokedexar/repository/DetailRepository.kt | 7 +++---- .../com/skydoves/pokedexar/repository/MainRepository.kt | 4 ++-- .../com/skydoves/pokedexar/ui/details/DetailViewModel.kt | 2 +- .../java/com/skydoves/pokedexar/ui/main/MainViewModel.kt | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/skydoves/pokedexar/repository/DetailRepository.kt b/app/src/main/java/com/skydoves/pokedexar/repository/DetailRepository.kt index 30cffb8..bae76fa 100644 --- a/app/src/main/java/com/skydoves/pokedexar/repository/DetailRepository.kt +++ b/app/src/main/java/com/skydoves/pokedexar/repository/DetailRepository.kt @@ -30,6 +30,7 @@ import com.skydoves.whatif.whatIfNotNull import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.onCompletion import javax.inject.Inject class DetailRepository @Inject constructor( @@ -40,7 +41,7 @@ class DetailRepository @Inject constructor( @WorkerThread fun fetchPokemonInfo( name: String, - onSuccess: () -> Unit, + onComplete: () -> Unit, onError: (String?) -> Unit ) = flow { val pokemonInfo = pokemonInfoDao.getPokemonInfo(name) @@ -54,7 +55,6 @@ class DetailRepository @Inject constructor( data.whatIfNotNull { response -> pokemonInfoDao.insertPokemonInfo(response) emit(response) - onSuccess() } } // handle the case when the API request gets an error response. @@ -68,7 +68,6 @@ class DetailRepository @Inject constructor( .onException { onError(message) } } else { emit(pokemonInfo) - onSuccess() } - }.flowOn(Dispatchers.IO) + }.onCompletion { onComplete() }.flowOn(Dispatchers.IO) } diff --git a/app/src/main/java/com/skydoves/pokedexar/repository/MainRepository.kt b/app/src/main/java/com/skydoves/pokedexar/repository/MainRepository.kt index 0e939c9..5f6de2d 100644 --- a/app/src/main/java/com/skydoves/pokedexar/repository/MainRepository.kt +++ b/app/src/main/java/com/skydoves/pokedexar/repository/MainRepository.kt @@ -30,10 +30,10 @@ class MainRepository @Inject constructor( @WorkerThread fun getPokemonList( - onSuccess: () -> Unit, + onStart: () -> Unit, onError: (String?) -> Unit ) = pokemonDao.getPokemonList() - .onStart { onSuccess() } + .onStart { onStart() } .catch { onError(it.localizedMessage) } .flowOn(Dispatchers.IO) } diff --git a/app/src/main/java/com/skydoves/pokedexar/ui/details/DetailViewModel.kt b/app/src/main/java/com/skydoves/pokedexar/ui/details/DetailViewModel.kt index aeac744..d6ae69d 100644 --- a/app/src/main/java/com/skydoves/pokedexar/ui/details/DetailViewModel.kt +++ b/app/src/main/java/com/skydoves/pokedexar/ui/details/DetailViewModel.kt @@ -36,7 +36,7 @@ class DetailViewModel @AssistedInject constructor( private val pokemonInfoFlow = detailRepository.fetchPokemonInfo( name = pokemonName, - onSuccess = { isLoading = false }, + onComplete = { isLoading = false }, onError = { errorMessage = it } ) diff --git a/app/src/main/java/com/skydoves/pokedexar/ui/main/MainViewModel.kt b/app/src/main/java/com/skydoves/pokedexar/ui/main/MainViewModel.kt index a58eebc..d40c0c8 100644 --- a/app/src/main/java/com/skydoves/pokedexar/ui/main/MainViewModel.kt +++ b/app/src/main/java/com/skydoves/pokedexar/ui/main/MainViewModel.kt @@ -33,7 +33,7 @@ class MainViewModel @Inject constructor( ) : LiveCoroutinesViewModel() { private val pokemonListFlow = mainRepository.getPokemonList( - onSuccess = { isLoading = false }, + onStart = { isLoading = false }, onError = { errorMessage = it } )