From c24e33752e7d973d31bc452960a2a8ae28ecf20d Mon Sep 17 00:00:00 2001 From: skydoves Date: Fri, 25 Jun 2021 00:18:19 +0900 Subject: [PATCH 1/4] Bump sandwich to 1.2.0-SNAPSHOT --- dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.gradle b/dependencies.gradle index ec030ec9f..8f20c20f4 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -51,7 +51,7 @@ ext.versions = [ // network retrofitVersion : '2.9.0', okhttpVersion : '4.9.0', - sandwichVersion : '1.0.9', + sandwichVersion : '1.2.0-SNAPSHOT', // moshi moshiVersion : '1.11.0', From b7f7a4eb77d89ab2a57b16f053483571fafd45b6 Mon Sep 17 00:00:00 2001 From: skydoves Date: Fri, 25 Jun 2021 00:19:19 +0900 Subject: [PATCH 2/4] Remove null-check for the data property on the ApiResponse.Success --- .../java/com/skydoves/pokedex/di/NetworkModule.kt | 2 +- .../com/skydoves/pokedex/repository/MainRepository.kt | 11 ++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/skydoves/pokedex/di/NetworkModule.kt b/app/src/main/java/com/skydoves/pokedex/di/NetworkModule.kt index bd6711425..0fda9320c 100644 --- a/app/src/main/java/com/skydoves/pokedex/di/NetworkModule.kt +++ b/app/src/main/java/com/skydoves/pokedex/di/NetworkModule.kt @@ -48,7 +48,7 @@ object NetworkModule { .client(okHttpClient) .baseUrl("https://pokeapi.co/api/v2/") .addConverterFactory(MoshiConverterFactory.create()) - .addCallAdapterFactory(CoroutinesResponseCallAdapterFactory()) + .addCallAdapterFactory(CoroutinesResponseCallAdapterFactory.create()) .build() } diff --git a/app/src/main/java/com/skydoves/pokedex/repository/MainRepository.kt b/app/src/main/java/com/skydoves/pokedex/repository/MainRepository.kt index e35e7fbee..080122f04 100644 --- a/app/src/main/java/com/skydoves/pokedex/repository/MainRepository.kt +++ b/app/src/main/java/com/skydoves/pokedex/repository/MainRepository.kt @@ -27,7 +27,6 @@ import com.skydoves.sandwich.map import com.skydoves.sandwich.onError import com.skydoves.sandwich.onException import com.skydoves.sandwich.suspendOnSuccess -import com.skydoves.whatif.whatIfNotNull import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flowOn @@ -55,12 +54,10 @@ class MainRepository @Inject constructor( */ val response = pokedexClient.fetchPokemonList(page = page) response.suspendOnSuccess { - data.whatIfNotNull { response -> - pokemons = response.results - pokemons.forEach { pokemon -> pokemon.page = page } - pokemonDao.insertPokemonList(pokemons) - emit(pokemonDao.getAllPokemonList(page)) - } + pokemons = data.results + pokemons.forEach { pokemon -> pokemon.page = page } + pokemonDao.insertPokemonList(pokemons) + emit(pokemonDao.getAllPokemonList(page)) } // handles the case when the API request gets an error response. // e.g., internal server error. From fa045b9e0d2699066dfba2b5aa264bd7d582f04f Mon Sep 17 00:00:00 2001 From: skydoves Date: Fri, 25 Jun 2021 00:27:57 +0900 Subject: [PATCH 3/4] Remove null-check for the data property on the ApiResponse.Success and fix ApiAbstract's call adapter factory --- .../com/skydoves/pokedex/repository/DetailRepository.kt | 7 ++----- .../test/java/com/skydoves/pokedex/network/ApiAbstract.kt | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/skydoves/pokedex/repository/DetailRepository.kt b/app/src/main/java/com/skydoves/pokedex/repository/DetailRepository.kt index 50ea5eca8..b24f08f68 100644 --- a/app/src/main/java/com/skydoves/pokedex/repository/DetailRepository.kt +++ b/app/src/main/java/com/skydoves/pokedex/repository/DetailRepository.kt @@ -27,7 +27,6 @@ import com.skydoves.sandwich.map import com.skydoves.sandwich.onError import com.skydoves.sandwich.onException import com.skydoves.sandwich.suspendOnSuccess -import com.skydoves.whatif.whatIfNotNull import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flowOn @@ -53,10 +52,8 @@ class DetailRepository @Inject constructor( */ val response = pokedexClient.fetchPokemonInfo(name = name) response.suspendOnSuccess { - data.whatIfNotNull { response -> - pokemonInfoDao.insertPokemonInfo(response) - emit(response) - } + pokemonInfoDao.insertPokemonInfo(data) + emit(data) } // handles the case when the API request gets an error response. // e.g., internal server error. diff --git a/app/src/test/java/com/skydoves/pokedex/network/ApiAbstract.kt b/app/src/test/java/com/skydoves/pokedex/network/ApiAbstract.kt index c0141e20c..163729702 100644 --- a/app/src/test/java/com/skydoves/pokedex/network/ApiAbstract.kt +++ b/app/src/test/java/com/skydoves/pokedex/network/ApiAbstract.kt @@ -74,7 +74,7 @@ abstract class ApiAbstract { return Retrofit.Builder() .baseUrl(mockWebServer.url("/")) .addConverterFactory(MoshiConverterFactory.create()) - .addCallAdapterFactory(CoroutinesResponseCallAdapterFactory()) + .addCallAdapterFactory(CoroutinesResponseCallAdapterFactory.create()) .build() .create(clazz) } From c8286e7a98c3537894165089bae248b84aad5a47 Mon Sep 17 00:00:00 2001 From: skydoves Date: Sat, 26 Jun 2021 00:37:17 +0900 Subject: [PATCH 4/4] Bump sandwich to 1.2.0 --- dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.gradle b/dependencies.gradle index 8f20c20f4..1ce959ff3 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -51,7 +51,7 @@ ext.versions = [ // network retrofitVersion : '2.9.0', okhttpVersion : '4.9.0', - sandwichVersion : '1.2.0-SNAPSHOT', + sandwichVersion : '1.2.0', // moshi moshiVersion : '1.11.0',