diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index c44a711..ca69988 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -31,7 +31,6 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.ActivityStackManager -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.BottomActionSheet @@ -66,17 +65,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel.resultModel.observe(this) { - if (it.code == 200) { - val url = it.data.toString() - if (url.isNotBlank()) { - imagePaths.add(url) - recyclerViewImages.add(url.combineImagePath()) - } - imageAdapter.notifyDataSetChanged() - } - } - //左右边距 val viewWidth = getScreenWidth() - (10 + 10).dp2px(this) imageAdapter = EditableImageAdapter(this, recyclerViewImages, viewWidth, 1, 3) @@ -84,12 +72,7 @@ } override fun observeRequestState() { - uploadFileViewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "图片上传中,请稍后...") - else -> LoadingDialog.dismiss() - } - } + } override fun initEvent() { @@ -228,7 +211,27 @@ result.realPath.compressImage(this, object : OnImageCompressListener { override fun onSuccess(file: File) { Log.d(kTag, "onSuccess: " + file.absolutePath) - uploadFileViewModel.uploadImage(context, file) + uploadFileViewModel.uploadImage( + file, + onLoading = { + LoadingDialog.show(context, "图片上传中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.run { + val url = data.toString() + if (url.isNotBlank()) { + imagePaths.add(url) + recyclerViewImages.add(url.combineImagePath()) + } + imageAdapter.notifyDataSetChanged() + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(context) + } + ) } override fun onError(e: Throwable) { diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index c44a711..ca69988 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -31,7 +31,6 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.ActivityStackManager -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.BottomActionSheet @@ -66,17 +65,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel.resultModel.observe(this) { - if (it.code == 200) { - val url = it.data.toString() - if (url.isNotBlank()) { - imagePaths.add(url) - recyclerViewImages.add(url.combineImagePath()) - } - imageAdapter.notifyDataSetChanged() - } - } - //左右边距 val viewWidth = getScreenWidth() - (10 + 10).dp2px(this) imageAdapter = EditableImageAdapter(this, recyclerViewImages, viewWidth, 1, 3) @@ -84,12 +72,7 @@ } override fun observeRequestState() { - uploadFileViewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "图片上传中,请稍后...") - else -> LoadingDialog.dismiss() - } - } + } override fun initEvent() { @@ -228,7 +211,27 @@ result.realPath.compressImage(this, object : OnImageCompressListener { override fun onSuccess(file: File) { Log.d(kTag, "onSuccess: " + file.absolutePath) - uploadFileViewModel.uploadImage(context, file) + uploadFileViewModel.uploadImage( + file, + onLoading = { + LoadingDialog.show(context, "图片上传中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.run { + val url = data.toString() + if (url.isNotBlank()) { + imagePaths.add(url) + recyclerViewImages.add(url.combineImagePath()) + } + imageAdapter.notifyDataSetChanged() + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(context) + } + ) } override fun onError(e: Throwable) { diff --git a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt index baeedfd..263a851 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt @@ -34,7 +34,6 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ActivityStackManager -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 @@ -73,16 +72,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel.resultModel.observe(this) { - if (it.code == 200) { - val url = it.data.toString() - if (url.isNotBlank()) { - imagePaths.add(url) - recyclerViewImages.add(url.combineImagePath()) - } - imageAdapter.notifyDataSetChanged() - } - } val userName = SaveKeyValues.getValue(LocaleConstant.USER_NAME_KEY, "") as String if (userName.isNotBlank()) { @@ -99,12 +88,7 @@ } override fun observeRequestState() { - uploadFileViewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "图片上传中,请稍后...") - else -> LoadingDialog.dismiss() - } - } + } private val selectLocationLauncher = registerForActivityResult( @@ -249,7 +233,27 @@ override fun onSuccess(file: File) { Log.d(kTag, "onSuccess: ${file.absolutePath}") //上传图片 - uploadFileViewModel.uploadImage(context, file) + uploadFileViewModel.uploadImage( + file, + onLoading = { + LoadingDialog.show(context, "图片上传中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.run { + val url = data.toString() + if (url.isNotBlank()) { + imagePaths.add(url) + recyclerViewImages.add(url.combineImagePath()) + } + imageAdapter.notifyDataSetChanged() + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(context) + } + ) } override fun onError(e: Throwable) { diff --git a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt index c44a711..ca69988 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/ApplyEnterActivity.kt @@ -31,7 +31,6 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.ActivityStackManager -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.BottomActionSheet @@ -66,17 +65,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel.resultModel.observe(this) { - if (it.code == 200) { - val url = it.data.toString() - if (url.isNotBlank()) { - imagePaths.add(url) - recyclerViewImages.add(url.combineImagePath()) - } - imageAdapter.notifyDataSetChanged() - } - } - //左右边距 val viewWidth = getScreenWidth() - (10 + 10).dp2px(this) imageAdapter = EditableImageAdapter(this, recyclerViewImages, viewWidth, 1, 3) @@ -84,12 +72,7 @@ } override fun observeRequestState() { - uploadFileViewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "图片上传中,请稍后...") - else -> LoadingDialog.dismiss() - } - } + } override fun initEvent() { @@ -228,7 +211,27 @@ result.realPath.compressImage(this, object : OnImageCompressListener { override fun onSuccess(file: File) { Log.d(kTag, "onSuccess: " + file.absolutePath) - uploadFileViewModel.uploadImage(context, file) + uploadFileViewModel.uploadImage( + file, + onLoading = { + LoadingDialog.show(context, "图片上传中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.run { + val url = data.toString() + if (url.isNotBlank()) { + imagePaths.add(url) + recyclerViewImages.add(url.combineImagePath()) + } + imageAdapter.notifyDataSetChanged() + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(context) + } + ) } override fun onError(e: Throwable) { diff --git a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt index baeedfd..263a851 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt @@ -34,7 +34,6 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.ActivityStackManager -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 @@ -73,16 +72,6 @@ override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - uploadFileViewModel.resultModel.observe(this) { - if (it.code == 200) { - val url = it.data.toString() - if (url.isNotBlank()) { - imagePaths.add(url) - recyclerViewImages.add(url.combineImagePath()) - } - imageAdapter.notifyDataSetChanged() - } - } val userName = SaveKeyValues.getValue(LocaleConstant.USER_NAME_KEY, "") as String if (userName.isNotBlank()) { @@ -99,12 +88,7 @@ } override fun observeRequestState() { - uploadFileViewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "图片上传中,请稍后...") - else -> LoadingDialog.dismiss() - } - } + } private val selectLocationLauncher = registerForActivityResult( @@ -249,7 +233,27 @@ override fun onSuccess(file: File) { Log.d(kTag, "onSuccess: ${file.absolutePath}") //上传图片 - uploadFileViewModel.uploadImage(context, file) + uploadFileViewModel.uploadImage( + file, + onLoading = { + LoadingDialog.show(context, "图片上传中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.run { + val url = data.toString() + if (url.isNotBlank()) { + imagePaths.add(url) + recyclerViewImages.add(url.combineImagePath()) + } + imageAdapter.notifyDataSetChanged() + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(context) + } + ) } override fun onError(e: Throwable) { diff --git a/app/src/main/java/com/casic/br/operationsite/vm/UploadFileViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/UploadFileViewModel.kt index fb692d8..e243ed1 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/UploadFileViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/UploadFileViewModel.kt @@ -1,42 +1,29 @@ package com.casic.br.operationsite.vm -import android.content.Context -import androidx.lifecycle.MutableLiveData -import com.casic.br.operationsite.extensions.getResponseCode -import com.casic.br.operationsite.extensions.getResponseMessage +import androidx.lifecycle.ViewModel +import com.casic.br.operationsite.extensions.getResponseHeader import com.casic.br.operationsite.model.CommonResultModel import com.casic.br.operationsite.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 +import com.pengxh.kt.lite.extensions.unpackingResponse import java.io.File -class UploadFileViewModel : BaseViewModel() { - - private val gson = Gson() - val resultModel = MutableLiveData() - - fun uploadImage(context: Context, image: File) = launch({ - loadState.value = LoadState.Loading +class UploadFileViewModel : ViewModel() { + fun uploadImage( + image: File, + onLoading: () -> Unit, + onSuccess: (CommonResultModel) -> Unit, + onFailed: (String) -> Unit + ) = launch({ + onLoading() val response = RetrofitServiceManager.uploadImage(image) - when (response.getResponseCode()) { - 200 -> { - loadState.value = LoadState.Success - resultModel.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } - - else -> { - loadState.value = LoadState.Fail - response.getResponseMessage().show(context) - } + val header = response.getResponseHeader() + if (header.first == 200) { + onSuccess(unpackingResponse(response)) + } else { + onFailed(header.second) } }, { - loadState.value = LoadState.Fail - it.printStackTrace() + onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file