From 570b39f82ee8ae4a3c17bd49a2f4278f7df60599 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 17 Mar 2022 09:00:10 -0400 Subject: [PATCH] Debounce menu invalidations in conversation. --- .../conversation/ConversationParentFragment.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java index eb12e0af6..9026afa11 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java @@ -109,6 +109,7 @@ import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.ShortcutLauncherActivity; import org.thoughtcrime.securesms.TransportOption; import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel; +import org.thoughtcrime.securesms.util.Debouncer; import org.thoughtcrime.securesms.util.LifecycleDisposable; import org.thoughtcrime.securesms.verify.VerifyIdentityActivity; import org.thoughtcrime.securesms.attachments.Attachment; @@ -442,7 +443,8 @@ public class ConversationParentFragment extends Fragment private boolean isSecurityInitialized = false; private boolean isSearchRequested = false; - private final LifecycleDisposable disposables = new LifecycleDisposable(); + private final LifecycleDisposable disposables = new LifecycleDisposable(); + private final Debouncer optionsMenuDebouncer = new Debouncer(50); private volatile boolean screenInitialized = false; @@ -1109,7 +1111,11 @@ public class ConversationParentFragment extends Fragment public void invalidateOptionsMenu() { if (!isSearchRequested && getActivity() != null) { - onCreateOptionsMenu(toolbar.getMenu(), requireActivity().getMenuInflater()); + optionsMenuDebouncer.publish(() -> { + if (getActivity() != null) { + onCreateOptionsMenu(toolbar.getMenu(), requireActivity().getMenuInflater()); + } + }); } } @@ -2196,7 +2202,7 @@ public class ConversationParentFragment extends Fragment } protected void initializeActionBar() { - onCreateOptionsMenu(toolbar.getMenu(), requireActivity().getMenuInflater()); + invalidateOptionsMenu(); toolbar.setOnMenuItemClickListener(this::onOptionsItemSelected); if (isInBubble()) {