gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-taler-android] 04/06: [wallet] Implemented custom tabs


From: gnunet
Subject: [taler-taler-android] 04/06: [wallet] Implemented custom tabs
Date: Mon, 23 Jan 2023 19:34:16 +0100

This is an automated email from the git hooks/post-receive script.

torsten-grote pushed a commit to branch master
in repository taler-android.

commit badc5aa771a4af9c9cd321a3300729b5104a3661
Author: Iván Ávalos <avalos@disroot.org>
AuthorDate: Tue Jan 17 16:36:06 2023 -0600

    [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(-)

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 <T> 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)
             }
         }
     }

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]