package com.casic.smarttube.vm import android.content.Context import com.casic.smarttube.extensions.separateResponseCode import com.casic.smarttube.extensions.toErrorMessage import com.casic.smarttube.model.UserDetailModel import com.casic.smarttube.retrofit.RetrofitServiceManager import com.casic.smarttube.utils.LocaleConstant 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 import com.pengxh.kt.lite.utils.SaveKeyValues class UserViewModel : BaseViewModel() { private val gson = Gson() fun getUserDetail() = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.getUserDetail() val responseCode = response.separateResponseCode() if (responseCode == 200) { val userDetail = gson.fromJson<UserDetailModel>( response, object : TypeToken<UserDetailModel>() {}.type ) SaveKeyValues.putValue(LocaleConstant.USER_DETAIL_KEY, gson.toJson(userDetail.data)) loadState.value = LoadState.Success } else { loadState.value = LoadState.Fail } }, { loadState.value = LoadState.Fail it.printStackTrace() }) fun changePassword(context: Context, oldPwd: String, newPwd: String) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.changePassword(oldPwd, newPwd) val responseCode = response.separateResponseCode() if (responseCode == 200) { loadState.value = LoadState.Success } else { loadState.value = LoadState.Fail response.toErrorMessage().show(context) } }, { loadState.value = LoadState.Fail it.printStackTrace() }) }