diff --git a/app/src/main/java/com/casic/common/detector/gd/view/BigImageActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/BigImageActivity.kt index d01d91f..d9725b8 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/BigImageActivity.kt @@ -23,7 +23,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val index = intent.getIntExtra(LiteKitConstant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(LiteKitConstant.BIG_IMAGE_INTENT_DATA_KEY) - if (urls == null || urls.size == 0) { + if (urls == null || urls.isEmpty()) { return } val imageSize = urls.size diff --git a/app/src/main/java/com/casic/common/detector/gd/view/BigImageActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/BigImageActivity.kt index d01d91f..d9725b8 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/BigImageActivity.kt @@ -23,7 +23,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val index = intent.getIntExtra(LiteKitConstant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(LiteKitConstant.BIG_IMAGE_INTENT_DATA_KEY) - if (urls == null || urls.size == 0) { + if (urls == null || urls.isEmpty()) { return } val imageSize = urls.size diff --git a/app/src/main/java/com/casic/common/detector/gd/view/LoginActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/LoginActivity.kt index 1a73443..9bab45a 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/LoginActivity.kt @@ -9,37 +9,21 @@ import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog class LoginActivity : KotlinBaseActivity() { - private val kTag = "LoginActivity" - private lateinit var userViewModel: UserViewModel + private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } override fun initOnCreate(savedInstanceState: Bundle?) { - //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) NaviSetting.updatePrivacyAgree(this, true) binding.autoSavePasswordView.isChecked = SaveKeyValues.getValue(LocaleConstant.AUTO_SAVE, false) as Boolean - - userViewModel = ViewModelProvider(this)[UserViewModel::class.java] - userViewModel.loginResult.observe(this) { - if (it.isSuccess) { - val data = it.data - //保存基本信息 - SaveKeyValues.putValue(LocaleConstant.USER_NAME, data.userName) - SaveKeyValues.putValue(LocaleConstant.USER_ID, data.id) - SaveKeyValues.putValue(LocaleConstant.USER_COMPANY_ID, data.companyId) - - navigatePageTo() - finish() - } - } } override fun initEvent() { @@ -67,7 +51,29 @@ SaveKeyValues.putValue(LocaleConstant.SERVER_PORT, serversPort) //登陆 - userViewModel.login(this, account, password) + userViewModel.login( + account, password, + onLoading = { + LoadingDialog.show(this, "登录中,请稍后") + }, + onSuccess = { + LoadingDialog.dismiss() + if (it.isSuccess) { + val data = it.data + //保存基本信息 + SaveKeyValues.putValue(LocaleConstant.USER_NAME, data.userName) + SaveKeyValues.putValue(LocaleConstant.USER_ID, data.id) + SaveKeyValues.putValue(LocaleConstant.USER_COMPANY_ID, data.companyId) + + navigatePageTo() + finish() + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } + ) } } @@ -85,12 +91,7 @@ } override fun observeRequestState() { - userViewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "登录中,请稍后") - else -> LoadingDialog.dismiss() - } - } + } override fun setupTopBarLayout() { diff --git a/app/src/main/java/com/casic/common/detector/gd/view/BigImageActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/BigImageActivity.kt index d01d91f..d9725b8 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/BigImageActivity.kt @@ -23,7 +23,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val index = intent.getIntExtra(LiteKitConstant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(LiteKitConstant.BIG_IMAGE_INTENT_DATA_KEY) - if (urls == null || urls.size == 0) { + if (urls == null || urls.isEmpty()) { return } val imageSize = urls.size diff --git a/app/src/main/java/com/casic/common/detector/gd/view/LoginActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/LoginActivity.kt index 1a73443..9bab45a 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/LoginActivity.kt @@ -9,37 +9,21 @@ import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog class LoginActivity : KotlinBaseActivity() { - private val kTag = "LoginActivity" - private lateinit var userViewModel: UserViewModel + private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } override fun initOnCreate(savedInstanceState: Bundle?) { - //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) NaviSetting.updatePrivacyAgree(this, true) binding.autoSavePasswordView.isChecked = SaveKeyValues.getValue(LocaleConstant.AUTO_SAVE, false) as Boolean - - userViewModel = ViewModelProvider(this)[UserViewModel::class.java] - userViewModel.loginResult.observe(this) { - if (it.isSuccess) { - val data = it.data - //保存基本信息 - SaveKeyValues.putValue(LocaleConstant.USER_NAME, data.userName) - SaveKeyValues.putValue(LocaleConstant.USER_ID, data.id) - SaveKeyValues.putValue(LocaleConstant.USER_COMPANY_ID, data.companyId) - - navigatePageTo() - finish() - } - } } override fun initEvent() { @@ -67,7 +51,29 @@ SaveKeyValues.putValue(LocaleConstant.SERVER_PORT, serversPort) //登陆 - userViewModel.login(this, account, password) + userViewModel.login( + account, password, + onLoading = { + LoadingDialog.show(this, "登录中,请稍后") + }, + onSuccess = { + LoadingDialog.dismiss() + if (it.isSuccess) { + val data = it.data + //保存基本信息 + SaveKeyValues.putValue(LocaleConstant.USER_NAME, data.userName) + SaveKeyValues.putValue(LocaleConstant.USER_ID, data.id) + SaveKeyValues.putValue(LocaleConstant.USER_COMPANY_ID, data.companyId) + + navigatePageTo() + finish() + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } + ) } } @@ -85,12 +91,7 @@ } override fun observeRequestState() { - userViewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "登录中,请稍后") - else -> LoadingDialog.dismiss() - } - } + } override fun setupTopBarLayout() { diff --git a/app/src/main/java/com/casic/common/detector/gd/view/UploadEventActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/UploadEventActivity.kt index 384ea89..1fbf713 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/UploadEventActivity.kt @@ -26,7 +26,6 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.LiteKitConstant -import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.TitleBarView @@ -36,9 +35,9 @@ private val context: Context = this private val locationKit by lazy { LocationKit(this) } + private val taskViewModel by lazy { ViewModelProvider(this)[TaskViewModel::class.java] } private lateinit var imageAdapter: EditableImageAdapter private val realPaths: ArrayList = ArrayList() //真实图片路径 - private lateinit var taskViewModel: TaskViewModel private lateinit var taskId: String override fun initViewBinding(): ActivityUploadEventBinding { @@ -59,18 +58,7 @@ } override fun observeRequestState() { - taskViewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "事件上报中,请稍后...") - LoadState.Success -> { - LoadingDialog.dismiss() - "事件上报成功!".show(this) - finish() - } - else -> LoadingDialog.dismiss() - } - } } override fun initOnCreate(savedInstanceState: Bundle?) { @@ -80,8 +68,6 @@ binding.uploadTimeView.text = System.currentTimeMillis().timestampToCompleteDate() - taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] - locationKit.getCurrentLocation(true, object : OnGetLocationListener { override fun onSuccess(location: AMapLocation) { binding.lngView.text = "${location.longitude}" @@ -131,7 +117,21 @@ eventModel.latitude = binding.latView.text.toString().toDouble() eventModel.longitude = binding.lngView.text.toString().toDouble() - taskViewModel.uploadEvent(this, taskId, eventModel.toJson(), realPaths) + taskViewModel.uploadEvent( + taskId, eventModel.toJson(), realPaths, + onLoading = { + LoadingDialog.show(this, "事件上报中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + "事件上报成功!".show(this) + finish() + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } + ) } } diff --git a/app/src/main/java/com/casic/common/detector/gd/view/BigImageActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/BigImageActivity.kt index d01d91f..d9725b8 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/BigImageActivity.kt @@ -23,7 +23,7 @@ override fun initOnCreate(savedInstanceState: Bundle?) { val index = intent.getIntExtra(LiteKitConstant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(LiteKitConstant.BIG_IMAGE_INTENT_DATA_KEY) - if (urls == null || urls.size == 0) { + if (urls == null || urls.isEmpty()) { return } val imageSize = urls.size diff --git a/app/src/main/java/com/casic/common/detector/gd/view/LoginActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/LoginActivity.kt index 1a73443..9bab45a 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/LoginActivity.kt @@ -9,37 +9,21 @@ import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertMessageDialog class LoginActivity : KotlinBaseActivity() { - private val kTag = "LoginActivity" - private lateinit var userViewModel: UserViewModel + private val userViewModel by lazy { ViewModelProvider(this)[UserViewModel::class.java] } override fun initOnCreate(savedInstanceState: Bundle?) { - //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) NaviSetting.updatePrivacyAgree(this, true) binding.autoSavePasswordView.isChecked = SaveKeyValues.getValue(LocaleConstant.AUTO_SAVE, false) as Boolean - - userViewModel = ViewModelProvider(this)[UserViewModel::class.java] - userViewModel.loginResult.observe(this) { - if (it.isSuccess) { - val data = it.data - //保存基本信息 - SaveKeyValues.putValue(LocaleConstant.USER_NAME, data.userName) - SaveKeyValues.putValue(LocaleConstant.USER_ID, data.id) - SaveKeyValues.putValue(LocaleConstant.USER_COMPANY_ID, data.companyId) - - navigatePageTo() - finish() - } - } } override fun initEvent() { @@ -67,7 +51,29 @@ SaveKeyValues.putValue(LocaleConstant.SERVER_PORT, serversPort) //登陆 - userViewModel.login(this, account, password) + userViewModel.login( + account, password, + onLoading = { + LoadingDialog.show(this, "登录中,请稍后") + }, + onSuccess = { + LoadingDialog.dismiss() + if (it.isSuccess) { + val data = it.data + //保存基本信息 + SaveKeyValues.putValue(LocaleConstant.USER_NAME, data.userName) + SaveKeyValues.putValue(LocaleConstant.USER_ID, data.id) + SaveKeyValues.putValue(LocaleConstant.USER_COMPANY_ID, data.companyId) + + navigatePageTo() + finish() + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } + ) } } @@ -85,12 +91,7 @@ } override fun observeRequestState() { - userViewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "登录中,请稍后") - else -> LoadingDialog.dismiss() - } - } + } override fun setupTopBarLayout() { diff --git a/app/src/main/java/com/casic/common/detector/gd/view/UploadEventActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/UploadEventActivity.kt index 384ea89..1fbf713 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/UploadEventActivity.kt @@ -26,7 +26,6 @@ import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.LiteKitConstant -import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.TitleBarView @@ -36,9 +35,9 @@ private val context: Context = this private val locationKit by lazy { LocationKit(this) } + private val taskViewModel by lazy { ViewModelProvider(this)[TaskViewModel::class.java] } private lateinit var imageAdapter: EditableImageAdapter private val realPaths: ArrayList = ArrayList() //真实图片路径 - private lateinit var taskViewModel: TaskViewModel private lateinit var taskId: String override fun initViewBinding(): ActivityUploadEventBinding { @@ -59,18 +58,7 @@ } override fun observeRequestState() { - taskViewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "事件上报中,请稍后...") - LoadState.Success -> { - LoadingDialog.dismiss() - "事件上报成功!".show(this) - finish() - } - else -> LoadingDialog.dismiss() - } - } } override fun initOnCreate(savedInstanceState: Bundle?) { @@ -80,8 +68,6 @@ binding.uploadTimeView.text = System.currentTimeMillis().timestampToCompleteDate() - taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] - locationKit.getCurrentLocation(true, object : OnGetLocationListener { override fun onSuccess(location: AMapLocation) { binding.lngView.text = "${location.longitude}" @@ -131,7 +117,21 @@ eventModel.latitude = binding.latView.text.toString().toDouble() eventModel.longitude = binding.lngView.text.toString().toDouble() - taskViewModel.uploadEvent(this, taskId, eventModel.toJson(), realPaths) + taskViewModel.uploadEvent( + taskId, eventModel.toJson(), realPaths, + onLoading = { + LoadingDialog.show(this, "事件上报中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + "事件上报成功!".show(this) + finish() + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } + ) } } diff --git a/app/src/main/java/com/casic/common/detector/gd/vm/UserViewModel.kt b/app/src/main/java/com/casic/common/detector/gd/vm/UserViewModel.kt index ef8d31c..db23c96 100644 --- a/app/src/main/java/com/casic/common/detector/gd/vm/UserViewModel.kt +++ b/app/src/main/java/com/casic/common/detector/gd/vm/UserViewModel.kt @@ -1,45 +1,32 @@ package com.casic.common.detector.gd.vm -import android.content.Context -import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel import com.casic.common.detector.gd.extensions.getResponseMessage import com.casic.common.detector.gd.extensions.getResponseState import com.casic.common.detector.gd.model.LoginResultModel import com.casic.common.detector.gd.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.isNetworkConnected 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.extensions.unpackingResponse /** * 用户相关 VM * */ -class UserViewModel : BaseViewModel() { - private val gson by lazy { Gson() } - val loginResult = MutableLiveData() - - fun login(context: Context, account: String, password: String) = launch({ - loadState.value = LoadState.Loading +class UserViewModel : ViewModel() { + fun login( + account: String, + password: String, + onLoading: () -> Unit, + onSuccess: (LoginResultModel) -> Unit, + onFailed: (String) -> Unit + ) = launch({ + onLoading() val response = RetrofitServiceManager.login(account, password) if (response.getResponseState()) { - loadState.value = LoadState.Success - loginResult.value = gson.fromJson( - response, object : TypeToken() {}.type - ) + onSuccess(unpackingResponse(response)) } else { - loadState.value = LoadState.Fail - response.getResponseMessage().show(context) + onFailed(response.getResponseMessage()) } }, { - it.printStackTrace() - loadState.value = LoadState.Fail - if (context.isNetworkConnected()) { - "连接服务器失败,IP或端口错误".show(context) - } else { - "网络连接失败".show(context) - } + onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file