fix crash in EditProfileViewModel

This commit is contained in:
Conny Duck 2018-08-26 12:41:26 +02:00
parent 1f75ef7b2b
commit 1d28f4728f

View file

@ -35,6 +35,7 @@ import io.reactivex.schedulers.Schedulers
import okhttp3.MediaType
import okhttp3.MultipartBody
import okhttp3.RequestBody
import org.json.JSONException
import org.json.JSONObject
import retrofit2.Call
import retrofit2.Callback
@ -51,9 +52,9 @@ private const val AVATAR_FILE_NAME = "avatar.png"
private const val TAG = "EditProfileViewModel"
class EditProfileViewModel @Inject constructor(
private val mastodonApi: MastodonApi,
private val eventHub: EventHub
): ViewModel() {
private val mastodonApi: MastodonApi,
private val eventHub: EventHub
): ViewModel() {
val profileData = MutableLiveData<Resource<Account>>()
val avatarData = MutableLiveData<Resource<Bitmap>>()
@ -70,7 +71,7 @@ class EditProfileViewModel @Inject constructor(
profileData.postValue(Loading())
val call = mastodonApi.accountVerifyCredentials()
call.enqueue(object : Callback<Account> {
call.enqueue(object : Callback<Account> {
override fun onResponse(call: Call<Account>,
response: Response<Account>) {
if (response.isSuccessful) {
@ -185,7 +186,7 @@ class EditProfileViewModel @Inject constructor(
val field4 = calculateFieldToUpdate(newFields.getOrNull(3), fieldsUnchanged)
if (displayName == null && note == null && locked == null && avatar == null && header == null
&& field1 == null && field2 == null && field3 == null && field4 == null) {
&& field1 == null && field2 == null && field3 == null && field4 == null) {
/** if nothing has changed, there is no need to make a network request */
saveData.postValue(Success())
return
@ -199,7 +200,11 @@ class EditProfileViewModel @Inject constructor(
if (!response.isSuccessful || newProfileData == null) {
val errorResponse = response.errorBody()?.string()
val errorMsg = if(!errorResponse.isNullOrBlank()) {
JSONObject(errorResponse).optString("error", null)
try {
JSONObject(errorResponse).optString("error", null)
} catch (e: JSONException) {
null
}
} else {
null
}