diff --git a/app/src/main/java/com/casic/common/detector/gd/view/VersionControlActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/VersionControlActivity.kt index 8641c79..860da7a 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/VersionControlActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/VersionControlActivity.kt @@ -19,7 +19,6 @@ import com.pengxh.kt.lite.extensions.createDownloadFileDir import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.FileDownloadManager -import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.widget.TitleBarView import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -29,34 +28,10 @@ class VersionControlActivity : KotlinBaseActivity() { private val kTag = "VersionControlActivity" - private lateinit var versionViewModel: VersionViewModel + private val versionViewModel by lazy { ViewModelProvider(this)[VersionViewModel::class.java] } override fun initOnCreate(savedInstanceState: Bundle?) { binding.versionView.text = "Version ${BuildConfig.VERSION_NAME}" - - versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java] - versionViewModel.versionResult.observe(this) { - if (it.version.toInt() > BuildConfig.VERSION_CODE) { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("提示") - .setMessage("有新版本,是否更新?") - .setNegativeButton("稍后再说") - .setPositiveButton("立即下载") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - downloadApk(it.path) - } - - override fun onCancelClick() { - - } - }).build().show() - } else { - "已是最新版本,无需更新".show(this) - } - } } override fun initEvent() { @@ -71,7 +46,38 @@ }) binding.updateLayout.setOnClickListener { - versionViewModel.getApplicationVersion() + versionViewModel.getApplicationVersion( + onLoading = { + LoadingDialog.show(this, "检查版本中,请稍后") + }, + onSuccess = { + LoadingDialog.dismiss() + if (it.version.toInt() > BuildConfig.VERSION_CODE) { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("有新版本,是否更新?") + .setNegativeButton("稍后再说") + .setPositiveButton("立即下载") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + downloadApk(it.path) + } + + override fun onCancelClick() { + + } + }).build().show() + } else { + "已是最新版本,无需更新".show(this) + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } + ) } } @@ -80,12 +86,7 @@ } override fun observeRequestState() { - versionViewModel.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/VersionControlActivity.kt b/app/src/main/java/com/casic/common/detector/gd/view/VersionControlActivity.kt index 8641c79..860da7a 100644 --- a/app/src/main/java/com/casic/common/detector/gd/view/VersionControlActivity.kt +++ b/app/src/main/java/com/casic/common/detector/gd/view/VersionControlActivity.kt @@ -19,7 +19,6 @@ import com.pengxh.kt.lite.extensions.createDownloadFileDir import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.FileDownloadManager -import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.widget.TitleBarView import com.pengxh.kt.lite.widget.dialog.AlertControlDialog @@ -29,34 +28,10 @@ class VersionControlActivity : KotlinBaseActivity() { private val kTag = "VersionControlActivity" - private lateinit var versionViewModel: VersionViewModel + private val versionViewModel by lazy { ViewModelProvider(this)[VersionViewModel::class.java] } override fun initOnCreate(savedInstanceState: Bundle?) { binding.versionView.text = "Version ${BuildConfig.VERSION_NAME}" - - versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java] - versionViewModel.versionResult.observe(this) { - if (it.version.toInt() > BuildConfig.VERSION_CODE) { - AlertControlDialog.Builder() - .setContext(this) - .setTitle("提示") - .setMessage("有新版本,是否更新?") - .setNegativeButton("稍后再说") - .setPositiveButton("立即下载") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - downloadApk(it.path) - } - - override fun onCancelClick() { - - } - }).build().show() - } else { - "已是最新版本,无需更新".show(this) - } - } } override fun initEvent() { @@ -71,7 +46,38 @@ }) binding.updateLayout.setOnClickListener { - versionViewModel.getApplicationVersion() + versionViewModel.getApplicationVersion( + onLoading = { + LoadingDialog.show(this, "检查版本中,请稍后") + }, + onSuccess = { + LoadingDialog.dismiss() + if (it.version.toInt() > BuildConfig.VERSION_CODE) { + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("有新版本,是否更新?") + .setNegativeButton("稍后再说") + .setPositiveButton("立即下载") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + downloadApk(it.path) + } + + override fun onCancelClick() { + + } + }).build().show() + } else { + "已是最新版本,无需更新".show(this) + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } + ) } } @@ -80,12 +86,7 @@ } override fun observeRequestState() { - versionViewModel.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/vm/VersionViewModel.kt b/app/src/main/java/com/casic/common/detector/gd/vm/VersionViewModel.kt index be9d375..1a8f099 100644 --- a/app/src/main/java/com/casic/common/detector/gd/vm/VersionViewModel.kt +++ b/app/src/main/java/com/casic/common/detector/gd/vm/VersionViewModel.kt @@ -1,27 +1,21 @@ package com.casic.common.detector.gd.vm -import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel import com.casic.common.detector.gd.model.VersionResultModel 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.launch -import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.extensions.unpackingResponse -class VersionViewModel : BaseViewModel() { - private val gson by lazy { Gson() } - val versionResult = MutableLiveData() - - fun getApplicationVersion() = launch({ - loadState.value = LoadState.Loading +class VersionViewModel : ViewModel() { + fun getApplicationVersion( + onLoading: () -> Unit, + onSuccess: (VersionResultModel) -> Unit, + onFailed: (String) -> Unit + ) = launch({ + onLoading() val response = RetrofitServiceManager.getApplicationVersion() - versionResult.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - loadState.value = LoadState.Success + onSuccess(unpackingResponse(response)) }, { - it.printStackTrace() - loadState.value = LoadState.Fail + onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file