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' 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() } 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