From 98566749c452dca7910f7bae28d2ca798cdf489c Mon Sep 17 00:00:00 2001 From: Bhavin Desai Date: Tue, 16 Jul 2019 18:18:54 +0530 Subject: [PATCH 1/3] Removed retrofit2-kotlin-coroutines-adapter as it is no longer needed with retrofit-2.6.0 --- app/build.gradle | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 104664a..5bb2423 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -51,10 +51,9 @@ dependencies { implementation 'com.google.android.material:material:1.1.0-alpha07' // Retrofit and OkHttp - implementation 'com.squareup.retrofit2:retrofit:2.5.0' - implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0' - implementation 'com.squareup.retrofit2:converter-gson:2.5.0' - implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2' + implementation 'com.squareup.retrofit2:retrofit:2.6.0' + implementation 'com.squareup.retrofit2:adapter-rxjava2:2.6.0' + implementation 'com.squareup.retrofit2:converter-gson:2.6.0' implementation 'com.squareup.okhttp3:okhttp:3.13.1' implementation 'com.squareup.okhttp3:logging-interceptor:3.13.1' implementation 'com.jakewharton.timber:timber:4.7.1' From ac8cb435022da173b0e4f563b6f97f4a54d0d2a1 Mon Sep 17 00:00:00 2001 From: Bhavin Desai Date: Tue, 16 Jul 2019 18:19:20 +0530 Subject: [PATCH 2/3] Removed CoroutineCallAdapterFactory --- .../chintansoni/android/repositorypattern/di/NetworkModule.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/src/main/java/com/chintansoni/android/repositorypattern/di/NetworkModule.kt b/app/src/main/java/com/chintansoni/android/repositorypattern/di/NetworkModule.kt index 36beb5f..7dd46c7 100644 --- a/app/src/main/java/com/chintansoni/android/repositorypattern/di/NetworkModule.kt +++ b/app/src/main/java/com/chintansoni/android/repositorypattern/di/NetworkModule.kt @@ -2,7 +2,6 @@ package com.chintansoni.android.repositorypattern.di import com.chintansoni.android.repositorypattern.BuildConfig import com.chintansoni.android.repositorypattern.model.remote.ApiService -import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory import okhttp3.Interceptor import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor @@ -36,7 +35,6 @@ val networkModule = module { Retrofit.Builder() .baseUrl(BuildConfig.BASE_URL) .client(get()) - .addCallAdapterFactory(CoroutineCallAdapterFactory()) .addConverterFactory(GsonConverterFactory.create()) .build() } From a9e4e90ab12f5a82b54202ad8cdc73e2654825d7 Mon Sep 17 00:00:00 2001 From: Bhavin Desai Date: Tue, 16 Jul 2019 18:24:43 +0530 Subject: [PATCH 3/3] Get rid of Deferred --- .../repositorypattern/model/NetworkBoundResource.kt | 7 +++---- .../android/repositorypattern/model/UserRepository.kt | 3 +-- .../android/repositorypattern/model/remote/ApiService.kt | 7 +++---- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/chintansoni/android/repositorypattern/model/NetworkBoundResource.kt b/app/src/main/java/com/chintansoni/android/repositorypattern/model/NetworkBoundResource.kt index 3f052c0..b1246d7 100644 --- a/app/src/main/java/com/chintansoni/android/repositorypattern/model/NetworkBoundResource.kt +++ b/app/src/main/java/com/chintansoni/android/repositorypattern/model/NetworkBoundResource.kt @@ -1,13 +1,12 @@ package com.chintansoni.android.repositorypattern.model import androidx.lifecycle.MutableLiveData -import kotlinx.coroutines.Deferred abstract class NetworkBoundResource { private val mutableLiveData = MutableLiveData>() - abstract suspend fun getRemoteAsync(): Deferred + abstract suspend fun getRemoteAsync(): RemoteType abstract suspend fun getLocal(): LocalType @@ -22,7 +21,7 @@ abstract class NetworkBoundResource { suspend fun fetch(isForced: Boolean) { try { mutableLiveData.postValue(Resource.Success(getLocal())) - val remoteData = getRemoteAsync().await() + val remoteData = getRemoteAsync() saveCallResult(mapper(remoteData), isForced) mutableLiveData.postValue(Resource.Success(getLocal())) } catch (exception: Exception) { @@ -33,7 +32,7 @@ abstract class NetworkBoundResource { suspend fun getRemoteData(isForced: Boolean) { try { mutableLiveData.postValue(Resource.Loading()) - val remoteData = getRemoteAsync().await() + val remoteData = getRemoteAsync() saveCallResult(mapper(remoteData), isForced) mutableLiveData.postValue(Resource.Success(getLocal())) } catch (exception: Exception) { diff --git a/app/src/main/java/com/chintansoni/android/repositorypattern/model/UserRepository.kt b/app/src/main/java/com/chintansoni/android/repositorypattern/model/UserRepository.kt index cdb82c3..c7a930e 100644 --- a/app/src/main/java/com/chintansoni/android/repositorypattern/model/UserRepository.kt +++ b/app/src/main/java/com/chintansoni/android/repositorypattern/model/UserRepository.kt @@ -4,7 +4,6 @@ import com.chintansoni.android.repositorypattern.model.local.dao.UserDao import com.chintansoni.android.repositorypattern.model.local.entity.User import com.chintansoni.android.repositorypattern.model.remote.ApiService import com.chintansoni.android.repositorypattern.model.remote.response.RandomUserResponse -import kotlinx.coroutines.Deferred class UserRepository constructor(private var apiService: ApiService, private var userDao: UserDao) { @@ -12,7 +11,7 @@ class UserRepository constructor(private var apiService: ApiService, private var private var pageNumber: Int = 0 private var networkBoundSource: NetworkBoundResource, RandomUserResponse> = object : NetworkBoundResource, RandomUserResponse>() { - override suspend fun getRemoteAsync(): Deferred { + override suspend fun getRemoteAsync(): RandomUserResponse { return apiService.getUsers(pageNumber) } diff --git a/app/src/main/java/com/chintansoni/android/repositorypattern/model/remote/ApiService.kt b/app/src/main/java/com/chintansoni/android/repositorypattern/model/remote/ApiService.kt index ccdd78a..ea7f6c3 100644 --- a/app/src/main/java/com/chintansoni/android/repositorypattern/model/remote/ApiService.kt +++ b/app/src/main/java/com/chintansoni/android/repositorypattern/model/remote/ApiService.kt @@ -1,14 +1,13 @@ package com.chintansoni.android.repositorypattern.model.remote import com.chintansoni.android.repositorypattern.model.remote.response.RandomUserResponse -import kotlinx.coroutines.Deferred import retrofit2.http.GET import retrofit2.http.Query interface ApiService { @GET("api") - fun getUsers(@Query("page") page: Int, - @Query("results") result: Int = 10, - @Query("lang") lang: String = "en"): Deferred + suspend fun getUsers(@Query("page") page: Int, + @Query("results") result: Int = 10, + @Query("lang") lang: String = "en"): RandomUserResponse } \ No newline at end of file