diff --git a/app/src/main/java/io/gnosis/safe/Tracker.kt b/app/src/main/java/io/gnosis/safe/Tracker.kt index 59313439b..f78fe178a 100644 --- a/app/src/main/java/io/gnosis/safe/Tracker.kt +++ b/app/src/main/java/io/gnosis/safe/Tracker.kt @@ -215,6 +215,7 @@ class Tracker internal constructor( val TRANSACTION_EXEC_EDIT_FEE_FIELDS = "user_edit_exec_tx_fee_fields" val TRANSACTION_EXEC_KEY_CHANGE = "user_select_exec_key_change" val TRANSACTION_EXEC_FAILED = "user_exec_tx_failed" + val TRANSACTIONS_EXEC_SUBMITTED = "user_transaction_exec_submitted" val BANNER_PASSCODE_SKIP = "user_banner_passcode_skip" val BANNER_PASSCODE_CREATE = "user_banner_passcode_create" val BANNER_OWNER_SKIP = "user_banner_owner_skip" @@ -314,7 +315,7 @@ enum class ScreenId(val value: String) { TRANSACTIONS_EXEC_REVIEW_ADVANCED("screen_exec_tx_review_advanced"), TRANSACTIONS_EXEC_EDIT_FEE("screen_edit_exec_tx_fee"), TRANSACTIONS_EXEC_SELECT_KEY("screen_select_exec_key"), - TRANSACTIONS_EXEC_SUBMITTED("screen_exec_tx_submitted"), + TRANSACTIONS_SUCCESS_SIGNER("screen_tx_signer_success"), SETTINGS_APP("screen_settings_app"), SETTINGS_APP_ADVANCED("screen_settings_app_advanced"), SETTINGS_APP_APPEARANCE("screen_settings_app_appearance"), diff --git a/app/src/main/java/io/gnosis/safe/di/components/ViewComponent.kt b/app/src/main/java/io/gnosis/safe/di/components/ViewComponent.kt index 9c03276a0..644e6c412 100644 --- a/app/src/main/java/io/gnosis/safe/di/components/ViewComponent.kt +++ b/app/src/main/java/io/gnosis/safe/di/components/ViewComponent.kt @@ -49,6 +49,7 @@ import io.gnosis.safe.ui.transactions.details.* import io.gnosis.safe.ui.transactions.execution.TxAdvancedParamsFragment import io.gnosis.safe.ui.transactions.execution.TxEditFee1559Fragment import io.gnosis.safe.ui.transactions.execution.TxEditFeeLegacyFragment +import io.gnosis.safe.ui.transactions.execution.TxSuccessFragment import io.gnosis.safe.ui.updates.UpdatesFragment import io.gnosis.safe.ui.whatsnew.WhatsNewDialog @@ -95,6 +96,8 @@ interface ViewComponent { fun inject(fragment: ConfirmRejectionFragment) + fun inject(fragment: TxSuccessFragment) + fun inject(fragment: SettingsFragment) fun inject(fragment: OwnerAddOptionsFragment) @@ -151,7 +154,7 @@ interface ViewComponent { fun inject(fragment: EditAdvancedParamsFragment) - fun inject(fragment: SuccessFragment) + fun inject(fragment: SendAssetSuccessFragment) fun inject(fragment: AddOwnerFirstFragment) diff --git a/app/src/main/java/io/gnosis/safe/ui/safe/send_funds/SendAssetReviewViewModel.kt b/app/src/main/java/io/gnosis/safe/ui/safe/send_funds/SendAssetReviewViewModel.kt index 0b60dad79..09ce5e422 100644 --- a/app/src/main/java/io/gnosis/safe/ui/safe/send_funds/SendAssetReviewViewModel.kt +++ b/app/src/main/java/io/gnosis/safe/ui/safe/send_funds/SendAssetReviewViewModel.kt @@ -248,7 +248,7 @@ class SendAssetReviewViewModel updateState { SendAssetReviewState( ViewAction.NavigateTo( - SendAssetReviewFragmentDirections.actionSendAssetReviewFragmentToSuccessFragment( + SendAssetReviewFragmentDirections.actionSendAssetReviewFragmentToSendAssetSuccessFragment( activeSafe.chain, safeTxHash, amountString, diff --git a/app/src/main/java/io/gnosis/safe/ui/safe/send_funds/SuccessFragment.kt b/app/src/main/java/io/gnosis/safe/ui/safe/send_funds/SendAssetSuccessFragment.kt similarity index 85% rename from app/src/main/java/io/gnosis/safe/ui/safe/send_funds/SuccessFragment.kt rename to app/src/main/java/io/gnosis/safe/ui/safe/send_funds/SendAssetSuccessFragment.kt index 9e8b40568..e541a1c7e 100644 --- a/app/src/main/java/io/gnosis/safe/ui/safe/send_funds/SuccessFragment.kt +++ b/app/src/main/java/io/gnosis/safe/ui/safe/send_funds/SendAssetSuccessFragment.kt @@ -9,15 +9,15 @@ import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import io.gnosis.safe.R import io.gnosis.safe.ScreenId -import io.gnosis.safe.databinding.FragmentSuccessBinding +import io.gnosis.safe.databinding.FragmentSendAssetSuccessBinding import io.gnosis.safe.di.components.ViewComponent import io.gnosis.safe.ui.base.fragment.BaseViewBindingFragment import io.gnosis.safe.ui.transactions.TransactionsFragmentDirections import io.gnosis.safe.ui.transactions.TxPagerAdapter -class SuccessFragment : BaseViewBindingFragment() { +class SendAssetSuccessFragment : BaseViewBindingFragment() { - private val navArgs by navArgs() + private val navArgs by navArgs() private val chain by lazy { navArgs.chain } private val txId by lazy { navArgs.txId } private val amount by lazy { navArgs.amount } @@ -32,8 +32,8 @@ class SuccessFragment : BaseViewBindingFragment() { override fun inflateBinding( inflater: LayoutInflater, container: ViewGroup? - ): FragmentSuccessBinding = - FragmentSuccessBinding.inflate(inflater, container, false) + ): FragmentSendAssetSuccessBinding = + FragmentSendAssetSuccessBinding.inflate(inflater, container, false) override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -44,7 +44,7 @@ class SuccessFragment : BaseViewBindingFragment() { override fun handleOnBackPressed() {} }) with(binding) { - description.text = getString(R.string.tx_submitted_desc, amount, token) + description.text = getString(R.string.tx_queued_desc, amount, token) viewDetailsButton.setOnClickListener { findNavController().popBackStack(R.id.assetsFragment, false) with(findNavController()) { diff --git a/app/src/main/java/io/gnosis/safe/ui/transactions/execution/TxSuccessFragment.kt b/app/src/main/java/io/gnosis/safe/ui/transactions/execution/TxSuccessFragment.kt new file mode 100644 index 000000000..81991ba05 --- /dev/null +++ b/app/src/main/java/io/gnosis/safe/ui/transactions/execution/TxSuccessFragment.kt @@ -0,0 +1,48 @@ +package io.gnosis.safe.ui.transactions.execution + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.activity.OnBackPressedCallback +import androidx.navigation.fragment.findNavController +import io.gnosis.safe.R +import io.gnosis.safe.ScreenId +import io.gnosis.safe.databinding.FragmentTxSuccessBinding +import io.gnosis.safe.di.components.ViewComponent +import io.gnosis.safe.ui.base.fragment.BaseViewBindingFragment + +class TxSuccessFragment: BaseViewBindingFragment() { + + override fun screenId() = ScreenId.TRANSACTIONS_SUCCESS_SIGNER + + override fun inject(component: ViewComponent) { + component.inject(this) + } + + override fun inflateBinding( + inflater: LayoutInflater, + container: ViewGroup? + ): FragmentTxSuccessBinding = + FragmentTxSuccessBinding.inflate(inflater, container, false) + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + // disable default back navigation + requireActivity().onBackPressedDispatcher.addCallback( + viewLifecycleOwner, + object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() {} + }) + with(binding) { + doneButton.setOnClickListener { + findNavController().popBackStack(R.id.transactionDetailsFragment, false) + } + } + } + + override fun onResume() { + super.onResume() + binding.lottieSuccess.playAnimation() + } +} diff --git a/app/src/main/res/layout/fragment_success.xml b/app/src/main/res/layout/fragment_send_asset_success.xml similarity index 95% rename from app/src/main/res/layout/fragment_success.xml rename to app/src/main/res/layout/fragment_send_asset_success.xml index bc43985af..057182f4e 100644 --- a/app/src/main/res/layout/fragment_success.xml +++ b/app/src/main/res/layout/fragment_send_asset_success.xml @@ -23,7 +23,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="32dp" - android:text="@string/tx_submitted" + android:text="@string/tx_queued" android:textSize="17sp" app:layout_constraintBottom_toTopOf="@+id/description" app:layout_constraintEnd_toEndOf="parent" @@ -40,7 +40,7 @@ android:layout_marginTop="12dp" android:layout_marginEnd="56dp" android:gravity="center" - android:text="@string/tx_submitted_desc" + android:text="@string/tx_queued_desc" android:textSize="17sp" app:layout_constraintBottom_toTopOf="@+id/view_details_button" app:layout_constraintEnd_toEndOf="parent" @@ -55,7 +55,7 @@ android:layout_marginStart="@dimen/default_margin" android:layout_marginTop="24dp" android:layout_marginEnd="@dimen/default_margin" - android:text="@string/tx_submitted_view_details" + android:text="@string/tx_queued_view_details" app:layout_constraintBottom_toTopOf="@+id/done_button" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/app/src/main/res/layout/fragment_tx_success.xml b/app/src/main/res/layout/fragment_tx_success.xml new file mode 100644 index 000000000..51e87f6de --- /dev/null +++ b/app/src/main/res/layout/fragment_tx_success.xml @@ -0,0 +1,65 @@ + + + + + + + + + +