From 7ad95d5f263798106afa9b487dbf445a1222aac3 Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Thu, 21 May 2020 10:22:25 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A4=BE=E5=8C=BA=E4=BC=98=E5=8C=96=E6=B1=87?= =?UTF-8?q?=E6=80=BB=EF=BC=882020=E5=B9=B45=E6=9C=88=EF=BC=89(4)https://gi?= =?UTF-8?q?tlab.ghzs.com/pm/halo-app-issues/-/issues/872?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/util/UploadImageUtils.kt | 21 ++++++++++++------- .../com/gh/gamecenter/SuggestionActivity.java | 4 ++-- .../qa/answer/edit/AnswerEditViewModel.kt | 17 +++++++++++++-- .../qa/article/edit/ArticleEditViewModel.kt | 17 +++++++++++++-- 4 files changed, 45 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/UploadImageUtils.kt b/app/src/main/java/com/gh/common/util/UploadImageUtils.kt index ff0c6c7d6c..7ad0a46793 100644 --- a/app/src/main/java/com/gh/common/util/UploadImageUtils.kt +++ b/app/src/main/java/com/gh/common/util/UploadImageUtils.kt @@ -20,6 +20,8 @@ import org.json.JSONObject import java.io.File import java.net.URLEncoder import java.util.* +import kotlin.collections.HashMap +import java.lang.Exception object UploadImageUtils { @@ -109,6 +111,7 @@ object UploadImageUtils { fun compressAndUploadImageList(type: UploadType, imgs: List, compressGif: Boolean, listener: OnUploadImageListListener): Disposable? { var subscription: Disposable? = null val postImageList = LinkedHashMap() + val errorMap = HashMap() Observable.create(ObservableOnSubscribe> { val compressList = compressImageList(imgs, compressGif) @@ -145,11 +148,13 @@ object UploadImageUtils { onFailure(IllegalAccessException("HeHe")) } + override fun onFailure(exception: Exception) { // 若遇到错误且 subscription?.isDisposed 为 true 时会抛出 io.reactivex.exceptions.UndeliverableException 异常 // if (subscription?.isDisposed == true) return // it.onError(exception) // fuck - it.onNext(Collections.emptyMap()) + // it.onNext(Collections.emptyMap()) + errorMap[img.path] = exception } }) listProgress += img.length() @@ -165,18 +170,18 @@ object UploadImageUtils { override fun onComplete() { if (postImageList.size == 0) { - listener.onError() + listener.onError(errorMap) } else { - listener.onSuccess(postImageList) + listener.onSuccess(postImageList, errorMap) } } override fun onNext(t: Map) { - if (!t.isEmpty()) postImageList.putAll(t) + if (t.isNotEmpty()) postImageList.putAll(t) } - override fun onError(e: Throwable) { - e.printStackTrace() + override fun onError(ignore: Throwable) { + } }) return subscription @@ -285,8 +290,8 @@ object UploadImageUtils { } interface OnUploadImageListListener { - fun onSuccess(imageUrl: LinkedHashMap) // key:sourceImage value:compressImage - fun onError() // 全部上传失败时回调 + fun onSuccess(imageUrl: LinkedHashMap, errorMap: Map) // key:sourceImage value:compressImage + fun onError(errorMap: Map) // 全部上传失败时回调 fun onProgress(total: Long, progress: Long) } diff --git a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java index 47ca8c4d4d..eb571428de 100644 --- a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java @@ -765,7 +765,7 @@ public class SuggestionActivity extends ToolBarActivity implements OnRequestCall } @Override - public void onSuccess(@NotNull LinkedHashMap imageUrl) { + public void onSuccess(@NotNull LinkedHashMap imageUrl, @NotNull Map errorMap) { Utils.log("意见反馈:图片上传完成"); final JSONArray picArray = new JSONArray(); for (String s : imageUrl.keySet()) { @@ -775,7 +775,7 @@ public class SuggestionActivity extends ToolBarActivity implements OnRequestCall } @Override - public void onError() { + public void onError(@NotNull Map errorMap) { if (postDialog != null) { postDialog.dismissAllowingStateLoss(); } diff --git a/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt index c0f0be0192..d3a2def6dc 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/answer/edit/AnswerEditViewModel.kt @@ -162,19 +162,32 @@ class AnswerEditViewModel(application: Application, processDialog.postValue(WaitingDialogFragment.WaitingDialogData("图片上传中 $percent%", true)) } - override fun onSuccess(imageUrl: LinkedHashMap) { + override fun onSuccess(imageUrl: LinkedHashMap, errorMap: Map) { processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传中...", false)) postImageLiveData.postValue(Resource.success(imageUrl)) val errorSize = pictureList.size - imageUrl.size if (errorSize > 0) { + for (error in errorMap.values) { + if (error is HttpException && error.code() == 403) { + Utils.toast(getApplication(), errorSize.toString() + "张违规图片上传失败") + return + } + } Utils.toast(getApplication(), errorSize.toString() + "张图片上传失败") } } - override fun onError() { + override fun onError(errorMap: Map) { processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传中...", false)) postImageLiveData.postValue(Resource.error(null)) val errorSize = pictureList.size + + for (error in errorMap.values) { + if (error is HttpException && error.code() == 403) { + Utils.toast(getApplication(), errorSize.toString() + "张违规图片上传失败") + return + } + } if (errorSize == 1) { Utils.toast(getApplication(), "图片上传失败") } else { diff --git a/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt b/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt index a23c5c3ebd..ec6d21ac48 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/article/edit/ArticleEditViewModel.kt @@ -169,18 +169,31 @@ class ArticleEditViewModel(application: Application) : AndroidViewModel(applicat processDialog.postValue(WaitingDialogFragment.WaitingDialogData("图片上传中 $percent%", true)) } - override fun onSuccess(imageUrl: LinkedHashMap) { + override fun onSuccess(imageUrl: LinkedHashMap, errorMap: Map) { processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传中...", false)) postImageLiveData.postValue(Resource.success(imageUrl)) val errorSize = pictureList.size - imageUrl.size if (errorSize > 0) { + for (error in errorMap.values) { + if (error is HttpException && error.code() == 403) { + Utils.toast(getApplication(), errorSize.toString() + "张违规图片上传失败") + return + } + } Utils.toast(getApplication(), errorSize.toString() + "张图片上传失败") } } - override fun onError() { + override fun onError(errorMap: Map) { processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传中...", false)) val errorSize = pictureList.size + + for (error in errorMap.values) { + if (error is HttpException && error.code() == 403) { + Utils.toast(getApplication(), errorSize.toString() + "张违规图片上传失败") + return + } + } if (errorSize == 1) { Utils.toast(getApplication(), "图片上传失败") } else {