|
@@ -0,0 +1,49 @@
|
|
|
+package com.sambath.kunkhmer.screen.lives
|
|
|
+
|
|
|
+import androidx.lifecycle.LiveData
|
|
|
+import androidx.lifecycle.MutableLiveData
|
|
|
+import com.sambath.kunkhmer.app.getErrorCode
|
|
|
+import com.sambath.kunkhmer.base.BaseViewModel
|
|
|
+import com.sambath.kunkhmer.remote.LivesInfo
|
|
|
+import com.sambath.kunkhmer.remote.service.ApiService
|
|
|
+import com.sambath.kunkhmer.util.PrefHelper
|
|
|
+import io.reactivex.android.schedulers.AndroidSchedulers
|
|
|
+import io.reactivex.schedulers.Schedulers
|
|
|
+import java.util.concurrent.TimeUnit
|
|
|
+
|
|
|
+class LivesViewModel(val apiService: ApiService, val prefHelper: PrefHelper) : BaseViewModel() {
|
|
|
+ private val _state = MutableLiveData(LivesViewState())
|
|
|
+ val state: LiveData<LivesViewState> = _state
|
|
|
+ private fun prev() = _state.value!!
|
|
|
+
|
|
|
+ data class LivesViewState(
|
|
|
+ val initial: Boolean = false,
|
|
|
+ val isProgress: Boolean = false,
|
|
|
+ val isLoginSuccess: Boolean = false,
|
|
|
+ val error: String? = null,
|
|
|
+ val livesData: MutableList<LivesInfo>? = null,
|
|
|
+ )
|
|
|
+
|
|
|
+ fun getLives() {
|
|
|
+ if (_state.value!!.isProgress) return
|
|
|
+ _state.value = prev().copy(isProgress = true)
|
|
|
+
|
|
|
+ disposables.add(
|
|
|
+ apiService.getLives()
|
|
|
+ .timeout(10, TimeUnit.SECONDS)
|
|
|
+ .subscribeOn(Schedulers.io())
|
|
|
+ .observeOn(AndroidSchedulers.mainThread())
|
|
|
+ .subscribe({
|
|
|
+ if (it.resultCode == 1) {
|
|
|
+ _state.value = prev().copy(isProgress = false, isLoginSuccess = true, livesData = it.data!!.obj)
|
|
|
+ } else {
|
|
|
+ _state.value =
|
|
|
+ prev().copy(isProgress = false, error = "[${it.message.description}]")
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ val message: String = "ប្រតិបត្តិការមិនជោគជ័យ " + it.getErrorCode()
|
|
|
+ _state.value = prev().copy(isProgress = false, error = message)
|
|
|
+ })
|
|
|
+ )
|
|
|
+ }
|
|
|
+}
|