Advertisement
eveeeeef21

DetailViewModel

Jan 19th, 2024
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 3.74 KB | Source Code | 0 0
  1. package com.ahmadrd.githubuser.viewmodel
  2.  
  3. import android.util.Log
  4. import androidx.lifecycle.LiveData
  5. import androidx.lifecycle.MutableLiveData
  6. import androidx.lifecycle.ViewModel
  7. import com.ahmadrd.githubuser.data.response.DetailUserResponse
  8. import com.ahmadrd.githubuser.data.response.ItemsItem
  9. import com.ahmadrd.githubuser.data.retrofit.ApiConfig
  10. import retrofit2.Call
  11. import retrofit2.Callback
  12. import retrofit2.Response
  13.  
  14. class DetailViewModel: ViewModel() {
  15.  
  16.     private val _detailUser= MutableLiveData<DetailUserResponse>()
  17.     val detailUser: LiveData<DetailUserResponse> = _detailUser
  18.  
  19.     private val _isLoading = MutableLiveData<Boolean>()
  20.     val isLoading: LiveData<Boolean> = _isLoading
  21.  
  22.     private val _followers = MutableLiveData<List<ItemsItem>>()
  23.     val followers : LiveData<List<ItemsItem>> = _followers
  24.  
  25.     private val _following = MutableLiveData<List<ItemsItem>>()
  26.     val following : LiveData<List<ItemsItem>> = _following
  27.  
  28.     private val _error = MutableLiveData<Boolean>()
  29.     val error : LiveData<Boolean> = _error
  30.  
  31.     companion object {
  32.         private const val TAG = "DetailViewModel"
  33.     }
  34.  
  35.  
  36.     fun setDetailUser(username: String){
  37.         _isLoading.value = true
  38.         val client = ApiConfig.getApiService().getDetailUsers(username)
  39.         client.enqueue(object : Callback<DetailUserResponse>{
  40.                 override fun onResponse(call: Call<DetailUserResponse>, response: Response<DetailUserResponse>) {
  41.                     _isLoading.value = false
  42.                     if(response.isSuccessful){
  43.                         _detailUser.value = response.body()
  44.                     }
  45.                 }
  46.  
  47.                 override fun onFailure(call: Call<DetailUserResponse>, t: Throwable) {
  48.                     _isLoading.value = false
  49.                     Log.d(TAG, "onFailure setDetailUser : " + t.message.toString())
  50.                 }
  51.             })
  52.     }
  53.  
  54.     fun getFollowers(username: String) {
  55.         _isLoading.value = true
  56.         val client = ApiConfig.getApiService().getUserFollowers(username)
  57.         client.enqueue(object : Callback<List<ItemsItem>>{
  58.             override fun onResponse(call: Call<List<ItemsItem>>, response: Response<List<ItemsItem>>) {
  59.                 _isLoading.value = false
  60.                 if (response.isSuccessful) {
  61.                     _followers.value = response.body()
  62.                 }else {
  63.                     Log.e(TAG, "onFailure Pertama getFollowers: ${response.message()}")
  64.                 }
  65.             }
  66.  
  67.             override fun onFailure(call: Call<List<ItemsItem>>, t: Throwable) {
  68.                 _isLoading.value = false
  69.                 Log.e(TAG, "onFailure Kedua getFollowers: ${t.message}")
  70.             }
  71.         })
  72.     }
  73.  
  74.     fun getFollowing(username: String) {
  75.         _isLoading.value = true
  76.         val client = ApiConfig.getApiService().getUserFollowing(username)
  77.         client.enqueue(object : Callback<List<ItemsItem>>{
  78.             override fun onResponse(call: Call<List<ItemsItem>>, response: Response<List<ItemsItem>>) {
  79.                 _isLoading.value = false
  80.                 if (response.isSuccessful) {
  81.                     val responseBody = response.body()
  82.                     if (responseBody != null) {
  83.                         _following.postValue(responseBody)
  84.                     }
  85.                 }else {
  86.                     Log.e(TAG, "onFailure Pertama getFollowing: ${response.message()}")
  87.                 }
  88.             }
  89.  
  90.             override fun onFailure(call: Call<List<ItemsItem>>, t: Throwable) {
  91.                 _isLoading.value = false
  92.                 Log.e(TAG, "onFailure Kedua getFollowing: ${t.message}")
  93.             }
  94.         })
  95.     }
  96.  
  97.     fun doneToastError(){
  98.         _error.value = false
  99.     }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement