package com.casic.smarttube.vm import androidx.lifecycle.MutableLiveData import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.extensions.separateResponseCode import com.casic.smarttube.extensions.toErrorMessage import com.casic.smarttube.model.VersionResultModel import com.casic.smarttube.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.BaseViewModel import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.LoadState class VersionViewModel : BaseViewModel() { private val gson = Gson() val versionResultModel = MutableLiveData<VersionResultModel.DataBean>() fun updateVersion() = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.updateVersion() val responseCode = response.separateResponseCode() if (responseCode == 200) { loadState.value = LoadState.Success versionResultModel.value = gson.fromJson<VersionResultModel>( response, object : TypeToken<VersionResultModel>() {}.type ).data } else { loadState.value = LoadState.Fail response.toErrorMessage().show(BaseApplication.obtainInstance()) } }, { loadState.value = LoadState.Fail it.printStackTrace() }) }