Skip to content

Commit

Permalink
Fix leaking MessageDetailsActivity via list items.
Browse files Browse the repository at this point in the history
  • Loading branch information
cody-signal authored and greyson-signal committed Jun 7, 2020
1 parent 5b4d74b commit 13027dc
Showing 1 changed file with 25 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -81,23 +81,45 @@ protected void onFinishInflate() {
this.deliveryStatusView = findViewById(R.id.delivery_status);
}

@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
observeMember();
}

@Override
protected void onDetachedFromWindow() {
unsubscribeFromMember();
super.onDetachedFromWindow();
}

public void set(final GlideRequests glideRequests,
final MessageRecord record,
final RecipientDeliveryStatus member,
final boolean isPushGroup)
{
if (this.member != null) this.member.getRecipient().live().removeForeverObserver(this);
unsubscribeFromMember();

this.glideRequests = glideRequests;
this.member = member;
observeMember();

member.getRecipient().live().observeForever(this);
fromView.setText(member.getRecipient());
contactPhotoImage.setAvatar(glideRequests, member.getRecipient(), false);
setIssueIndicators(record, isPushGroup);
unidentifiedDeliveryIcon.setVisibility(TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(getContext()) && member.isUnidentified() ? VISIBLE : GONE);
}

private void observeMember() {
if (isAttachedToWindow() && member != null && member.getRecipient() != null) {
member.getRecipient().live().observeForever(this);
}
}

private void unsubscribeFromMember() {
if (member != null && member.getRecipient() != null) member.getRecipient().live().removeForeverObserver(this);
}

private void setIssueIndicators(final MessageRecord record,
final boolean isPushGroup)
{
Expand Down Expand Up @@ -162,7 +184,7 @@ private IdentityKeyMismatch getKeyMismatch(final MessageRecord record) {
}

public void unbind() {
if (this.member != null && this.member.getRecipient() != null) this.member.getRecipient().live().removeForeverObserver(this);
unsubscribeFromMember();
}

@Override
Expand Down

0 comments on commit 13027dc

Please sign in to comment.