From badc5aa771a4af9c9cd321a3300729b5104a3661 Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Tue, 17 Jan 2023 16:36:06 -0600 Subject: [wallet] Implemented custom tabs --- wallet/build.gradle | 1 + .../src/main/java/net/taler/wallet/UriInputFragment.kt | 6 +----- wallet/src/main/java/net/taler/wallet/Utils.kt | 8 ++++++++ .../transactions/TransactionWithdrawalFragment.kt | 17 +++++++---------- .../taler/wallet/transactions/TransactionsFragment.kt | 7 ++----- 5 files changed, 19 insertions(+), 20 deletions(-) (limited to 'wallet') diff --git a/wallet/build.gradle b/wallet/build.gradle index 5836fdd..7b4b265 100644 --- a/wallet/build.gradle +++ b/wallet/build.gradle @@ -123,6 +123,7 @@ dependencies { implementation 'androidx.preference:preference-ktx:1.2.0' implementation "com.google.android.material:material:$material_version" implementation "androidx.constraintlayout:constraintlayout:$constraintlayout_version" + implementation "androidx.browser:browser:1.4.0" // Compose implementation 'androidx.activity:activity-compose:1.6.1' diff --git a/wallet/src/main/java/net/taler/wallet/UriInputFragment.kt b/wallet/src/main/java/net/taler/wallet/UriInputFragment.kt index 00ec404..c65c53a 100644 --- a/wallet/src/main/java/net/taler/wallet/UriInputFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/UriInputFragment.kt @@ -17,9 +17,6 @@ package net.taler.wallet import android.content.ClipboardManager -import android.content.Intent -import android.content.Intent.ACTION_VIEW -import android.net.Uri import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -62,8 +59,7 @@ class UriInputFragment : Fragment() { if (ui.uriView.text?.startsWith("taler://", ignoreCase = true) == true || ui.uriView.text?.startsWith("payto://", ignoreCase = true) == true) { ui.uriLayout.error = null - val i = Intent(ACTION_VIEW, Uri.parse(ui.uriView.text.toString())) - startActivity(i) + launchInAppBrowser(requireContext(), ui.uriView.text.toString()) } else { ui.uriLayout.error = getString(R.string.uri_invalid) } diff --git a/wallet/src/main/java/net/taler/wallet/Utils.kt b/wallet/src/main/java/net/taler/wallet/Utils.kt index 0a2b220..259e3f4 100644 --- a/wallet/src/main/java/net/taler/wallet/Utils.kt +++ b/wallet/src/main/java/net/taler/wallet/Utils.kt @@ -21,6 +21,7 @@ import android.net.ConnectivityManager import android.net.ConnectivityManager.NetworkCallback import android.net.NetworkCapabilities import android.net.NetworkRequest +import android.net.Uri import android.net.wifi.WifiConfiguration import android.net.wifi.WifiManager import android.net.wifi.WifiNetworkSpecifier @@ -28,6 +29,7 @@ import android.os.Build.VERSION.SDK_INT import android.widget.Toast import android.widget.Toast.LENGTH_LONG import androidx.annotation.RequiresApi +import androidx.browser.customtabs.CustomTabsIntent import androidx.core.content.getSystemService import net.taler.common.Amount import net.taler.common.AmountParserException @@ -108,3 +110,9 @@ fun Transaction.handleKyc(notRequired: () -> T, required: (TalerErrorInfo) - } } ?: notRequired() } + +fun launchInAppBrowser(context: Context, url: String) { + val builder = CustomTabsIntent.Builder() + val intent = builder.build() + intent.launchUrl(context, Uri.parse(url)) +} \ No newline at end of file diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt index 531d0db..ffc9005 100644 --- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionWithdrawalFragment.kt @@ -16,9 +16,6 @@ package net.taler.wallet.transactions -import android.content.Intent -import android.content.Intent.ACTION_VIEW -import android.net.Uri import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -27,13 +24,13 @@ import android.view.View.VISIBLE import android.view.ViewGroup import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController -import net.taler.common.startActivitySafe import net.taler.common.toAbsoluteTime import net.taler.wallet.MainViewModel import net.taler.wallet.R import net.taler.wallet.cleanExchange import net.taler.wallet.databinding.FragmentTransactionWithdrawalBinding import net.taler.wallet.handleKyc +import net.taler.wallet.launchInAppBrowser import net.taler.wallet.transactions.WithdrawalDetails.ManualTransfer import net.taler.wallet.transactions.WithdrawalDetails.TalerBankIntegrationApi import net.taler.wallet.withdraw.createManualTransferRequired @@ -89,10 +86,9 @@ class TransactionWithdrawalFragment : TransactionDetailFragment() { if (t.withdrawalDetails is TalerBankIntegrationApi && t.withdrawalDetails.bankConfirmationUrl != null ) { - val i = Intent(ACTION_VIEW).apply { - data = Uri.parse(t.withdrawalDetails.bankConfirmationUrl) + ui.confirmWithdrawalButton.setOnClickListener { + launchInAppBrowser(requireContext(), t.withdrawalDetails.bankConfirmationUrl) } - ui.confirmWithdrawalButton.setOnClickListener { startActivitySafe(i) } } else if (t.withdrawalDetails is ManualTransfer) { ui.confirmWithdrawalButton.setText(R.string.withdraw_manual_ready_details_intro) ui.confirmWithdrawalButton.setOnClickListener { @@ -115,9 +111,10 @@ class TransactionWithdrawalFragment : TransactionDetailFragment() { private fun setupActionButton(t: TransactionWithdrawal) { ui.actionButton.visibility = t.handleKyc({ GONE }) { error -> ui.actionButton.setText(R.string.transaction_action_kyc) - error.kycUrl?.let { - val i = Intent(ACTION_VIEW, Uri.parse(it)) - ui.actionButton.setOnClickListener { startActivitySafe(i) } + error.kycUrl?.let { kycUrl -> + ui.actionButton.setOnClickListener { + launchInAppBrowser(requireContext(), kycUrl) + } } VISIBLE } diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt index 961c314..09adb3e 100644 --- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt @@ -16,8 +16,6 @@ package net.taler.wallet.transactions -import android.content.Intent -import android.net.Uri import android.os.Bundle import android.view.ActionMode import android.view.LayoutInflater @@ -41,11 +39,11 @@ import androidx.recyclerview.widget.LinearLayoutManager.VERTICAL import net.taler.common.Amount import net.taler.common.fadeIn import net.taler.common.fadeOut -import net.taler.common.startActivitySafe import net.taler.wallet.MainViewModel import net.taler.wallet.R import net.taler.wallet.databinding.FragmentTransactionsBinding import net.taler.wallet.handleKyc +import net.taler.wallet.launchInAppBrowser interface OnTransactionClickListener { fun onTransactionClicked(transaction: Transaction) @@ -185,8 +183,7 @@ class TransactionsFragment : Fragment(), OnTransactionClickListener, ActionMode. override fun onActionButtonClicked(transaction: Transaction) { transaction.handleKyc({ error("Unhandled Action Button Event") }) { error -> error.kycUrl?.let { - val i = Intent(Intent.ACTION_VIEW, Uri.parse(it)) - startActivitySafe(i) + launchInAppBrowser(requireContext(), it) } } } -- cgit v1.2.3