commit c06c869b5d0d22f3d22c210009400be3dff8c41d parent 487a85bfc62399f299d031c0fe4c52fabcbbc18e Author: Iván Ávalos <avalos@disroot.org> Date: Wed, 18 Mar 2026 14:03:38 +0100 [wallet] cleanup nav_graph.xml Diffstat:
19 files changed, 231 insertions(+), 268 deletions(-)
diff --git a/wallet/src/main/java/net/taler/wallet/HandleUriFragment.kt b/wallet/src/main/java/net/taler/wallet/HandleUriFragment.kt @@ -116,7 +116,7 @@ class HandleUriFragment: Fragment() { if (u.startsWith("payto://", ignoreCase = true)) { Log.v(TAG, "navigating with paytoUri!") val bundle = bundleOf("uri" to u) - findNavController().navigate(R.id.action_handleUri_to_nav_payto_uri, bundle) + findNavController().navigate(R.id.action_global_paytoUri, bundle) return@observe } @@ -145,7 +145,7 @@ class HandleUriFragment: Fragment() { when { action.startsWith("pay/", ignoreCase = true) -> run { Log.v(TAG, "navigating!") - findNavController().navigate(R.id.action_handleUri_to_promptPayment) + findNavController().navigate(R.id.action_global_promptPayment) model.paymentManager.preparePay(u2) } action.startsWith("withdraw/", ignoreCase = true) -> run { @@ -156,7 +156,7 @@ class HandleUriFragment: Fragment() { "editableCurrency" to false, ) model.withdrawManager.resetWithdrawal() - findNavController().navigate(R.id.action_handleUri_to_promptWithdraw, args) + findNavController().navigate(R.id.action_global_promptWithdraw, args) } action.startsWith("withdraw-exchange/", ignoreCase = true) -> run { @@ -166,7 +166,7 @@ class HandleUriFragment: Fragment() { "editableCurrency" to false, ) model.withdrawManager.resetWithdrawal() - findNavController().navigate(R.id.action_handleUri_to_promptWithdraw, args) + findNavController().navigate(R.id.action_global_promptWithdraw, args) } action.startsWith("refund/", ignoreCase = true) -> run { @@ -174,22 +174,22 @@ class HandleUriFragment: Fragment() { model.refundManager.refund(u2).observe(viewLifecycleOwner, Observer(::onRefundResponse)) } action.startsWith("pay-pull/", ignoreCase = true) -> run { - findNavController().navigate(R.id.action_handleUri_to_promptPullPayment) + findNavController().navigate(R.id.action_global_promptPullPayment) model.peerManager.preparePeerPullDebit(u2) } action.startsWith("pay-push/", ignoreCase = true) -> run { - findNavController().navigate(R.id.action_handleUri_to_promptPushPayment) + findNavController().navigate(R.id.action_global_promptPushPayment) model.peerManager.preparePeerPushCredit(u2) } action.startsWith("pay-template/", ignoreCase = true) -> { val bundle = bundleOf("uri" to u2) - findNavController().navigate(R.id.action_handleUri_to_promptPayTemplate, bundle) + findNavController().navigate(R.id.action_global_promptPayTemplate, bundle) } action.startsWith("dev-experiment/", ignoreCase = true) -> { model.applyDevExperiment(u2) { error -> showError(error) } - findNavController().navigate(R.id.nav_main) + findNavController().navigate(R.id.action_global_main) } else -> { showError(R.string.error_unsupported_uri, "From: $from\nURI: $u2") diff --git a/wallet/src/main/java/net/taler/wallet/UriInputFragment.kt b/wallet/src/main/java/net/taler/wallet/UriInputFragment.kt @@ -68,7 +68,7 @@ class UriInputFragment : Fragment() { trimmedText?.startsWith("payto://", ignoreCase = true) == true) { ui.uriLayout.error = null val args = bundleOf("uri" to trimmedText.toString(), "from" to "URI input") - findNavController().navigate(R.id.action_global_handle_uri, args) + findNavController().navigate(R.id.action_global_handleUri, args) } else { ui.uriLayout.error = getString(R.string.uri_invalid) } diff --git a/wallet/src/main/java/net/taler/wallet/accounts/AccountsFragment.kt b/wallet/src/main/java/net/taler/wallet/accounts/AccountsFragment.kt @@ -114,7 +114,7 @@ class BankAccountsFragment: Fragment() { state = tooltipState, ) { FloatingActionButton(onClick = { - findNavController().navigate(R.id.action_nav_bank_accounts_to_add_bank_account) + findNavController().navigate(R.id.action_bankAccounts_to_addBankAccount) }) { Icon(Icons.Default.Add, contentDescription = null) } @@ -132,7 +132,7 @@ class BankAccountsFragment: Fragment() { onEdit = { account -> // TODO: navigate val args = bundleOf("bankAccountId" to account.bankAccountId) - findNavController().navigate(R.id.action_nav_bank_accounts_to_add_bank_account, args) + findNavController().navigate(R.id.action_bankAccounts_to_addBankAccount, args) }, onForget = { account -> model.accountManager.forgetBankAccount(account.bankAccountId) { diff --git a/wallet/src/main/java/net/taler/wallet/deposit/DepositFragment.kt b/wallet/src/main/java/net/taler/wallet/deposit/DepositFragment.kt @@ -108,7 +108,7 @@ class DepositFragment : Fragment() { depositManager.selectAccount(account) }, onManageBankAccounts = { - findNavController().navigate(R.id.action_nav_deposit_to_known_bank_accounts) + findNavController().navigate(R.id.action_global_bankAccounts) } ) } @@ -159,7 +159,7 @@ class DepositFragment : Fragment() { } is DepositState.Success -> { - findNavController().navigate(R.id.action_nav_deposit_to_nav_main) + findNavController().navigate(R.id.action_global_main) } else -> {} diff --git a/wallet/src/main/java/net/taler/wallet/deposit/PayToUriFragment.kt b/wallet/src/main/java/net/taler/wallet/deposit/PayToUriFragment.kt @@ -91,7 +91,7 @@ class PayToUriFragment : Fragment() { "IBAN" to iban, ) findNavController().navigate( - R.id.action_nav_payto_uri_to_nav_deposit, bundle) + R.id.action_global_deposit, bundle) }, getCurrencySpec = exchangeManager::getSpecForCurrency, ) else Text( diff --git a/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeListFragment.kt b/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeListFragment.kt @@ -171,12 +171,12 @@ open class ExchangeListFragment : Fragment(), ExchangeClickListener { "exchangeBaseUrl" to item.exchangeBaseUrl, "amount" to item.currency?.let { Amount.zero(it).toJSONString() }, ) - findNavController().navigate(R.id.promptWithdraw, args) + findNavController().navigate(R.id.action_global_promptWithdraw, args) } override fun onPeerReceive(item: ExchangeItem) { model.selectScope(item.scopeInfo) - findNavController().navigate(R.id.nav_peer_pull) + findNavController().navigate(R.id.action_global_outgoingPull) } override fun onExchangeReload(item: ExchangeItem) { @@ -204,12 +204,12 @@ open class ExchangeListFragment : Fragment(), ExchangeClickListener { "exchangeBaseUrl" to item.exchangeBaseUrl, "readOnly" to true, ) - findNavController().navigate(R.id.action_global_reviewExchangeTos, bundle) + findNavController().navigate(R.id.action_global_reviewExchangeTOS, bundle) } override fun onExchangeTosAccept(item: ExchangeItem) { val bundle = bundleOf("exchangeBaseUrl" to item.exchangeBaseUrl) - findNavController().navigate(R.id.action_global_reviewExchangeTos, bundle) + findNavController().navigate(R.id.action_global_reviewExchangeTOS, bundle) } override fun onExchangeTosForget(item: ExchangeItem) { diff --git a/wallet/src/main/java/net/taler/wallet/main/MainActivity.kt b/wallet/src/main/java/net/taler/wallet/main/MainActivity.kt @@ -340,7 +340,7 @@ class MainActivity : AppCompatActivity(), OnPreferenceStartFragmentCallback { private fun handleTalerUri(uri: String, from: String) { val args = bundleOf("uri" to uri, "from" to from) - nav.navigate(R.id.action_global_handle_uri, args) + nav.navigate(R.id.action_global_handleUri, args) } override fun onPreferenceStartFragment( @@ -348,9 +348,9 @@ class MainActivity : AppCompatActivity(), OnPreferenceStartFragmentCallback { pref: Preference, ): Boolean { when (pref.key) { - "pref_exchanges" -> nav.navigate(R.id.nav_settings_exchanges) - "pref_accounts" -> nav.navigate(R.id.bankAccountsFragment) - "pref_donau" -> nav.navigate(R.id.nav_settings_donau) + "pref_exchanges" -> nav.navigate(R.id.action_main_to_exchangeList) + "pref_accounts" -> nav.navigate(R.id.action_main_to_bankAccounts) + "pref_donau" -> nav.navigate(R.id.action_main_to_setDonau) } return true } diff --git a/wallet/src/main/java/net/taler/wallet/main/MainFragment.kt b/wallet/src/main/java/net/taler/wallet/main/MainFragment.kt @@ -69,6 +69,8 @@ import net.taler.wallet.settings.SettingsFragment import net.taler.wallet.transactions.Transaction import net.taler.wallet.transactions.TransactionMajorState import net.taler.wallet.transactions.TransactionPayment +import net.taler.wallet.transactions.TransactionPeerPullDebit +import net.taler.wallet.transactions.TransactionPeerPushCredit import net.taler.wallet.transactions.TransactionState import net.taler.wallet.transactions.TransactionStateFilter.Nonfinal @@ -176,7 +178,7 @@ class MainFragment: Fragment() { "uri" to "taler://withdraw-exchange/exchange.taler-ops.ch/", "from" to "Withdraw CHF button", ) - findNavController().navigate(R.id.action_global_handle_uri, args) + findNavController().navigate(R.id.action_global_handleUri, args) }, onGetDemoMoneyClicked = { model.withdrawManager.withdrawTestBalance() @@ -206,7 +208,7 @@ class MainFragment: Fragment() { }, onStatementClicked = { findNavController().navigate( - R.id.nav_donau_statement, + R.id.action_main_to_donauStatement, bundleOf("host" to it), ) } @@ -303,23 +305,23 @@ class MainFragment: Fragment() { private fun onSend() { model.settingsManager.saveActionButtonUsed(requireContext()) - findNavController().navigate(R.id.nav_peer_push) + findNavController().navigate(R.id.action_global_outgoingPush) } private fun onReceive() { model.settingsManager.saveActionButtonUsed(requireContext()) - findNavController().navigate(R.id.nav_peer_pull) + findNavController().navigate(R.id.action_global_outgoingPull) } private fun onDeposit() { model.settingsManager.saveActionButtonUsed(requireContext()) - findNavController().navigate(R.id.nav_deposit) + findNavController().navigate(R.id.action_global_deposit) } private fun onWithdraw() { model.settingsManager.saveActionButtonUsed(requireContext()) model.withdrawManager.resetWithdrawal() - findNavController().navigate(R.id.promptWithdraw) + findNavController().navigate(R.id.action_global_promptWithdraw) } private fun onScanQr() { @@ -329,12 +331,12 @@ class MainFragment: Fragment() { private fun onEnterUri() { model.settingsManager.saveActionButtonUsed(requireContext()) - findNavController().navigate(R.id.nav_uri_input) + findNavController().navigate(R.id.action_main_to_uriInput) } private fun onShoppingDiscovery() { model.settingsManager.saveActionButtonUsed(requireContext()) - findNavController().navigate(R.id.nav_shopping) + findNavController().navigate(R.id.action_main_to_exchangeShopping) } } diff --git a/wallet/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt b/wallet/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt @@ -99,7 +99,7 @@ class PromptPaymentFragment: Fragment(), ProductImageClickListener { }, onSetupDonau = { donauBaseUrl -> findNavController().navigate( - R.id.nav_settings_donau, + R.id.action_main_to_setDonau, bundleOf( "donauBaseUrl" to donauBaseUrl, "saveShouldExit" to true, @@ -158,9 +158,9 @@ class PromptPaymentFragment: Fragment(), ProductImageClickListener { private fun navigateToTransaction(id: String?) { lifecycleScope.launch { if (id != null && transactionManager.selectTransaction(id)) { - findNavController().navigate(R.id.action_promptPayment_to_nav_transactions_detail_payment) + findNavController().navigate(R.id.action_global_transactionPayment) } else { - findNavController().navigate(R.id.action_promptPayment_to_nav_main) + findNavController().navigate(R.id.action_global_main) } } } diff --git a/wallet/src/main/java/net/taler/wallet/peer/IncomingPullPaymentFragment.kt b/wallet/src/main/java/net/taler/wallet/peer/IncomingPullPaymentFragment.kt @@ -64,9 +64,9 @@ class IncomingPullPaymentFragment : Fragment() { peerManager.incomingPullState.collect { if (it is IncomingAccepted) { if (transactionManager.selectTransaction(it.transactionId)) { - findNavController().navigate(R.id.action_promptPullPayment_to_transaction_detail_peer) + findNavController().navigate(R.id.action_global_transactionPeer) } else { - findNavController().navigate(R.id.action_promptPullPayment_to_nav_main) + findNavController().navigate(R.id.action_global_main) } } else if (it is IncomingError) { if (model.devMode.value == true) { diff --git a/wallet/src/main/java/net/taler/wallet/peer/IncomingPushPaymentFragment.kt b/wallet/src/main/java/net/taler/wallet/peer/IncomingPushPaymentFragment.kt @@ -56,7 +56,7 @@ class IncomingPushPaymentFragment : Fragment() { IncomingComposable(state, incomingPush) { terms -> if (terms is IncomingTosReview) { val args = bundleOf("exchangeBaseUrl" to terms.exchangeBaseUrl) - findNavController().navigate(R.id.action_global_reviewExchangeTos, args) + findNavController().navigate(R.id.action_global_reviewExchangeTOS, args) } else { peerManager.confirmPeerPushCredit(terms) } @@ -74,9 +74,9 @@ class IncomingPushPaymentFragment : Fragment() { Log.d(TAG, "incomingPushState is $it") if (it is IncomingAccepted) { if (transactionManager.selectTransaction(it.transactionId)) { - findNavController().navigate(R.id.action_promptPushPayment_to_transaction_detail_peer) + findNavController().navigate(R.id.action_global_transactionPeer) } else { - findNavController().navigate(R.id.action_promptPushPayment_to_nav_main) + findNavController().navigate(R.id.action_global_main) } } else if (it is IncomingError) { if (model.devMode.value == true) { diff --git a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullFragment.kt b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullFragment.kt @@ -87,9 +87,9 @@ class OutgoingPullFragment : Fragment() { peerManager.pullState.collect { if (it is OutgoingResponse) { if (transactionManager.selectTransaction(it.transactionId)) { - findNavController().navigate(R.id.action_nav_peer_pull_to_nav_transactions_detail_peer) + findNavController().navigate(R.id.action_global_transactionPeer) } else { - findNavController().navigate(R.id.action_nav_peer_pull_to_nav_main) + findNavController().navigate(R.id.action_global_main) } } @@ -118,7 +118,7 @@ class OutgoingPullFragment : Fragment() { private fun onTosAccept(exchangeBaseUrl: String) { val bundle = bundleOf("exchangeBaseUrl" to exchangeBaseUrl) - findNavController().navigate(R.id.action_global_reviewExchangeTos, bundle) + findNavController().navigate(R.id.action_global_reviewExchangeTOS, bundle) } private fun onCreateInvoice(amount: AmountScope, summary: String, hours: Long, exchangeBaseUrl: String) { diff --git a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt @@ -50,7 +50,7 @@ class OutgoingPushFragment : Fragment() { // hacky way to change back action until we have navigation for compose private val backPressedCallback = object : OnBackPressedCallback(false) { override fun handleOnBackPressed() { - findNavController().navigate(R.id.action_nav_peer_push_to_nav_main) + findNavController().navigate(R.id.action_global_main) } } @@ -93,9 +93,9 @@ class OutgoingPushFragment : Fragment() { peerManager.pushState.collect { if (it is OutgoingResponse) { if (transactionManager.selectTransaction(it.transactionId)) { - findNavController().navigate(R.id.action_nav_peer_push_to_nav_transactions_detail_peer) + findNavController().navigate(R.id.action_global_transactionPeer) } else { - findNavController().navigate(R.id.action_nav_peer_push_to_nav_main) + findNavController().navigate(R.id.action_global_main) } } diff --git a/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt b/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt @@ -114,7 +114,7 @@ class SettingsFragment : PreferenceFragmentCompat() { private val dbImportLauncher = registerForActivityResult(OpenDocument()) { uri -> Snackbar.make(requireView(), getString(R.string.settings_db_import_message), LENGTH_LONG).show() - findNavController().navigate(R.id.nav_main) + findNavController().navigate(R.id.action_global_main) settingsManager.importDb(uri) } @@ -194,7 +194,7 @@ class SettingsFragment : PreferenceFragmentCompat() { prefWithdrawTest.setOnPreferenceClickListener { withdrawManager.withdrawTestBalance() Snackbar.make(requireView(), getString(R.string.settings_test_withdrawal), LENGTH_LONG).show() - findNavController().navigate(R.id.nav_main) + findNavController().navigate(R.id.action_global_main) true } @@ -203,7 +203,7 @@ class SettingsFragment : PreferenceFragmentCompat() { true } prefStats.setOnPreferenceClickListener { - findNavController().navigate(R.id.nav_performance_stats) + findNavController().navigate(R.id.action_main_to_performanceStats) true } prefExportDb.setOnPreferenceClickListener { @@ -219,7 +219,7 @@ class SettingsFragment : PreferenceFragmentCompat() { requireActivity().showError(error) } Snackbar.make(requireView(), getString(R.string.settings_test_running), LENGTH_LONG).show() - findNavController().navigate(R.id.nav_main) + findNavController().navigate(R.id.action_global_main) true } prefReset.setOnPreferenceClickListener { diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionDepositFragment.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionDepositFragment.kt @@ -56,7 +56,7 @@ class TransactionDepositFragment : TransactionDetailFragment() { fun onConfirmManual(showQrCodes: Boolean = false) { findNavController().navigate( - R.id.nav_wire_transfer_details, + R.id.action_global_wireTransferDetails, bundleOf("showQrCodes" to showQrCodes) ) } diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt @@ -85,7 +85,7 @@ class TransactionWithdrawalFragment : TransactionDetailFragment() { fun onWireTransferSteps(showQrCodes: Boolean = false) { findNavController().navigate( - R.id.nav_wire_transfer_details, + R.id.action_global_wireTransferDetails, bundleOf("showQrCodes" to showQrCodes) ) } diff --git a/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt b/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt @@ -47,8 +47,6 @@ import net.taler.wallet.backend.TalerErrorInfo import net.taler.common.CurrencySpecification import net.taler.common.Merchant import net.taler.common.RelativeTime -import net.taler.wallet.accounts.PaytoUri -import net.taler.wallet.accounts.PaytoUriBitcoin import net.taler.wallet.accounts.PaytoUriCyclos import net.taler.wallet.accounts.PaytoUriIban import net.taler.wallet.accounts.PaytoUriTalerBank @@ -179,7 +177,7 @@ class TransactionWithdrawal( ) : Transaction() { override val icon = R.drawable.transaction_withdrawal - override val detailPageNav = R.id.action_nav_transactions_detail_withdrawal + override val detailPageNav = R.id.action_global_transactionWithdrawal @Transient override val amountType = AmountType.Positive @@ -397,7 +395,7 @@ class TransactionPayment( val posConfirmation: String? = null, ) : Transaction() { override val icon = R.drawable.transaction_payment - override val detailPageNav = R.id.action_nav_transactions_detail_payment + override val detailPageNav = R.id.action_global_transactionPayment @Transient override val amountType = AmountType.Negative @@ -439,7 +437,7 @@ class TransactionRefund( override val scopes: List<ScopeInfo>, ) : Transaction() { override val icon = R.drawable.transaction_refund - override val detailPageNav = R.id.action_nav_transactions_detail_refund + override val detailPageNav = R.id.action_global_transactionRefund @Transient override val amountType = AmountType.Positive @@ -461,7 +459,7 @@ class TransactionRefresh( override val scopes: List<ScopeInfo>, ) : Transaction() { override val icon = R.drawable.transaction_refresh - override val detailPageNav = R.id.action_nav_transactions_detail_refresh + override val detailPageNav = R.id.action_global_transactionRefresh @Transient override val amountType = AmountType.Negative @@ -489,7 +487,7 @@ class TransactionDeposit( val depositGroupId: String, ) : Transaction() { override val icon = R.drawable.transaction_deposit - override val detailPageNav = R.id.action_nav_transactions_detail_deposit + override val detailPageNav = R.id.action_global_transactionDeposit @Transient override val amountType = AmountType.Negative @@ -534,7 +532,7 @@ class TransactionPeerPullDebit( val info: PeerInfoShort, ) : Transaction() { override val icon = R.drawable.transaction_p2p_outgoing - override val detailPageNav = R.id.nav_transactions_detail_peer + override val detailPageNav = R.id.transactionPeer @Transient override val amountType = AmountType.Negative @@ -570,7 +568,7 @@ class TransactionPeerPullCredit( // val completed: Boolean, maybe ) : Transaction() { override val icon = R.drawable.transaction_p2p_incoming - override val detailPageNav = R.id.nav_transactions_detail_peer + override val detailPageNav = R.id.transactionPeer override val amountType get() = AmountType.Positive override fun getTitle(context: Context): String { @@ -600,7 +598,7 @@ class TransactionPeerPushDebit( // val completed: Boolean, definitely ) : Transaction() { override val icon = R.drawable.transaction_p2p_outgoing - override val detailPageNav = R.id.nav_transactions_detail_peer + override val detailPageNav = R.id.transactionPeer @Transient override val amountType = AmountType.Negative @@ -634,7 +632,7 @@ class TransactionPeerPushCredit( val info: PeerInfoShort, ) : Transaction() { override val icon = R.drawable.transaction_p2p_incoming - override val detailPageNav = R.id.nav_transactions_detail_peer + override val detailPageNav = R.id.transactionPeer @Transient override val amountType = AmountType.Positive @@ -667,7 +665,7 @@ class TransactionDenomLoss( val lossEventType: LossEventType, ): Transaction() { override val icon: Int = R.drawable.transaction_loss - override val detailPageNav = R.id.nav_transactions_detail_loss + override val detailPageNav = R.id.transactionLoss @Transient override val amountType: AmountType = AmountType.Negative @@ -704,7 +702,7 @@ class DummyTransaction( override val amountRaw: Amount = Amount.zero("TESTKUDOS") override val amountEffective: Amount = Amount.zero("TESTKUDOS") override val icon: Int = R.drawable.transaction_dummy - override val detailPageNav: Int = R.id.nav_transactions_detail_dummy + override val detailPageNav: Int = R.id.transactionDummy override val amountType: AmountType = AmountType.Neutral override val generalTitleRes: Int = R.string.transaction_dummy_title override val scopes: List<ScopeInfo> = listOf(ScopeInfo.Exchange( diff --git a/wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt b/wallet/src/main/java/net/taler/wallet/withdraw/PromptWithdrawFragment.kt @@ -171,7 +171,7 @@ class PromptWithdrawFragment: Fragment() { // TODO: rewrite ToS review screen in compose if (s.exchangeBaseUrl != null) { val args = bundleOf("exchangeBaseUrl" to s.exchangeBaseUrl) - findNavController().navigate(R.id.action_global_reviewExchangeTos, args) + findNavController().navigate(R.id.action_global_reviewExchangeTOS, args) } }, onConfirm = { age -> @@ -217,9 +217,9 @@ class PromptWithdrawFragment: Fragment() { if (transactionManager.selectTransaction(it)) { status.amountInfo?.scopeInfo?.let { s -> model.selectScope(s) } - findNavController().navigate(R.id.action_promptWithdraw_to_nav_transactions_detail_withdrawal) + findNavController().navigate(R.id.action_global_transactionWithdrawal) } else { - findNavController().navigate(R.id.action_promptWithdraw_to_nav_main) + findNavController().navigate(R.id.action_global_main) } } } diff --git a/wallet/src/main/res/navigation/nav_graph.xml b/wallet/src/main/res/navigation/nav_graph.xml @@ -18,15 +18,128 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/nav_graph" - app:startDestination="@id/nav_main"> + app:startDestination="@id/main"> + + <action + android:id="@+id/action_global_main" + app:destination="@id/main" + app:popUpTo="@id/main" /> + + <action + android:id="@+id/action_global_handleUri" + app:destination="@id/handleUri" + app:popUpTo="@id/main" /> + + <action + android:id="@+id/action_global_paytoUri" + app:destination="@id/paytoUri" + app:popUpTo="@id/main" /> + + <action + android:id="@+id/action_global_deposit" + app:destination="@id/deposit" + app:popUpTo="@id/main" /> + + <action + android:id="@+id/action_global_wireTransferDetails" + app:destination="@id/wireTransferDetails" /> + + <action + android:id="@+id/action_global_bankAccounts" + app:destination="@id/bankAccounts" /> + + <action + android:id="@+id/action_global_reviewExchangeTOS" + app:destination="@id/reviewExchangeTOS" /> + + <action + android:id="@+id/action_global_outgoingPull" + app:destination="@id/outgoingPull" /> + + <action + android:id="@+id/action_global_outgoingPush" + app:destination="@id/outgoingPush" /> + + <action + android:id="@+id/action_global_promptPayment" + app:destination="@id/promptPayment" + app:popUpTo="@id/main" /> + + <action + android:id="@+id/action_global_promptWithdraw" + app:destination="@id/promptWithdraw" + app:popUpTo="@id/main" /> + + <action + android:id="@+id/action_global_promptPullPayment" + app:destination="@id/promptPullPayment" + app:popUpTo="@id/main" /> + + <action + android:id="@+id/action_global_promptPushPayment" + app:destination="@id/promptPushPayment" + app:popUpTo="@id/main" /> + + <action + android:id="@+id/action_global_promptPayTemplate" + app:destination="@id/promptPayTemplate" + app:popUpTo="@id/main" /> + + <action + android:id="@+id/action_global_transactionWithdrawal" + app:destination="@id/transactionWithdrawal" + app:popUpTo="@id/main"/> + + <action + android:id="@+id/action_global_transactionPayment" + app:destination="@id/transactionPayment" + app:popUpTo="@id/main" /> + + <action + android:id="@+id/action_global_transactionRefund" + app:destination="@id/transactionRefund" + app:popUpTo="@id/main" /> + + <action + android:id="@+id/action_global_transactionRefresh" + app:destination="@id/transactionRefresh" + app:popUpTo="@id/main" /> + + <action + android:id="@+id/action_global_transactionDeposit" + app:destination="@id/transactionDeposit" + app:popUpTo="@id/main" /> + + <action + android:id="@+id/action_global_transactionPeer" + app:destination="@id/transactionPeer" + app:popUpTo="@id/main" /> <fragment - android:id="@+id/nav_main" + android:id="@+id/main" android:name="net.taler.wallet.main.MainFragment" android:label="@string/assets_title"> <action - android:id="@+id/action_nav_main_to_nav_uri_input" - app:destination="@id/nav_uri_input" /> + android:id="@+id/action_main_to_uriInput" + app:destination="@id/uriInput" /> + <action + android:id="@+id/action_main_to_exchangeShopping" + app:destination="@id/exchangeShopping" /> + <action + android:id="@+id/action_main_to_performanceStats" + app:destination="@id/performanceStats" /> + <action + android:id="@+id/action_main_to_exchangeList" + app:destination="@id/exchangeList" /> + <action + android:id="@+id/action_main_to_bankAccounts" + app:destination="@id/bankAccounts" /> + <action + android:id="@+id/action_main_to_donauStatement" + app:destination="@id/donauStatement" /> + <action + android:id="@+id/action_main_to_setDonau" + app:destination="@id/setDonau" /> </fragment> <fragment @@ -41,72 +154,40 @@ android:name="from" app:argType="string" app:nullable="false" /> - - <action - android:id="@+id/action_handleUri_to_promptPayment" - app:destination="@id/promptPayment" - app:popUpTo="@id/nav_main" /> - - <action - android:id="@+id/action_handleUri_to_promptPullPayment" - app:destination="@id/promptPullPayment" - app:popUpTo="@id/nav_main" /> - - <action - android:id="@+id/action_handleUri_to_promptPushPayment" - app:destination="@id/promptPushPayment" - app:popUpTo="@id/nav_main" /> - - <action - android:id="@+id/action_handleUri_to_promptPayTemplate" - app:destination="@id/promptPayTemplate" - app:popUpTo="@id/nav_main" /> - - <action - android:id="@+id/action_handleUri_to_nav_payto_uri" - app:destination="@id/nav_payto_uri" - app:popUpTo="@id/nav_main" /> </fragment> <fragment - android:id="@+id/nav_payto_uri" + android:id="@+id/paytoUri" android:name="net.taler.wallet.deposit.PayToUriFragment" android:label="@string/transactions_send_funds"> <argument android:name="uri" app:argType="string" /> - <action - android:id="@+id/action_nav_payto_uri_to_nav_deposit" - app:destination="@id/nav_deposit" /> </fragment> <fragment android:id="@+id/promptPayment" android:name="net.taler.wallet.payment.PromptPaymentFragment" android:label="@string/payment_prompt_title" - tools:layout="@layout/fragment_prompt_payment"> - <action - android:id="@+id/action_promptPayment_to_nav_main" - app:destination="@id/nav_main" - app:popUpTo="@id/nav_main" /> - <action - android:id="@+id/action_promptPayment_to_nav_transactions_detail_payment" - app:destination="@id/nav_transactions_detail_payment" - app:popUpTo="@id/nav_main" /> - </fragment> + tools:layout="@layout/fragment_prompt_payment" /> <fragment - android:id="@+id/nav_settings_exchanges" + android:id="@+id/exchangeList" android:name="net.taler.wallet.exchanges.ExchangeListFragment" android:label="@string/exchange_list_title" /> <fragment - android:id="@+id/nav_settings_donau" + android:id="@+id/setDonau" android:name="net.taler.wallet.donau.SetDonauFragment" - android:label="@string/donau_title" /> + android:label="@string/donau_title"> + <argument + android:name="donauBaseUrl" + app:argType="string" + app:nullable="true" /> + </fragment> <fragment - android:id="@+id/nav_donau_statement" + android:id="@+id/donauStatement" android:name="net.taler.wallet.donau.DonauStatementFragment" android:label="@string/donau_statement_title"> <argument @@ -116,13 +197,12 @@ </fragment> <fragment - android:id="@+id/nav_wire_transfer_details" + android:id="@+id/wireTransferDetails" android:name="net.taler.wallet.transfer.WireTransferDetailsFragment" - android:label="@string/withdraw_manual_ready_details_intro"> - </fragment> + android:label="@string/withdraw_manual_ready_details_intro" /> <fragment - android:id="@+id/nav_deposit" + android:id="@+id/deposit" android:name="net.taler.wallet.deposit.DepositFragment" android:label="@string/send_deposit_title"> <argument @@ -130,140 +210,93 @@ app:argType="string" app:nullable="false" /> <argument - android:name="IBAN" + android:name="receiverName" android:defaultValue="@null" app:argType="string" app:nullable="true" /> <argument - android:name="receiverName" + android:name="receiverPostalCode" android:defaultValue="@null" app:argType="string" app:nullable="true" /> - <action - android:id="@+id/action_nav_deposit_to_nav_main" - app:destination="@id/nav_main" - app:popUpTo="@id/nav_main" /> - <action - android:id="@+id/action_nav_deposit_to_known_bank_accounts" - app:destination="@id/bankAccountsFragment" /> - </fragment> - - <fragment - android:id="@+id/nav_peer_pull" - android:name="net.taler.wallet.peer.OutgoingPullFragment" - android:label="@string/receive_peer_title"> <argument - android:name="amount" + android:name="receiverTown" android:defaultValue="@null" app:argType="string" app:nullable="true" /> - <action - android:id="@+id/action_nav_peer_pull_to_nav_main" - app:destination="@id/nav_main" - app:popUpTo="@id/nav_main" /> - <action - android:id="@+id/action_nav_peer_pull_to_nav_transactions_detail_peer" - app:destination="@id/nav_transactions_detail_peer" - app:popUpTo="@id/nav_main" /> - </fragment> - - <fragment - android:id="@+id/nav_peer_push" - android:name="net.taler.wallet.peer.OutgoingPushFragment" - android:label="@string/send_peer_title"> <argument - android:name="amount" + android:name="IBAN" android:defaultValue="@null" app:argType="string" app:nullable="true" /> - <action - android:id="@+id/action_nav_peer_push_to_nav_main" - app:destination="@id/nav_main" - app:popUpTo="@id/nav_main" /> - <action - android:id="@+id/action_nav_peer_push_to_nav_transactions_detail_peer" - app:destination="@id/nav_transactions_detail_peer" - app:popUpTo="@id/nav_main" /> </fragment> <fragment + android:id="@+id/outgoingPull" + android:name="net.taler.wallet.peer.OutgoingPullFragment" + android:label="@string/receive_peer_title" /> + + <fragment + android:id="@+id/outgoingPush" + android:name="net.taler.wallet.peer.OutgoingPushFragment" + android:label="@string/send_peer_title" /> + + <fragment android:id="@+id/promptPullPayment" android:name="net.taler.wallet.peer.IncomingPullPaymentFragment" - android:label="@string/pay_peer_title"> - <action - android:id="@+id/action_promptPullPayment_to_nav_main" - app:destination="@id/nav_main" - app:popUpTo="@id/nav_main" /> - <action - android:id="@+id/action_promptPullPayment_to_transaction_detail_peer" - app:destination="@id/nav_transactions_detail_peer" - app:popUpTo="@id/nav_main" /> - </fragment> + android:label="@string/pay_peer_title" /> <fragment android:id="@+id/promptPushPayment" android:name="net.taler.wallet.peer.IncomingPushPaymentFragment" - android:label="@string/receive_peer_payment_title"> - <action - android:id="@+id/action_promptPushPayment_to_nav_main" - app:destination="@id/nav_main" - app:popUpTo="@id/nav_main" /> - <action - android:id="@+id/action_promptPushPayment_to_transaction_detail_peer" - app:destination="@id/nav_transactions_detail_peer" - app:popUpTo="@id/nav_main" /> - </fragment> + android:label="@string/receive_peer_payment_title" /> <fragment android:id="@+id/promptPayTemplate" android:name="net.taler.wallet.payment.PayTemplateFragment" android:label="@string/payment_pay_template_title"> - <action - android:id="@+id/action_promptPayTemplate_to_promptPayment" - app:destination="@+id/promptPayment" - app:popUpTo="@id/nav_main" /> <argument android:name="uri" app:argType="string" /> </fragment> <fragment - android:id="@+id/nav_transactions_detail_withdrawal" + android:id="@+id/transactionWithdrawal" android:name="net.taler.wallet.transactions.TransactionWithdrawalFragment" android:label="@string/withdraw_title" /> <fragment - android:id="@+id/nav_transactions_detail_payment" + android:id="@+id/transactionPayment" android:name="net.taler.wallet.transactions.TransactionPaymentFragment" android:label="@string/payment_title" /> <fragment - android:id="@+id/nav_transactions_detail_refund" + android:id="@+id/transactionRefund" android:name="net.taler.wallet.transactions.TransactionRefundFragment" android:label="@string/refund_title" /> <fragment - android:id="@+id/nav_transactions_detail_refresh" + android:id="@+id/transactionRefresh" android:name="net.taler.wallet.transactions.TransactionRefreshFragment" android:label="@string/transaction_refresh" /> <fragment - android:id="@+id/nav_transactions_detail_deposit" + android:id="@+id/transactionDeposit" android:name="net.taler.wallet.transactions.TransactionDepositFragment" android:label="@string/transaction_deposit" /> <fragment - android:id="@+id/nav_transactions_detail_peer" + android:id="@+id/transactionPeer" android:name="net.taler.wallet.transactions.TransactionPeerFragment" android:label="@string/transactions_detail_title" /> <fragment - android:id="@+id/nav_transactions_detail_loss" + android:id="@+id/transactionLoss" android:name="net.taler.wallet.transactions.TransactionLossFragment" android:label="@string/transaction_denom_loss" /> <fragment - android:id="@+id/nav_transactions_detail_dummy" + android:id="@+id/transactionDummy" android:name="net.taler.wallet.transactions.TransactionDummyFragment" android:label="@string/transaction_dummy_title" /> @@ -291,54 +324,34 @@ android:name="amount" app:nullable="true" app:argType="string" /> - <action - android:id="@+id/action_promptWithdraw_to_nav_main" - app:destination="@id/nav_main" - app:popUpTo="@id/nav_main" /> - <action - android:id="@+id/action_promptWithdraw_to_nav_transactions_detail_withdrawal" - app:destination="@id/nav_transactions_detail_withdrawal" - app:popUpTo="@id/nav_main" /> - <action - android:id="@+id/action_promptWithdraw_to_errorFragment" - app:destination="@id/errorFragment" - app:popUpTo="@id/nav_main" /> </fragment> <fragment android:id="@+id/reviewExchangeTOS" android:name="net.taler.wallet.withdraw.ReviewExchangeTosFragment" - android:label="@string/nav_exchange_tos" - tools:layout="@layout/fragment_review_exchange_tos"> - <action - android:id="@+id/action_reviewExchangeTOS_to_promptWithdraw" - app:destination="@id/promptWithdraw" - app:popUpTo="@id/nav_main" /> - </fragment> + android:label="@string/nav_exchange_tos" /> <fragment - android:id="@+id/nav_uri_input" + android:id="@+id/uriInput" android:name="net.taler.wallet.UriInputFragment" android:label="@string/enter_uri" tools:layout="@layout/fragment_uri_input" /> <fragment - android:id="@+id/errorFragment" - android:name="net.taler.wallet.withdraw.ErrorFragment" - android:label="@string/nav_error" - tools:layout="@layout/fragment_error" /> - - <fragment - android:id="@+id/bankAccountsFragment" + android:id="@+id/bankAccounts" android:name="net.taler.wallet.accounts.BankAccountsFragment" android:label="@string/send_deposit_known_bank_accounts"> + <argument + android:name="currency" + app:nullable="true" + app:argType="string" /> <action - android:id="@+id/action_nav_bank_accounts_to_add_bank_account" - app:destination="@+id/addBankAccountFragment" /> + android:id="@+id/action_bankAccounts_to_addBankAccount" + app:destination="@id/addBankAccount" /> </fragment> <fragment - android:id="@+id/addBankAccountFragment" + android:id="@+id/addBankAccount" android:name="net.taler.wallet.accounts.AddAccountFragment" android:label="@string/send_deposit_account_add"> <argument @@ -356,54 +369,4 @@ android:id="@+id/performanceStats" android:name="net.taler.wallet.settings.PerformanceFragment" android:label="@string/performance_stats_title" /> - - <action - android:id="@+id/action_global_handle_uri" - app:destination="@id/handleUri" /> - - <action - android:id="@+id/action_handleUri_to_promptWithdraw" - app:destination="@id/promptWithdraw" - app:popUpTo="@id/nav_main" /> - - <action - android:id="@+id/action_global_promptPayment" - app:destination="@id/promptPayment" /> - - <action - android:id="@+id/action_nav_transactions_detail_withdrawal" - app:destination="@id/nav_transactions_detail_withdrawal" /> - - <action - android:id="@+id/action_nav_transactions_detail_payment" - app:destination="@id/nav_transactions_detail_payment" /> - - <action - android:id="@+id/action_nav_transactions_detail_refund" - app:destination="@id/nav_transactions_detail_refund" /> - - <action - android:id="@+id/action_nav_transactions_detail_refresh" - app:destination="@id/nav_transactions_detail_refresh" /> - - <action - android:id="@+id/action_nav_transactions_detail_deposit" - app:destination="@id/nav_transactions_detail_deposit" /> - - <action - android:id="@+id/action_nav_payto_uri" - app:destination="@id/nav_payto_uri" /> - - <action - android:id="@+id/action_global_reviewExchangeTos" - app:destination="@id/reviewExchangeTOS" /> - - <action - android:id="@+id/nav_shopping" - app:destination="@id/exchangeShopping" /> - - <action - android:id="@+id/nav_performance_stats" - app:destination="@id/performanceStats" /> - </navigation>