fix Glide crash in MainActivity (#1224)
This commit is contained in:
parent
4456f255c5
commit
c410600fe4
3 changed files with 23 additions and 42 deletions
|
@ -23,7 +23,6 @@ import android.graphics.drawable.Drawable;
|
|||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
|
@ -518,25 +517,14 @@ public final class MainActivity extends BottomSheetActivity implements ActionBut
|
|||
}
|
||||
|
||||
private void fetchUserInfo() {
|
||||
|
||||
mastodonApi.accountVerifyCredentials().enqueue(new Callback<Account>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<Account> call, @NonNull Response<Account> response) {
|
||||
if (response.isSuccessful()) {
|
||||
onFetchUserInfoSuccess(response.body());
|
||||
} else {
|
||||
onFetchUserInfoFailure(new Exception(response.message()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<Account> call, @NonNull Throwable t) {
|
||||
onFetchUserInfoFailure((Exception) t);
|
||||
}
|
||||
});
|
||||
mastodonApi.accountVerifyCredentials()
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.as(autoDisposable(from(this, Lifecycle.Event.ON_DESTROY)))
|
||||
.subscribe(this::onFetchUserInfoSuccess, MainActivity::onFetchUserInfoFailure);
|
||||
}
|
||||
|
||||
private void onFetchUserInfoSuccess(Account me) {
|
||||
|
||||
// Add the header image and avatar from the account, into the navigation drawer header.
|
||||
|
||||
ImageView background = headerResult.getHeaderBackgroundView();
|
||||
|
@ -598,8 +586,8 @@ public final class MainActivity extends BottomSheetActivity implements ActionBut
|
|||
headerResult.setActiveProfile(accountManager.getActiveAccount().getId());
|
||||
}
|
||||
|
||||
private static void onFetchUserInfoFailure(Exception exception) {
|
||||
Log.e(TAG, "Failed to fetch user info. " + exception.getMessage());
|
||||
private static void onFetchUserInfoFailure(Throwable throwable) {
|
||||
Log.e(TAG, "Failed to fetch user info. " + throwable.getMessage());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
|
|
@ -176,7 +176,7 @@ public interface MastodonApi {
|
|||
Single<Status> unpinStatus(@Path("id") String statusId);
|
||||
|
||||
@GET("api/v1/accounts/verify_credentials")
|
||||
Call<Account> accountVerifyCredentials();
|
||||
Single<Account> accountVerifyCredentials();
|
||||
|
||||
@FormUrlEncoded
|
||||
@PATCH("api/v1/accounts/update_credentials")
|
||||
|
|
|
@ -31,6 +31,8 @@ import com.keylesspalace.tusky.entity.StringField
|
|||
import com.keylesspalace.tusky.network.MastodonApi
|
||||
import com.keylesspalace.tusky.util.*
|
||||
import io.reactivex.Single
|
||||
import io.reactivex.disposables.CompositeDisposable
|
||||
import io.reactivex.rxkotlin.addTo
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import okhttp3.MediaType
|
||||
import okhttp3.MultipartBody
|
||||
|
@ -63,32 +65,24 @@ class EditProfileViewModel @Inject constructor(
|
|||
|
||||
private var oldProfileData: Account? = null
|
||||
|
||||
private val callList: MutableList<Call<*>> = mutableListOf()
|
||||
private val disposeables = CompositeDisposable()
|
||||
|
||||
fun obtainProfile() {
|
||||
if(profileData.value == null || profileData.value is Error) {
|
||||
|
||||
profileData.postValue(Loading())
|
||||
|
||||
val call = mastodonApi.accountVerifyCredentials()
|
||||
call.enqueue(object : Callback<Account> {
|
||||
override fun onResponse(call: Call<Account>,
|
||||
response: Response<Account>) {
|
||||
if (response.isSuccessful) {
|
||||
val profile = response.body()
|
||||
oldProfileData = profile
|
||||
profileData.postValue(Success(profile))
|
||||
} else {
|
||||
profileData.postValue(Error())
|
||||
}
|
||||
}
|
||||
mastodonApi.accountVerifyCredentials()
|
||||
.subscribe(
|
||||
{profile ->
|
||||
oldProfileData = profile
|
||||
profileData.postValue(Success(profile))
|
||||
},
|
||||
{
|
||||
profileData.postValue(Error())
|
||||
})
|
||||
.addTo(disposeables)
|
||||
|
||||
override fun onFailure(call: Call<Account>, t: Throwable) {
|
||||
profileData.postValue(Error())
|
||||
}
|
||||
})
|
||||
|
||||
callList.add(call)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -138,6 +132,7 @@ class EditProfileViewModel @Inject constructor(
|
|||
}, {
|
||||
imageLiveData.postValue(Error())
|
||||
})
|
||||
.addTo(disposeables)
|
||||
}
|
||||
|
||||
fun save(newDisplayName: String, newNote: String, newLocked: Boolean, newFields: List<StringField>, context: Context) {
|
||||
|
@ -267,9 +262,7 @@ class EditProfileViewModel @Inject constructor(
|
|||
}
|
||||
|
||||
override fun onCleared() {
|
||||
callList.forEach {
|
||||
it.cancel()
|
||||
}
|
||||
disposeables.dispose()
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue