From f0414922be1e39f57251af388ced1bdc837431c3 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Thu, 3 Feb 2022 14:48:52 -0400 Subject: [PATCH] Fix a couple issues with fragmentization refactor. * Fix a crash from detached fragment. * Fix sticker search sends. --- .../conversation/ConversationParentFragment.java | 14 +++++++++++++- .../sticker/StickerKeyboardPageFragment.kt | 11 +++++++++-- .../sticker/StickerSearchDialogFragment.kt | 1 + 3 files changed, 23 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 cc4163faed..a09cea8ed7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java @@ -200,6 +200,8 @@ import org.thoughtcrime.securesms.keyboard.KeyboardPagerViewModel; import org.thoughtcrime.securesms.keyboard.emoji.EmojiKeyboardPageFragment; import org.thoughtcrime.securesms.keyboard.emoji.search.EmojiSearchFragment; import org.thoughtcrime.securesms.keyboard.gif.GifKeyboardPageFragment; +import org.thoughtcrime.securesms.keyboard.sticker.StickerKeyboardPageFragment; +import org.thoughtcrime.securesms.keyboard.sticker.StickerSearchDialogFragment; import org.thoughtcrime.securesms.keyvalue.PaymentsValues; import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.linkpreview.LinkPreview; @@ -338,7 +340,8 @@ public class ConversationParentFragment extends Fragment EmojiEventListener, GifKeyboardPageFragment.Host, EmojiKeyboardPageFragment.Callback, - EmojiSearchFragment.Callback + EmojiSearchFragment.Callback, + StickerKeyboardPageFragment.Callback { private static final int SHORTCUT_ICON_SIZE = Build.VERSION.SDK_INT >= 26 ? ViewUtil.dpToPx(72) : ViewUtil.dpToPx(48 + 16 * 2); @@ -2473,6 +2476,11 @@ public class ConversationParentFragment extends Fragment } private void onRecipientChanged(@NonNull Recipient recipient) { + if (getContext() == null) { + Log.w(TAG, "onRecipientChanged called in detached state. Ignoring."); + return; + } + Log.i(TAG, "onModified(" + recipient.getId() + ") " + recipient.getRegistered()); titleView.setTitle(glideRequests, recipient); titleView.setVerified(identityRecords.isVerified()); @@ -3460,6 +3468,10 @@ public class ConversationParentFragment extends Fragment return voiceNoteMediaController; } + @Override public void openStickerSearch() { + StickerSearchDialogFragment.show(getChildFragmentManager()); + } + // Listeners private final class DeleteCanceledVoiceNoteListener implements ListenableFuture.Listener { diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/StickerKeyboardPageFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/StickerKeyboardPageFragment.kt index 6dbcc33794..d45e62f8b6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/StickerKeyboardPageFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/StickerKeyboardPageFragment.kt @@ -87,11 +87,14 @@ class StickerKeyboardPageFragment : view.findViewById(R.id.sticker_keyboard_search_text).callbacks = object : KeyboardPageSearchView.Callbacks { override fun onClicked() { - StickerSearchDialogFragment.show(requireActivity().supportFragmentManager) + findListener()!!.openStickerSearch() } } - view.findViewById(R.id.sticker_search).setOnClickListener { StickerSearchDialogFragment.show(requireActivity().supportFragmentManager) } + view.findViewById(R.id.sticker_search).setOnClickListener { + findListener()!!.openStickerSearch() + } + view.findViewById(R.id.sticker_manage).setOnClickListener { findListener()?.onStickerManagementClicked() } ApplicationDependencies.getDatabaseObserver().registerStickerObserver(this) @@ -237,4 +240,8 @@ class StickerKeyboardPageFragment : } } } + + interface Callback { + fun openStickerSearch() + } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/StickerSearchDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/StickerSearchDialogFragment.kt index ef99a7a8ed..07ca8c5509 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/StickerSearchDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/StickerSearchDialogFragment.kt @@ -96,6 +96,7 @@ class StickerSearchDialogFragment : DialogFragment(), KeyboardStickerListAdapter override fun onStickerLongClicked(sticker: KeyboardStickerListAdapter.Sticker) = Unit companion object { + @JvmStatic fun show(fragmentManager: FragmentManager) { StickerSearchDialogFragment().show(fragmentManager, "TAG") }