From af89171cc71aacc1c62d2e61cfff641d1db50b8b Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Tue, 8 Oct 2024 15:19:40 -0500 Subject: [PATCH] Even better animator race guards --- .../java/com/cheogram/android/EmojiSearch.java | 3 ++- .../siacs/conversations/ui/ConversationFragment.java | 10 ++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/cheogram/java/com/cheogram/android/EmojiSearch.java b/src/cheogram/java/com/cheogram/android/EmojiSearch.java index 1d4a3f5719f89d3e11969f0630a97e0bd4e64883..03b90627ec3e64b77dd5e76beb9a08a033cb550c 100644 --- a/src/cheogram/java/com/cheogram/android/EmojiSearch.java +++ b/src/cheogram/java/com/cheogram/android/EmojiSearch.java @@ -291,13 +291,14 @@ public class EmojiSearch { }); } - public void search(final Activity activity, final String q) { + public void search(final Activity activity, final RecyclerView view, final String q) { executor.execute(() -> { final List results = find(q); try { // Acquire outside so to not block UI thread doingUpdate.acquire(); activity.runOnUiThread(() -> { + try { view.getItemAnimator().endAnimations(); } catch (final Exception e) { } submitList(results, () -> { activity.runOnUiThread(() -> doingUpdate.release()); }); diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index cb71af40537b5f8c170f49f75ef0fb27dac6d396..20154253cff56094c2964ad003d856390576e2ce 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -1623,6 +1623,13 @@ public class ConversationFragment extends XmppFragment return adapter; } + @Override + protected void onViewHidden() { + if (getRecyclerView() == null) return; + try { getRecyclerView().getItemAnimator().endAnimations(); } catch (final Exception e) { } + super.onViewHidden(); + } + @Override protected void onQuery(@Nullable CharSequence query) { if (!activity.xmppConnectionService.getBooleanPreference("message_autocomplete", R.bool.message_autocomplete)) return; @@ -1630,8 +1637,7 @@ public class ConversationFragment extends XmppFragment emojiDebounce.removeCallbacksAndMessages(null); emojiDebounce.postDelayed(() -> { if (getRecyclerView() == null) return; - try { getRecyclerView().getItemAnimator().endAnimations(); } catch (final Exception e) { } - adapter.search(activity, query.toString()); + adapter.search(activity, getRecyclerView(), query.toString()); }, 100L); } })