package com.casic.br.vm import androidx.lifecycle.MutableLiveData import com.casic.br.base.BaseApplication import com.casic.br.extensions.separateResponseCode import com.casic.br.extensions.toErrorMessage import com.casic.br.model.CommonResultModel import com.casic.br.model.LoginResultModel import com.casic.br.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.BaseViewModel import com.pengxh.kt.lite.vm.LoadState class UserViewModel : BaseViewModel() { private val gson = Gson() val registerResult = MutableLiveData<CommonResultModel>() val loginResult = MutableLiveData<LoginResultModel>() fun register( account: String, password: String, positionLng: Double, positionLat: Double, clientId: String, syncName: String, syncDeptid: String ) = launch({ val response = RetrofitServiceManager.register( account, password, positionLng, positionLat, clientId, syncName, syncDeptid ) val responseCode = response.separateResponseCode() if (responseCode == 200) { loadState.value = LoadState.Success registerResult.value = gson.fromJson<CommonResultModel>( response, object : TypeToken<CommonResultModel>() {}.type ) } else { loadState.value = LoadState.Fail response.toErrorMessage().show(BaseApplication.obtainInstance()) } }, { loadState.value = LoadState.Fail it.printStackTrace() }) fun enter(sid: String, account: String, secretKey: String) = launch({ val response = RetrofitServiceManager.login(sid, account, secretKey) val responseCode = response.separateResponseCode() if (responseCode == 200) { loadState.value = LoadState.Success loginResult.value = gson.fromJson<LoginResultModel>( response, object : TypeToken<LoginResultModel>() {}.type ) } else { loadState.value = LoadState.Fail response.toErrorMessage().show(BaseApplication.obtainInstance()) } }, { loadState.value = LoadState.Fail it.printStackTrace() }) }