From af2e17df9eb1412035ca23f99ca3c30df9ba668b Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 30 Mar 2020 11:33:21 -0400 Subject: [PATCH] Ensure old typing observers are unsubscribed. --- .../securesms/conversation/ConversationFragment.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java index 6a8a0de61..3ad30c10e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java @@ -398,6 +398,8 @@ public class ConversationFragment extends Fragment } private void initializeResources() { + long oldThreadId = threadId; + this.recipient = Recipient.live(getActivity().getIntent().getParcelableExtra(ConversationActivity.RECIPIENT_EXTRA)); this.threadId = this.getActivity().getIntent().getLongExtra(ConversationActivity.THREAD_ID_EXTRA, -1); this.lastSeen = this.getActivity().getIntent().getLongExtra(ConversationActivity.LAST_SEEN_EXTRA, -1); @@ -407,6 +409,10 @@ public class ConversationFragment extends Fragment OnScrollListener scrollListener = new ConversationScrollListener(getActivity()); list.addOnScrollListener(scrollListener); + + if (oldThreadId != threadId) { + ApplicationContext.getInstance(requireContext()).getTypingStatusRepository().getTypists(oldThreadId).removeObservers(this); + } } private void initializeListAdapter() { @@ -440,6 +446,7 @@ public class ConversationFragment extends Fragment return; } + ApplicationContext.getInstance(requireContext()).getTypingStatusRepository().getTypists(threadId).removeObservers(this); ApplicationContext.getInstance(requireContext()).getTypingStatusRepository().getTypists(threadId).observe(this, typingState -> { List recipients; boolean replacedByIncomingMessage;