I'm trying to write my network request to use Retrofit 2.6.0 and coroutines suspend fun. But i keep getting null object. This is the first time am trying retrofit 2.6 and coroutines
here is my sample code
Data class
data class ProjectList (val data: List<Project>)
Sample JSON Object
{
"data": [
{
"project_id": "10824",
"project_name": "Bendor Project",
"project_number": "P010824",
"content_items": [
{
"content_id": "235",
"content_name": "Longonot Project",
"content_description": "Valves Example ",
"content_date_updated": "2019-08-31 12:29:00",
"project_id": "10824",
"media_items": []
Network Interface
suspend fun getProjects(@Query("mode") mode: String): ProjectList
Retrofit Client
class RetrofitClient{
private val gson = GsonBuilder()
.setLenient()
.create()
private fun retrofit(): Retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build()
val retrofitService: ProjectAPI by lazy {
retrofit().create(ProjectAPI::class.java)
}
Repository
class ProjectRepository {
private val client: ProjectAPI = RetrofitClient().retrofitService
suspend fun getProjectData(mode : String) : ProjectList = client.getProjects(mode)
}
livedata in ViewModel
val request : LiveData<ProjectList> = liveData(Dispatchers.IO){
val response = repository.getProjectData(SOURCE_MODE)
Log.e(TAG, "${response.data}")
emit(response)
}
I keep getting null response. Where am i not getting it right?