diff options
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/withdraw/manual/ManualWithdrawSuccessFragment.kt')
-rw-r--r-- | wallet/src/main/java/net/taler/wallet/withdraw/manual/ManualWithdrawSuccessFragment.kt | 69 |
1 files changed, 44 insertions, 25 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/withdraw/manual/ManualWithdrawSuccessFragment.kt b/wallet/src/main/java/net/taler/wallet/withdraw/manual/ManualWithdrawSuccessFragment.kt index 3102123..63413c2 100644 --- a/wallet/src/main/java/net/taler/wallet/withdraw/manual/ManualWithdrawSuccessFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/withdraw/manual/ManualWithdrawSuccessFragment.kt @@ -16,59 +16,78 @@ package net.taler.wallet.withdraw.manual -import android.content.Intent import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.appcompat.app.AppCompatActivity import androidx.compose.ui.platform.ComposeView import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController -import net.taler.common.startActivitySafe +import net.taler.common.openUri +import net.taler.common.shareText import net.taler.wallet.MainViewModel import net.taler.wallet.R import net.taler.wallet.compose.TalerSurface +import net.taler.wallet.withdraw.TransferData import net.taler.wallet.withdraw.WithdrawStatus class ManualWithdrawSuccessFragment : Fragment() { private val model: MainViewModel by activityViewModels() - private val transactionManager by lazy { model.transactionManager } private val withdrawManager by lazy { model.withdrawManager } + private val balanceManager by lazy { model.balanceManager } + + private lateinit var status: WithdrawStatus.ManualTransferRequired + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?, ): View = ComposeView(requireContext()).apply { - val status = withdrawManager.withdrawStatus.value as WithdrawStatus.ManualTransferRequired - val intent = Intent().apply { - data = status.uri - } - // TODO test if this works with an actual payto:// handling app - val componentName = intent.resolveActivity(requireContext().packageManager) - val onBankAppClick = if (componentName == null) null else { - { requireContext().startActivitySafe(intent) } - } - val tid = status.transactionId - val onCancelClick = if (tid == null) null else { - { - transactionManager.deleteTransaction(tid) - findNavController().navigate(R.id.action_nav_exchange_manual_withdrawal_success_to_nav_main) + status = withdrawManager.withdrawStatus.value as WithdrawStatus.ManualTransferRequired + + // Set action bar subtitle and unset on exit + if (status.withdrawalTransfers.size > 1) { + val activity = requireActivity() as AppCompatActivity + + activity.apply { + supportActionBar?.subtitle = getString(R.string.withdraw_subtitle) + } + + findNavController().addOnDestinationChangedListener { controller, destination, args -> + if (destination.id != R.id.nav_exchange_manual_withdrawal_success) { + activity.apply { + supportActionBar?.subtitle = null + } + } } } + setContent { TalerSurface { - when (status) { - is WithdrawStatus.ManualTransferRequiredBitcoin -> { - ScreenBitcoin(status, onBankAppClick, onCancelClick) - } - is WithdrawStatus.ManualTransferRequiredIBAN -> { - ScreenIBAN(status, onBankAppClick, onCancelClick) - } - } + ScreenTransfer( + status = status, + spec = balanceManager.getSpecForCurrency(status.transactionAmountRaw.currency), + bankAppClick = { onBankAppClick(it) }, + shareClick = { onShareClick(it) }, + ) } } } + private fun onBankAppClick(transfer: TransferData) { + requireContext().openUri( + uri = transfer.withdrawalAccount.paytoUri, + title = requireContext().getString(R.string.share_payment) + ) + } + + private fun onShareClick(transfer: TransferData) { + requireContext().shareText( + text = transfer.withdrawalAccount.paytoUri, + ) + } + override fun onStart() { super.onStart() activity?.setTitle(R.string.withdraw_title) |