[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-android] branch master updated (54789b6 -> 6d20fda)
From: |
gnunet |
Subject: |
[taler-taler-android] branch master updated (54789b6 -> 6d20fda) |
Date: |
Fri, 23 Sep 2022 23:29:36 +0200 |
This is an automated email from the git hooks/post-receive script.
torsten-grote pushed a change to branch master
in repository taler-android.
from 54789b6 [wallet] Support uppercase URIs
new baca5ec [wallet] Implement beginning of deposits
new 6d20fda [wallet] Update to v0.9.0-dev.24
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
wallet/build.gradle | 4 +-
wallet/src/main/AndroidManifest.xml | 1 +
.../src/main/java/net/taler/wallet/MainActivity.kt | 7 +--
.../main/java/net/taler/wallet/UriInputFragment.kt | 3 +-
.../net/taler/wallet/payment/PaymentManager.kt | 22 ++++++++-
...erFragment.kt => TransactionDepositFragment.kt} | 53 ++--------------------
.../wallet/transactions/TransactionManager.kt | 2 +-
.../net/taler/wallet/transactions/Transactions.kt | 40 +++++++++++++---
wallet/src/main/res/navigation/nav_graph.xml | 10 ++++
wallet/src/main/res/values/strings.xml | 1 +
10 files changed, 78 insertions(+), 65 deletions(-)
copy
wallet/src/main/java/net/taler/wallet/transactions/{TransactionPeerFragment.kt
=> TransactionDepositFragment.kt} (64%)
diff --git a/wallet/build.gradle b/wallet/build.gradle
index c0a9e13..5396bf6 100644
--- a/wallet/build.gradle
+++ b/wallet/build.gradle
@@ -23,8 +23,8 @@ plugins {
id "de.undercouch.download"
}
-def walletCoreVersion = "v0.9.0-dev.23"
-def walletCoreSha256 =
"d7c43a7a1d25acb68bae2df955d3c2ff6545496b31ab015c14f755a9babb274e"
+def walletCoreVersion = "v0.9.0-dev.24"
+def walletCoreSha256 =
"3f6316b58f478a5cec5fb6f11e941b45e1a46c370b7ebacbea3da8999525389d"
static def versionCodeEpoch() {
return (new Date().getTime() / 1000).toInteger()
diff --git a/wallet/src/main/AndroidManifest.xml
b/wallet/src/main/AndroidManifest.xml
index 69670c3..68bc321 100644
--- a/wallet/src/main/AndroidManifest.xml
+++ b/wallet/src/main/AndroidManifest.xml
@@ -63,6 +63,7 @@
<data
android:scheme="TALER"
tools:ignore="AppLinkUrlError" />
+ <data android:scheme="payto" />
</intent-filter>
</activity>
diff --git a/wallet/src/main/java/net/taler/wallet/MainActivity.kt
b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
index 5597564..cb48c30 100644
--- a/wallet/src/main/java/net/taler/wallet/MainActivity.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainActivity.kt
@@ -203,9 +203,6 @@ class MainActivity : AppCompatActivity(),
OnNavigationItemSelectedListener,
}
}
} else {
- if (!scheme.startsWith("taler", ignoreCase = true)) {
- return actionFound
- }
actionFound.postValue(uri.toString())
}
@@ -225,8 +222,8 @@ class MainActivity : AppCompatActivity(),
OnNavigationItemSelectedListener,
val action = normalizedURL.substring(
if (normalizedURL.startsWith("taler://", ignoreCase = true)) {
"taler://".length
- } else if (normalizedURL.startsWith("taler+http://",
- ignoreCase = true) && model.devMode.value == true
+ } else if (normalizedURL.startsWith("taler+http://",
ignoreCase = true) &&
+ model.devMode.value == true
) {
"taler+http://".length
} else {
diff --git a/wallet/src/main/java/net/taler/wallet/UriInputFragment.kt
b/wallet/src/main/java/net/taler/wallet/UriInputFragment.kt
index 8ad1fb7..00ec404 100644
--- a/wallet/src/main/java/net/taler/wallet/UriInputFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/UriInputFragment.kt
@@ -59,7 +59,8 @@ class UriInputFragment : Fragment() {
}
}
ui.okButton.setOnClickListener {
- if (ui.uriView.text?.startsWith("taler://", ignoreCase = true) ==
true) {
+ 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)
diff --git a/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt
b/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt
index ae091df..b8918c1 100644
--- a/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt
@@ -22,11 +22,12 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
+import kotlinx.serialization.Serializable
import net.taler.common.Amount
import net.taler.common.ContractTerms
import net.taler.wallet.TAG
-import net.taler.wallet.backend.WalletBackendApi
import net.taler.wallet.backend.TalerErrorInfo
+import net.taler.wallet.backend.WalletBackendApi
import net.taler.wallet.payment.PayStatus.AlreadyPaid
import net.taler.wallet.payment.PayStatus.InsufficientBalance
import net.taler.wallet.payment.PreparePayResponse.AlreadyConfirmedResponse
@@ -119,9 +120,28 @@ class PaymentManager(
mPayStatus.value = PayStatus.None
}
+ @UiThread
+ fun makeDeposit(url: String, amount: Amount) = scope.launch {
+ // TODO
+ api.request("createDepositGroup",
CreateDepositGroupResponse.serializer()) {
+ put("depositPaytoUri", url)
+ put("amount", amount.toJSONString())
+ }.onError {
+ Log.e(TAG, "Error createDepositGroup $it")
+ }.onSuccess {
+ Log.e(TAG, "createDepositGroup $it")
+ }
+ }
+
private fun handleError(operation: String, error: TalerErrorInfo) {
Log.e(TAG, "got $operation error result $error")
mPayStatus.value = PayStatus.Error(error.userFacingMsg)
}
}
+
+@Serializable
+data class CreateDepositGroupResponse(
+ val depositGroupId: String,
+ val transactionId: String,
+)
diff --git
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionDepositFragment.kt
similarity index 64%
copy from
wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt
copy to
wallet/src/main/java/net/taler/wallet/transactions/TransactionDepositFragment.kt
index 749ec30..f721090 100644
---
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionPeerFragment.kt
+++
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionDepositFragment.kt
@@ -43,17 +43,11 @@ import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
-import androidx.compose.ui.unit.sp
import com.google.android.material.composethemeadapter.MdcTheme
-import net.taler.common.Amount
import net.taler.common.toAbsoluteTime
import net.taler.wallet.R
-import net.taler.wallet.peer.TransactionPeerPullCreditComposable
-import net.taler.wallet.peer.TransactionPeerPullDebitComposable
-import net.taler.wallet.peer.TransactionPeerPushCreditComposable
-import net.taler.wallet.peer.TransactionPeerPushDebitComposable
-class TransactionPeerFragment : TransactionDetailFragment() {
+class TransactionDepositFragment : TransactionDetailFragment() {
override fun onCreateView(
inflater: LayoutInflater,
@@ -64,7 +58,7 @@ class TransactionPeerFragment : TransactionDetailFragment() {
MdcTheme {
Surface {
val t = transaction ?: error("No transaction")
- TransactionPeerComposable(t) {
+ TransactionDepositComposable(t as TransactionDeposit) {
onDeleteButtonClicked(t)
}
}
@@ -74,7 +68,7 @@ class TransactionPeerFragment : TransactionDetailFragment() {
}
@Composable
-fun TransactionPeerComposable(t: Transaction, onDelete: () -> Unit) {
+fun TransactionDepositComposable(t: TransactionDeposit, onDelete: () -> Unit) {
val scrollState = rememberScrollState()
Column(
modifier = Modifier
@@ -88,13 +82,7 @@ fun TransactionPeerComposable(t: Transaction, onDelete: ()
-> Unit) {
text = t.timestamp.ms.toAbsoluteTime(context).toString(),
style = MaterialTheme.typography.body1,
)
- when (t) {
- is TransactionPeerPullCredit ->
TransactionPeerPullCreditComposable(t)
- is TransactionPeerPushCredit ->
TransactionPeerPushCreditComposable(t)
- is TransactionPeerPullDebit ->
TransactionPeerPullDebitComposable(t)
- is TransactionPeerPushDebit ->
TransactionPeerPushDebitComposable(t)
- else -> error("unexpected transaction: ${t::class.simpleName}")
- }
+ // TODO
Button(
modifier = Modifier.padding(16.dp),
colors = ButtonDefaults.buttonColors(backgroundColor =
colorResource(R.color.red)),
@@ -115,36 +103,3 @@ fun TransactionPeerComposable(t: Transaction, onDelete: ()
-> Unit) {
}
}
}
-
-@Composable
-fun TransactionAmountComposable(label: String, amount: Amount, amountType:
AmountType) {
- Text(
- modifier = Modifier.padding(top = 16.dp, start = 16.dp, end = 16.dp),
- text = label,
- style = MaterialTheme.typography.body2,
- )
- Text(
- modifier = Modifier.padding(top = 8.dp, start = 16.dp, end = 16.dp,
bottom = 16.dp),
- text = if (amountType == AmountType.Negative) "-$amount" else
amount.toString(),
- fontSize = 24.sp,
- color = when (amountType) {
- AmountType.Positive -> colorResource(R.color.green)
- AmountType.Negative -> colorResource(R.color.red)
- AmountType.Neutral -> Color.Unspecified
- },
- )
-}
-
-@Composable
-fun TransactionInfoComposable(label: String, info: String) {
- Text(
- modifier = Modifier.padding(top = 16.dp, start = 16.dp, end = 16.dp),
- text = label,
- style = MaterialTheme.typography.body2,
- )
- Text(
- modifier = Modifier.padding(top = 8.dp, start = 16.dp, end = 16.dp,
bottom = 16.dp),
- text = info,
- fontSize = 24.sp,
- )
-}
diff --git
a/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt
b/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt
index d1020e2..bbae22b 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionManager.kt
@@ -89,7 +89,7 @@ class TransactionManager(
}
}
- fun deleteTransaction(transactionId: String) = scope.launch {
+ fun deleteTransaction(transactionId: String) = scope.launch {
api.request<Unit>("deleteTransaction") {
put("transactionId", transactionId)
}.onError {
diff --git a/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt
b/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt
index 97ac5ea..dcb524e 100644
--- a/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt
+++ b/wallet/src/main/java/net/taler/wallet/transactions/Transactions.kt
@@ -75,7 +75,7 @@ class TransactionWithdrawal(
val withdrawalDetails: WithdrawalDetails,
override val error: TalerErrorInfo? = null,
override val amountRaw: Amount,
- override val amountEffective: Amount
+ override val amountEffective: Amount,
) : Transaction() {
override val icon = R.drawable.transaction_withdrawal
@@ -102,7 +102,7 @@ sealed class WithdrawalDetails {
*
* Already contains the amount and message.
*/
- val exchangePaytoUris: List<String>
+ val exchangePaytoUris: List<String>,
) : WithdrawalDetails()
@Serializable
@@ -133,7 +133,7 @@ class TransactionPayment(
val status: PaymentStatus,
override val error: TalerErrorInfo? = null,
override val amountRaw: Amount,
- override val amountEffective: Amount
+ override val amountEffective: Amount,
) : Transaction() {
override val icon = R.drawable.ic_cash_usd_outline
override val detailPageNav = R.id.action_nav_transactions_detail_payment
@@ -192,7 +192,7 @@ class TransactionRefund(
val amountInvalid: Amount? = null,
override val error: TalerErrorInfo? = null,
override val amountRaw: Amount,
- override val amountEffective: Amount
+ override val amountEffective: Amount,
) : Transaction() {
override val icon = R.drawable.transaction_refund
override val detailPageNav = R.id.action_nav_transactions_detail_refund
@@ -216,7 +216,7 @@ class TransactionTip(
val merchantBaseUrl: String,
override val error: TalerErrorInfo? = null,
override val amountRaw: Amount,
- override val amountEffective: Amount
+ override val amountEffective: Amount,
) : Transaction() {
override val icon = R.drawable.transaction_tip_accepted // TODO different
when declined
override val detailPageNav = 0
@@ -239,7 +239,7 @@ class TransactionRefresh(
val exchangeBaseUrl: String,
override val error: TalerErrorInfo? = null,
override val amountRaw: Amount,
- override val amountEffective: Amount
+ override val amountEffective: Amount,
) : Transaction() {
override val icon = R.drawable.transaction_refresh
override val detailPageNav = R.id.action_nav_transactions_detail_refresh
@@ -253,6 +253,30 @@ class TransactionRefresh(
override val generalTitleRes = R.string.transaction_refresh
}
+@Serializable
+@SerialName("deposit")
+class TransactionDeposit(
+ override val transactionId: String,
+ override val timestamp: Timestamp,
+ override val pending: Boolean,
+ override val error: TalerErrorInfo? = null,
+ override val amountRaw: Amount,
+ override val amountEffective: Amount,
+ val targetPaytoUri: String,
+ val depositGroupId: String,
+) : Transaction() {
+ override val icon = R.drawable.ic_cash_usd_outline
+ override val detailPageNav = R.id.action_nav_transactions_detail_deposit
+
+ @Transient
+ override val amountType = AmountType.Negative
+ override fun getTitle(context: Context): String {
+ return context.getString(R.string.transaction_deposit)
+ }
+
+ override val generalTitleRes = R.string.transaction_deposit
+}
+
@Serializable
data class PeerInfoShort(
val expiration: Timestamp? = null,
@@ -282,6 +306,7 @@ class TransactionPeerPullDebit(
override fun getTitle(context: Context): String {
return context.getString(R.string.transaction_peer_pull_debit)
}
+
override val generalTitleRes = R.string.transaction_peer_pull_debit
}
@@ -309,6 +334,7 @@ class TransactionPeerPullCredit(
override fun getTitle(context: Context): String {
return context.getString(R.string.transaction_peer_pull_credit)
}
+
override val generalTitleRes = R.string.transaction_peer_pull_credit
}
@@ -337,6 +363,7 @@ class TransactionPeerPushDebit(
override fun getTitle(context: Context): String {
return context.getString(R.string.transaction_peer_push_debit)
}
+
override val generalTitleRes = R.string.payment_title
}
@@ -363,5 +390,6 @@ class TransactionPeerPushCredit(
override fun getTitle(context: Context): String {
return context.getString(R.string.transaction_peer_push_credit)
}
+
override val generalTitleRes = R.string.transaction_peer_push_credit
}
diff --git a/wallet/src/main/res/navigation/nav_graph.xml
b/wallet/src/main/res/navigation/nav_graph.xml
index f9060c5..96ca49f 100644
--- a/wallet/src/main/res/navigation/nav_graph.xml
+++ b/wallet/src/main/res/navigation/nav_graph.xml
@@ -198,6 +198,12 @@
android:label="@string/transactions_detail_title"
tools:layout="@layout/fragment_transaction_withdrawal" />
+ <fragment
+ android:id="@+id/nav_transactions_detail_deposit"
+ android:name="net.taler.wallet.transactions.TransactionDepositFragment"
+ android:label="@string/transactions_detail_title"
+ tools:layout="@layout/fragment_transaction_withdrawal" />
+
<fragment
android:id="@+id/nav_transactions_detail_peer"
android:name="net.taler.wallet.transactions.TransactionPeerFragment"
@@ -323,4 +329,8 @@
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" />
+
</navigation>
diff --git a/wallet/src/main/res/values/strings.xml
b/wallet/src/main/res/values/strings.xml
index 52700b8..6d5f554 100644
--- a/wallet/src/main/res/values/strings.xml
+++ b/wallet/src/main/res/values/strings.xml
@@ -96,6 +96,7 @@ GNU Taler is immune against many types of fraud, such as
phishing of credit card
<string name="transaction_refund_from">Refund from %s</string>
<string name="transaction_pending">PENDING</string>
<string name="transaction_refresh">Coin expiry change fee</string>
+ <string name="transaction_deposit">Deposit</string>
<string name="transaction_peer_push_debit">Push payment</string>
<string name="transaction_peer_pull_credit">Invoice</string>
<string name="transaction_peer_pull_debit">Invoice paid</string>
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-taler-android] branch master updated (54789b6 -> 6d20fda),
gnunet <=