diff --git a/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowConfirmationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowConfirmationFragment.kt index 0c277d5d4..27751b791 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowConfirmationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowConfirmationFragment.kt @@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.badges.gifts.flow import android.content.DialogInterface import android.view.KeyEvent +import android.widget.EditText import android.widget.FrameLayout import android.widget.ImageView import androidx.activity.OnBackPressedCallback @@ -109,6 +110,10 @@ class GiftFlowConfirmationFragment : textInputViewHolder.onAttachedToWindow() inputAwareLayout.addOnKeyboardShownListener { + if (emojiKeyboard.isEmojiSearchMode) { + return@addOnKeyboardShownListener + } + inputAwareLayout.hideAttachedInput(true) emojiToggle.setImageResource(R.drawable.ic_emoji_smiley_24) } @@ -127,6 +132,25 @@ class GiftFlowConfirmationFragment : } ) + textInputViewHolder.bind( + TextInput.MultilineModel( + text = viewModel.snapshot.additionalMessage, + hint = DSLSettingsText.from(R.string.GiftFlowConfirmationFragment__add_a_message), + onTextChanged = { + viewModel.setAdditionalMessage(it) + }, + onEmojiToggleClicked = { + if (inputAwareLayout.isKeyboardOpen || (!inputAwareLayout.isKeyboardOpen && !inputAwareLayout.isInputOpen)) { + inputAwareLayout.show(it, emojiKeyboard) + emojiToggle.setImageResource(R.drawable.ic_keyboard_24) + } else { + inputAwareLayout.showSoftkey(it) + emojiToggle.setImageResource(R.drawable.ic_emoji_smiley_24) + } + } + ) + ) + lifecycleDisposable += viewModel.state.observeOn(AndroidSchedulers.mainThread()).subscribe { state -> adapter.submitList(getConfiguration(state).toMappingModelList()) @@ -142,25 +166,6 @@ class GiftFlowConfirmationFragment : } else { processingDonationPaymentDialog.dismiss() } - - textInputViewHolder.bind( - TextInput.MultilineModel( - text = state.additionalMessage, - hint = DSLSettingsText.from(R.string.GiftFlowConfirmationFragment__add_a_message), - onTextChanged = { - viewModel.setAdditionalMessage(it) - }, - onEmojiToggleClicked = { - if (inputAwareLayout.isKeyboardOpen || (!inputAwareLayout.isKeyboardOpen && !inputAwareLayout.isInputOpen)) { - inputAwareLayout.show(it, emojiKeyboard) - emojiToggle.setImageResource(R.drawable.ic_keyboard_24) - } else { - inputAwareLayout.showSoftkey(it) - emojiToggle.setImageResource(R.drawable.ic_emoji_smiley_24) - } - } - ) - ) } lifecycleDisposable.bindTo(viewLifecycleOwner) @@ -249,6 +254,10 @@ class GiftFlowConfirmationFragment : ) } + override fun onToolbarNavigationClicked() { + findNavController().popBackStack() + } + override fun openEmojiSearch() { emojiKeyboard.onOpenEmojiSearch() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowStartFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowStartFragment.kt index a2ad01f0a..6f454589e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowStartFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowStartFragment.kt @@ -14,6 +14,7 @@ import org.thoughtcrime.securesms.components.settings.app.subscription.models.Ne import org.thoughtcrime.securesms.components.settings.configure import org.thoughtcrime.securesms.components.settings.models.IndeterminateLoadingCircle import org.thoughtcrime.securesms.util.LifecycleDisposable +import org.thoughtcrime.securesms.util.ViewUtil import org.thoughtcrime.securesms.util.fragments.requireListener import org.thoughtcrime.securesms.util.navigation.safeNavigate @@ -50,6 +51,11 @@ class GiftFlowStartFragment : DSLSettingsFragment( } } + override fun onResume() { + super.onResume() + ViewUtil.hideKeyboard(requireContext(), requireView()) + } + private fun getConfiguration(state: GiftFlowState): DSLConfiguration { return configure { customPref( diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsFragment.kt index b7d4e95ac..1fc0ae507 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsFragment.kt @@ -36,7 +36,7 @@ abstract class DSLSettingsFragment( } toolbar?.setNavigationOnClickListener { - requireActivity().onBackPressed() + onToolbarNavigationClicked() } if (menuId != -1) { @@ -67,6 +67,10 @@ abstract class DSLSettingsFragment( return Material3OnScrollHelper(requireActivity(), toolbar) } + open fun onToolbarNavigationClicked() { + requireActivity().onBackPressed() + } + override fun onDestroyView() { super.onDestroyView() recyclerView = null diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/views/CircularProgressMaterialButton.kt b/app/src/main/java/org/thoughtcrime/securesms/util/views/CircularProgressMaterialButton.kt index fb70b91d7..a7617b4fd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/views/CircularProgressMaterialButton.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/views/CircularProgressMaterialButton.kt @@ -82,6 +82,10 @@ class CircularProgressMaterialButton @JvmOverloads constructor( } private fun transformTo(state: State, animate: Boolean) { + if (state == currentState && state == requestedState) { + return + } + requestedState = state if (animator?.isRunning == true) { return diff --git a/app/src/main/res/layout/gift_flow_start_fragment.xml b/app/src/main/res/layout/gift_flow_start_fragment.xml index d8994b89a..cbee94cb4 100644 --- a/app/src/main/res/layout/gift_flow_start_fragment.xml +++ b/app/src/main/res/layout/gift_flow_start_fragment.xml @@ -58,7 +58,7 @@