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 7eb365d314..0fc8b260a4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java @@ -304,6 +304,7 @@ import org.whispersystems.signalservice.api.SignalSessionLock; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; +import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Objects; @@ -449,6 +450,7 @@ public class ConversationParentFragment extends Fragment private GroupCallViewModel groupCallViewModel; private VoiceRecorderWakeLock voiceRecorderWakeLock; private DraftViewModel draftViewModel; + private KeyboardPagerViewModel keyboardPagerViewModel; private VoiceNoteMediaController voiceNoteMediaController; private VoiceNotePlayerView voiceNotePlayerView; private Material3OnScrollHelper material3OnScrollHelper; @@ -472,6 +474,8 @@ public class ConversationParentFragment extends Fragment private ConversationOptionsMenu.Provider menuProvider; + private Set previousPages; + public static ConversationParentFragment create(Intent intent) { ConversationParentFragment fragment = new ConversationParentFragment(); Bundle bundle = new Bundle(); @@ -2724,7 +2728,7 @@ public class ConversationParentFragment extends Fragment } private void initializeMediaKeyboardProviders() { - KeyboardPagerViewModel keyboardPagerViewModel = new ViewModelProvider(requireActivity()).get(KeyboardPagerViewModel.class); + keyboardPagerViewModel = new ViewModelProvider(requireActivity()).get(KeyboardPagerViewModel.class); switch (TextSecurePreferences.getMediaKeyboardMode(requireContext())) { case EMOJI: @@ -4234,12 +4238,19 @@ public class ConversationParentFragment extends Fragment @Override public void onEnterEditMode() { updateToggleButtonState(); + previousPages = keyboardPagerViewModel.pages().getValue(); + keyboardPagerViewModel.setOnlyPage(KeyboardPage.EMOJI); + onKeyboardChanged(KeyboardPage.EMOJI); } @Override public void onExitEditMode() { updateToggleButtonState(); draftViewModel.deleteMessageEditDraft(); + if (previousPages != null) { + keyboardPagerViewModel.setPages(previousPages); + previousPages = null; + } } @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyboard/KeyboardPagerViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/keyboard/KeyboardPagerViewModel.kt index 72bce57d52..cb52c0ab0b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyboard/KeyboardPagerViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyboard/KeyboardPagerViewModel.kt @@ -37,6 +37,10 @@ class KeyboardPagerViewModel : ViewModel() { fun page(): LiveData = page fun pages(): LiveData> = pages + fun setPages(pageOverride: Set) { + pages.value = pageOverride + } + @MainThread fun setOnlyPage(page: KeyboardPage) { pages.value = setOf(page)