修复图片上传闪退BUG

This commit is contained in:
kehaoyuan
2019-03-20 18:32:11 +08:00
parent 3a829e1cfd
commit cbd2d8ed6c

View File

@ -7,7 +7,6 @@ import android.arch.lifecycle.ViewModel
import android.arch.lifecycle.ViewModelProvider
import android.content.Intent
import android.text.TextUtils
import anet.channel.util.Utils.context
import com.gh.base.fragment.WaitingDialogFragment
import com.gh.common.util.ImageUtils
import com.gh.common.util.UploadImageUtils
@ -42,6 +41,7 @@ class AnswerEditViewModel(application: Application,
var questionsId: String?) : AndroidViewModel(application) {
private var mPostDraftsCount: Int = 0
private val mApi = RetrofitManager.getInstance(getApplication()).api
var cacheAnswerContent: String? = null
@ -71,10 +71,10 @@ class AnswerEditViewModel(application: Application,
val responseBody = RealResponseBody("", 0, null)
Single.just<ResponseBody>(responseBody).toObservable()
} else {
RetrofitManager.getInstance(context).api.patchQuestionAnswer(body, answerId)
mApi.patchQuestionAnswer(body, answerId)
}
} else {
RetrofitManager.getInstance(context).api.postQuestionAnswer(body, questionsId)
mApi.postQuestionAnswer(body, questionsId)
}
observable
.subscribeOn(Schedulers.io())
@ -94,7 +94,7 @@ class AnswerEditViewModel(application: Application,
fun deleteAnswerDraft() {
processDialog.postValue(WaitingDialogFragment.WaitingDialogData("删除中...", true))
RetrofitManager.getInstance(context).api
mApi
.deleteAnswerDrafts(UserManager.getInstance().userId, draftId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@ -116,11 +116,11 @@ class AnswerEditViewModel(application: Application,
val uris = Matisse.obtainResult(data)
val pictureList = ArrayList<String>()
for (uri in uris) {
val picturePath = PathUtils.getPath(context, uri)
val picturePath = PathUtils.getPath(getApplication(), uri)
if (File(picturePath).length() > ImageUtils.getUploadFileMaxSize()) {
val count = ImageUtils.getUploadFileMaxSize() / 1024 / 1024
val application: Application = getApplication()
Utils.toast(context, application.getString(R.string.pic_max_hint, count))
Utils.toast(getApplication(), application.getString(R.string.pic_max_hint, count))
continue
}
Utils.log("picturePath = $picturePath")
@ -128,7 +128,7 @@ class AnswerEditViewModel(application: Application,
}
if (pictureList.size == 0) return
processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传...", true))
processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传...", true))
uploadImageSubscription = UploadImageUtils.compressAndUploadImageList(UploadImageUtils.UploadType.answer, pictureList
, false, object : UploadImageUtils.OnUploadImageListListener {
@ -139,12 +139,12 @@ class AnswerEditViewModel(application: Application,
}
override fun onSuccess(imageUrl: Map<String, String>) {
processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传...", false))
processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传...", false))
postImageLiveData.postValue(Resource.success(imageUrl))
}
override fun onError() { // todo 失败提示??????
processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传...", false))
processDialog.postValue(WaitingDialogFragment.WaitingDialogData("上传...", false))
Utils.toast(getApplication(), "图片上传失败,请检查网络")
postImageLiveData.postValue(Resource.error(null))
// if (e != null && e instanceof HttpException && ((HttpException) e).code() == 403) {
@ -157,8 +157,8 @@ class AnswerEditViewModel(application: Application,
}
fun getUserAnswerDrafts() {
RetrofitManager.getInstance(context).api
.getUserAnswerDrafts(questionsId, Utils.getTime(context))
mApi
.getUserAnswerDrafts(questionsId, Utils.getTime(getApplication()))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : Response<ResponseBody>() {
@ -194,7 +194,7 @@ class AnswerEditViewModel(application: Application,
}
val body = RequestBody.create(MediaType.parse("application/json"), content.toString())
RetrofitManager.getInstance(context).api
mApi
.postAnswerDrafts(body, UserManager.getInstance().userId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())