From 764cbac7b709343c0890bc3e7a4b29d2a893d05b Mon Sep 17 00:00:00 2001 From: Conny Duck Date: Fri, 3 Nov 2017 10:09:09 +0100 Subject: [PATCH] fix an issue with avatars in notifications loading on the wrong thread --- .../tusky/util/NotificationMaker.java | 36 ++++++++----------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/com/keylesspalace/tusky/util/NotificationMaker.java b/app/src/main/java/com/keylesspalace/tusky/util/NotificationMaker.java index 5322cd48..74ba7ff5 100644 --- a/app/src/main/java/com/keylesspalace/tusky/util/NotificationMaker.java +++ b/app/src/main/java/com/keylesspalace/tusky/util/NotificationMaker.java @@ -22,7 +22,7 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Bitmap; -import android.graphics.drawable.Drawable; +import android.graphics.BitmapFactory; import android.os.Build; import android.preference.PreferenceManager; import android.provider.Settings; @@ -38,11 +38,11 @@ import com.keylesspalace.tusky.entity.Notification; import com.keylesspalace.tusky.receiver.NotificationClearBroadcastReceiver; import com.keylesspalace.tusky.view.RoundedTransformation; import com.squareup.picasso.Picasso; -import com.squareup.picasso.Target; import org.json.JSONArray; import org.json.JSONException; +import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -129,28 +129,20 @@ public class NotificationMaker { builder.setContentTitle(titleForType(context, body)) .setContentText(truncateWithEllipses(bodyForType(body), 40)); - Target target = new Target() { - @Override - public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { - builder.setLargeIcon(bitmap); - - NotificationManager notificationManager = (NotificationManager) - context.getSystemService(Context.NOTIFICATION_SERVICE); - notificationManager.notify(notifyId, builder.build()); - } - - @Override - public void onBitmapFailed(Drawable errorDrawable) {} + //load the avatar synchronously + Bitmap accountAvatar; + try { + accountAvatar = Picasso.with(context) + .load(body.account.avatar) + .transform(new RoundedTransformation(7, 0)) + .get(); + } catch (IOException e) { + Log.d(TAG, "error loading account avatar", e); + accountAvatar = BitmapFactory.decodeResource(context.getResources(), R.drawable.avatar_default); + } - @Override - public void onPrepareLoad(Drawable placeHolderDrawable) {} - }; + builder.setLargeIcon(accountAvatar); - Picasso.with(context) - .load(body.account.avatar) - .placeholder(R.drawable.avatar_default) - .transform(new RoundedTransformation(7, 0)) - .into(target); } else { try { String format = context.getString(R.string.notification_title_summary);