fix off-thread UI interactions in ConversationItem

Fixes #2966
Closes #2973

// FREEBIE
This commit is contained in:
Jake McGinty 2015-04-13 10:30:22 -07:00 committed by Moxie Marlinspike
parent cb84cc39ce
commit 7aaedf500f

View File

@ -42,6 +42,7 @@ import android.widget.Toast;
import com.afollestad.materialdialogs.AlertDialogWrapper;
import org.thoughtcrime.securesms.ConversationFragment.SelectionClickListener;
import org.thoughtcrime.securesms.components.BubbleContainer;
import org.thoughtcrime.securesms.components.ForegroundImageView;
import org.thoughtcrime.securesms.contacts.ContactPhotoFactory;
import org.thoughtcrime.securesms.crypto.MasterSecret;
@ -59,12 +60,10 @@ import org.thoughtcrime.securesms.mms.PartAuthority;
import org.thoughtcrime.securesms.mms.Slide;
import org.thoughtcrime.securesms.mms.SlideDeck;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.components.BubbleContainer;
import org.thoughtcrime.securesms.util.DateUtils;
import org.thoughtcrime.securesms.util.Emoji;
import org.thoughtcrime.securesms.util.FutureTaskListener;
import org.thoughtcrime.securesms.util.ListenableFutureTask;
import org.thoughtcrime.securesms.util.ResUtil;
import java.util.Set;
@ -626,25 +625,35 @@ public class ConversationItem extends LinearLayout {
public void onSuccess(final SlideDeck slideDeck) {
if (slideDeck == null) return;
Slide slide = slideDeck.getThumbnailSlide(context);
if (slide != null) {
thumbnailFuture = slide.getThumbnail(context);
if (thumbnailFuture != null) {
Object tag = new Object();
mediaThumbnail.setTag(tag);
thumbnailListener = new ThumbnailListener(tag);
thumbnailFuture.addListener(thumbnailListener);
mediaThumbnail.setOnClickListener(new ThumbnailClickListener(slide));
return;
handler.post(new Runnable() {
@Override
public void run() {
Slide slide = slideDeck.getThumbnailSlide(context);
if (slide != null) {
thumbnailFuture = slide.getThumbnail(context);
if (thumbnailFuture != null) {
Object tag = new Object();
mediaThumbnail.setTag(tag);
thumbnailListener = new ThumbnailListener(tag);
thumbnailFuture.addListener(thumbnailListener);
mediaThumbnail.setOnClickListener(new ThumbnailClickListener(slide));
return;
}
}
mediaThumbnail.hide();
}
}
mediaThumbnail.hide();
});
}
@Override
public void onFailure(Throwable error) {
Log.w(TAG, error);
mediaThumbnail.hide();
handler.post(new Runnable() {
@Override
public void run() {
mediaThumbnail.hide();
}
});
}
}
}