mirror of
https://github.com/oxen-io/session-android.git
synced 2025-06-13 21:38:35 +00:00
Fix leaking MessageDetailsActivity via list items.
This commit is contained in:
parent
5b4d74b7fe
commit
13027dc44b
@ -81,23 +81,45 @@ public class MessageRecipientListItem extends RelativeLayout
|
|||||||
this.deliveryStatusView = findViewById(R.id.delivery_status);
|
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,
|
public void set(final GlideRequests glideRequests,
|
||||||
final MessageRecord record,
|
final MessageRecord record,
|
||||||
final RecipientDeliveryStatus member,
|
final RecipientDeliveryStatus member,
|
||||||
final boolean isPushGroup)
|
final boolean isPushGroup)
|
||||||
{
|
{
|
||||||
if (this.member != null) this.member.getRecipient().live().removeForeverObserver(this);
|
unsubscribeFromMember();
|
||||||
|
|
||||||
this.glideRequests = glideRequests;
|
this.glideRequests = glideRequests;
|
||||||
this.member = member;
|
this.member = member;
|
||||||
|
observeMember();
|
||||||
|
|
||||||
member.getRecipient().live().observeForever(this);
|
|
||||||
fromView.setText(member.getRecipient());
|
fromView.setText(member.getRecipient());
|
||||||
contactPhotoImage.setAvatar(glideRequests, member.getRecipient(), false);
|
contactPhotoImage.setAvatar(glideRequests, member.getRecipient(), false);
|
||||||
setIssueIndicators(record, isPushGroup);
|
setIssueIndicators(record, isPushGroup);
|
||||||
unidentifiedDeliveryIcon.setVisibility(TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(getContext()) && member.isUnidentified() ? VISIBLE : GONE);
|
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,
|
private void setIssueIndicators(final MessageRecord record,
|
||||||
final boolean isPushGroup)
|
final boolean isPushGroup)
|
||||||
{
|
{
|
||||||
@ -162,7 +184,7 @@ public class MessageRecipientListItem extends RelativeLayout
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void unbind() {
|
public void unbind() {
|
||||||
if (this.member != null && this.member.getRecipient() != null) this.member.getRecipient().live().removeForeverObserver(this);
|
unsubscribeFromMember();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
x
Reference in New Issue
Block a user