[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-android] branch master updated (ee4f4a5 -> 7f351d4)
From: |
gnunet |
Subject: |
[taler-taler-android] branch master updated (ee4f4a5 -> 7f351d4) |
Date: |
Wed, 25 Oct 2023 15:40:29 +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 ee4f4a5 Translated using Weblate (Catalan)
new c154942 [wallet] update wallet-core to dev.34
new 76e84b2 [wallet] Remove "Warning:" from push payment screen
new 47d0809 [wallet] Remove deprecated ExperimentalMaterial3Api decorators
new 9a1e820 [wallet] Make keyboard resize views and make manual withdraw
scrollable
new 687418f [wallet] Refactor wire transfer and remove BIC/SWIFT field
new 07d7ca4 [wallet] Don't allow zero amount for p2p transactions
new 3596087 [wallet] Make more TextFields singleLine
new 7f351d4 [wallet] release 0.9.3+p9
The 8 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 | 6 +-
wallet/src/main/AndroidManifest.xml | 3 +-
.../java/net/taler/wallet/ReceiveFundsFragment.kt | 4 +-
.../java/net/taler/wallet/SendFundsFragment.kt | 4 +-
.../net/taler/wallet/compose/AmountInputField.kt | 2 -
.../net/taler/wallet/compose/NumericInputField.kt | 3 +-
.../java/net/taler/wallet/compose/SelectionChip.kt | 2 -
.../net/taler/wallet/deposit/DepositFragment.kt | 7 +-
.../net/taler/wallet/deposit/DepositManager.kt | 10 +-
.../wallet/deposit/MakeBitcoinDepositComposable.kt | 3 +-
.../taler/wallet/deposit/MakeDepositComposable.kt | 112 ++++---------
.../net/taler/wallet/deposit/PayToUriFragment.kt | 3 -
.../wallet/payment/PayTemplateOrderComposable.kt | 2 -
.../wallet/peer/OutgoingPullIntroComposable.kt | 2 -
.../wallet/peer/OutgoingPushIntroComposable.kt | 4 +-
.../main/res/layout/fragment_manual_withdraw.xml | 180 +++++++++++----------
wallet/src/main/res/values/strings.xml | 2 +-
17 files changed, 140 insertions(+), 209 deletions(-)
diff --git a/wallet/build.gradle b/wallet/build.gradle
index c91c70d..be810a4 100644
--- a/wallet/build.gradle
+++ b/wallet/build.gradle
@@ -19,7 +19,7 @@ plugins {
id "kotlinx-serialization"
}
-def qtart_version = "0.9.3-dev.33"
+def qtart_version = "0.9.3-dev.34"
static def versionCodeEpoch() {
return (new Date().getTime() / 1000).toInteger()
@@ -41,8 +41,8 @@ android {
applicationId "net.taler.wallet"
minSdkVersion 24
targetSdkVersion 33
- versionCode 34
- versionName "0.9.3+p8"
+ versionCode 35
+ versionName "0.9.3+p9"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
diff --git a/wallet/src/main/AndroidManifest.xml
b/wallet/src/main/AndroidManifest.xml
index aee1525..7f8eb52 100644
--- a/wallet/src/main/AndroidManifest.xml
+++ b/wallet/src/main/AndroidManifest.xml
@@ -49,7 +49,8 @@
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleInstance"
- android:theme="@style/AppTheme.NoActionBar">
+ android:theme="@style/AppTheme.NoActionBar"
+ android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
diff --git a/wallet/src/main/java/net/taler/wallet/ReceiveFundsFragment.kt
b/wallet/src/main/java/net/taler/wallet/ReceiveFundsFragment.kt
index e560a71..a25c352 100644
--- a/wallet/src/main/java/net/taler/wallet/ReceiveFundsFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/ReceiveFundsFragment.kt
@@ -31,7 +31,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Button
-import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
@@ -111,7 +110,6 @@ class ReceiveFundsFragment : Fragment() {
}
}
-@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun ReceiveFundsIntro(
currency: String,
@@ -177,7 +175,7 @@ private fun ReceiveFundsIntro(
.height(IntrinsicSize.Max),
onClick = {
val amount = getAmount(currency, text)
- if (amount == null) isError = true
+ if (amount == null || amount.isZero()) isError = true
else onPeerPull(amount)
},
) {
diff --git a/wallet/src/main/java/net/taler/wallet/SendFundsFragment.kt
b/wallet/src/main/java/net/taler/wallet/SendFundsFragment.kt
index b33e53b..a0a0c6f 100644
--- a/wallet/src/main/java/net/taler/wallet/SendFundsFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/SendFundsFragment.kt
@@ -29,7 +29,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Button
-import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
@@ -91,7 +90,6 @@ class SendFundsFragment : Fragment() {
}
}
-@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun SendFundsIntro(
currency: String,
@@ -143,7 +141,7 @@ private fun SendFundsIntro(
Row(modifier = Modifier.padding(16.dp)) {
fun onClickButton(block: (Amount) -> Unit) {
val amount = getAmount(currency, text)
- if (amount == null) isError = true
+ if (amount == null || amount.isZero()) isError = true
else if (!hasSufficientBalance(amount)) insufficientBalance =
true
else block(amount)
}
diff --git a/wallet/src/main/java/net/taler/wallet/compose/AmountInputField.kt
b/wallet/src/main/java/net/taler/wallet/compose/AmountInputField.kt
index 0229ec5..20f8006 100644
--- a/wallet/src/main/java/net/taler/wallet/compose/AmountInputField.kt
+++ b/wallet/src/main/java/net/taler/wallet/compose/AmountInputField.kt
@@ -22,7 +22,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
-import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.LocalTextStyle
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
@@ -43,7 +42,6 @@ import androidx.compose.ui.unit.dp
import net.taler.common.Amount
import java.text.DecimalFormat
-@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun AmountInputField(
value: String,
diff --git a/wallet/src/main/java/net/taler/wallet/compose/NumericInputField.kt
b/wallet/src/main/java/net/taler/wallet/compose/NumericInputField.kt
index c9d2fc5..47401cf 100644
--- a/wallet/src/main/java/net/taler/wallet/compose/NumericInputField.kt
+++ b/wallet/src/main/java/net/taler/wallet/compose/NumericInputField.kt
@@ -20,14 +20,12 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.Remove
-import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.OutlinedTextField
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
-@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun NumericInputField(
modifier: Modifier = Modifier,
@@ -41,6 +39,7 @@ fun NumericInputField(
OutlinedTextField(
modifier = modifier,
value = value.toString(),
+ singleLine = true,
readOnly = readOnly,
onValueChange = {
val dd = it.toLongOrNull() ?: 0
diff --git a/wallet/src/main/java/net/taler/wallet/compose/SelectionChip.kt
b/wallet/src/main/java/net/taler/wallet/compose/SelectionChip.kt
index 454bbfa..c47f55d 100644
--- a/wallet/src/main/java/net/taler/wallet/compose/SelectionChip.kt
+++ b/wallet/src/main/java/net/taler/wallet/compose/SelectionChip.kt
@@ -16,7 +16,6 @@
package net.taler.wallet.compose
-import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.SuggestionChip
import androidx.compose.material3.SuggestionChipDefaults
@@ -24,7 +23,6 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
-@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun <T> SelectionChip(
label: @Composable () -> Unit,
diff --git a/wallet/src/main/java/net/taler/wallet/deposit/DepositFragment.kt
b/wallet/src/main/java/net/taler/wallet/deposit/DepositFragment.kt
index d773293..28dcc3f 100644
--- a/wallet/src/main/java/net/taler/wallet/deposit/DepositFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/deposit/DepositFragment.kt
@@ -48,10 +48,8 @@ class DepositFragment : Fragment() {
} ?: error("no amount passed")
val receiverName = arguments?.getString("receiverName")
val iban = arguments?.getString("IBAN")
- val bic = arguments?.getString("BIC") ?: ""
-
if (receiverName != null && iban != null) {
- onDepositButtonClicked(amount, receiverName, iban, bic)
+ onDepositButtonClicked(amount, receiverName, iban)
}
return ComposeView(requireContext()).apply {
setContent {
@@ -109,8 +107,7 @@ class DepositFragment : Fragment() {
amount: Amount,
receiverName: String,
iban: String,
- bic: String,
) {
- depositManager.onDepositButtonClicked(amount, receiverName, iban, bic)
+ depositManager.onDepositButtonClicked(amount, receiverName, iban)
}
}
diff --git a/wallet/src/main/java/net/taler/wallet/deposit/DepositManager.kt
b/wallet/src/main/java/net/taler/wallet/deposit/DepositManager.kt
index 35cca1c..0075f95 100644
--- a/wallet/src/main/java/net/taler/wallet/deposit/DepositManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/deposit/DepositManager.kt
@@ -46,10 +46,10 @@ class DepositManager(
}
@UiThread
- fun onDepositButtonClicked(amount: Amount, receiverName: String, iban:
String, bic: String) {
+ fun onDepositButtonClicked(amount: Amount, receiverName: String, iban:
String) {
if (depositState.value is DepositState.FeesChecked) {
// fees already checked, so IBAN was validated, can make deposit
directly
- makeIbanDeposit(amount, receiverName, iban, bic)
+ makeIbanDeposit(amount, receiverName, iban)
} else {
// validate IBAN first
mDepositState.value = DepositState.CheckingFees
@@ -62,7 +62,7 @@ class DepositManager(
}.onSuccess { response ->
if (response.valid) {
// only prepare/make deposit, if IBAN is valid
- makeIbanDeposit(amount, receiverName, iban, bic)
+ makeIbanDeposit(amount, receiverName, iban)
} else {
mDepositState.value = DepositState.IbanInvalid
}
@@ -72,10 +72,10 @@ class DepositManager(
}
@UiThread
- private fun makeIbanDeposit(amount: Amount, receiverName: String, iban:
String, bic: String) {
+ private fun makeIbanDeposit(amount: Amount, receiverName: String, iban:
String) {
val paytoUri: String = PaytoUriIban(
iban = iban,
- bic = bic,
+ bic = null,
targetPath = "",
params = mapOf("receiver-name" to receiverName),
).paytoUri
diff --git
a/wallet/src/main/java/net/taler/wallet/deposit/MakeBitcoinDepositComposable.kt
b/wallet/src/main/java/net/taler/wallet/deposit/MakeBitcoinDepositComposable.kt
index d961f34..3fa0d98 100644
---
a/wallet/src/main/java/net/taler/wallet/deposit/MakeBitcoinDepositComposable.kt
+++
b/wallet/src/main/java/net/taler/wallet/deposit/MakeBitcoinDepositComposable.kt
@@ -23,7 +23,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Button
-import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Surface
@@ -51,7 +50,6 @@ import net.taler.wallet.R
import net.taler.wallet.transactions.AmountType
import net.taler.wallet.transactions.TransactionAmountComposable
-@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun MakeBitcoinDepositComposable(
state: DepositState,
@@ -73,6 +71,7 @@ fun MakeBitcoinDepositComposable(
.padding(16.dp)
.focusRequester(focusRequester),
value = address,
+ singleLine = true,
enabled = !state.showFees,
onValueChange = { input ->
address = input
diff --git
a/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt
b/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt
index d14ed96..2fc4d55 100644
--- a/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt
@@ -23,7 +23,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Button
-import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Surface
@@ -41,22 +40,23 @@ import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalFocusManager
-import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import net.taler.common.Amount
import net.taler.wallet.R
+import net.taler.wallet.transactions.AmountType.Negative
+import net.taler.wallet.transactions.AmountType.Positive
+import net.taler.wallet.transactions.TransactionAmountComposable
-@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun MakeDepositComposable(
state: DepositState,
amount: Amount,
presetName: String? = null,
presetIban: String? = null,
- onMakeDeposit: (Amount, String, String, String) -> Unit,
+ onMakeDeposit: (Amount, String, String) -> Unit,
) {
val scrollState = rememberScrollState()
Column(
@@ -67,18 +67,18 @@ fun MakeDepositComposable(
) {
var name by rememberSaveable { mutableStateOf(presetName ?: "") }
var iban by rememberSaveable { mutableStateOf(presetIban ?: "") }
- var bic by rememberSaveable { mutableStateOf("") }
- var bicInvalid by rememberSaveable { mutableStateOf(false) }
val focusRequester = remember { FocusRequester() }
OutlinedTextField(
modifier = Modifier
.padding(16.dp)
- .focusRequester(focusRequester),
+ .focusRequester(focusRequester)
+ .fillMaxWidth(),
value = name,
enabled = !state.showFees,
onValueChange = { input ->
name = input
},
+ singleLine = true,
isError = name.isBlank(),
label = {
Text(
@@ -95,8 +95,10 @@ fun MakeDepositComposable(
val ibanError = state is DepositState.IbanInvalid
OutlinedTextField(
modifier = Modifier
- .padding(16.dp),
+ .padding(horizontal = 16.dp)
+ .fillMaxWidth(),
value = iban,
+ singleLine = true,
enabled = !state.showFees,
onValueChange = { input ->
iban = input.uppercase()
@@ -120,46 +122,14 @@ fun MakeDepositComposable(
)
}
)
- OutlinedTextField(
- modifier = Modifier
- .padding(16.dp),
- value = bic,
- enabled = !state.showFees,
- onValueChange = { input ->
- bicInvalid = false
- bic = input
- },
- isError = bicInvalid,
- supportingText = {
- if (bicInvalid) {
- Text(
- modifier = Modifier.fillMaxWidth(),
- text = stringResource(R.string.send_deposit_bic_error),
- color = MaterialTheme.colorScheme.error
- )
- }
+ TransactionAmountComposable(
+ label = if (state.effectiveDepositAmount == null) {
+ stringResource(R.string.amount_chosen)
+ } else {
+ stringResource(R.string.send_deposit_amount_effective)
},
- label = {
- Text(
- text = stringResource(R.string.send_deposit_bic),
- )
- }
- )
- val amountTitle = if (state.effectiveDepositAmount == null) {
- R.string.amount_chosen
- } else R.string.send_deposit_amount_effective
- Text(
- modifier = Modifier.padding(horizontal = 16.dp),
- text = stringResource(id = amountTitle),
- )
- val shownAmount = if (state.effectiveDepositAmount == null) amount
else {
- state.effectiveDepositAmount
- }
- Text(
- modifier = Modifier.padding(16.dp),
- fontSize = 24.sp,
- color = colorResource(R.color.green),
- text = shownAmount.toString(),
+ amount = state.effectiveDepositAmount ?: amount,
+ amountType = Positive,
)
AnimatedVisibility(visible = state.showFees) {
Column(
@@ -169,29 +139,17 @@ fun MakeDepositComposable(
val totalAmount = state.totalDepositCost ?: amount
val effectiveAmount = state.effectiveDepositAmount ?:
Amount.zero(amount.currency)
val fee = totalAmount - effectiveAmount
- Text(
- modifier = Modifier.padding(horizontal = 16.dp),
- text = stringResource(id = R.string.withdraw_fees),
- )
- Text(
- modifier = Modifier.padding(16.dp),
- fontSize = 24.sp,
- color = if (fee.isZero()) colorResource(R.color.green)
else MaterialTheme.colorScheme.error,
- text = if (fee.isZero()) {
- fee.toString()
- } else {
- stringResource(R.string.amount_negative,
fee.toString())
- },
- )
- Text(
- modifier = Modifier.padding(horizontal = 16.dp),
- text = stringResource(id = R.string.send_amount),
+
+ TransactionAmountComposable(
+ label = stringResource(R.string.withdraw_fees),
+ amount = fee,
+ amountType = if (fee.isZero()) Positive else Negative,
)
- Text(
- modifier = Modifier.padding(16.dp),
- fontSize = 24.sp,
- color = colorResource(R.color.green),
- text = totalAmount.toString(),
+
+ TransactionAmountComposable(
+ label = stringResource(R.string.send_amount),
+ amount = totalAmount,
+ amountType = Positive,
)
}
}
@@ -209,11 +167,7 @@ fun MakeDepositComposable(
enabled = iban.isNotBlank(),
onClick = {
focusManager.clearFocus()
- if (isValidBic(bic)) {
- onMakeDeposit(amount, name, iban, bic)
- } else {
- bicInvalid = true
- }
+ onMakeDeposit(amount, name, iban)
},
) {
Text(
@@ -226,14 +180,6 @@ fun MakeDepositComposable(
}
}
-private val bicRegex = Regex("[a-zA-Z\\d]{8,11}")
-
-/**
- * performs some minimal verification, nothing perfect.
- * Allows for empty string.
- */
-private fun isValidBic(bic: String): Boolean = bic.isEmpty() ||
bicRegex.matches(bic)
-
@Preview
@Composable
fun PreviewMakeDepositComposable() {
@@ -244,7 +190,7 @@ fun PreviewMakeDepositComposable() {
)
MakeDepositComposable(
state = state,
- amount = Amount.fromString("TESTKUDOS", "42.23")) { _, _, _, _ ->
+ amount = Amount.fromString("TESTKUDOS", "42.23")) { _, _, _ ->
}
}
}
diff --git a/wallet/src/main/java/net/taler/wallet/deposit/PayToUriFragment.kt
b/wallet/src/main/java/net/taler/wallet/deposit/PayToUriFragment.kt
index 4bc91e1..c7a4eb0 100644
--- a/wallet/src/main/java/net/taler/wallet/deposit/PayToUriFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/deposit/PayToUriFragment.kt
@@ -34,7 +34,6 @@ import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Button
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
-import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.LocalTextStyle
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField
@@ -115,7 +114,6 @@ class PayToUriFragment : Fragment() {
}
-@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun PayToComposable(
currencies: List<String>,
@@ -181,7 +179,6 @@ private fun PayToComposable(
}
}
-@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun CurrencyDropdown(
currencies: List<String>,
diff --git
a/wallet/src/main/java/net/taler/wallet/payment/PayTemplateOrderComposable.kt
b/wallet/src/main/java/net/taler/wallet/payment/PayTemplateOrderComposable.kt
index 1524faf..d6131c7 100644
---
a/wallet/src/main/java/net/taler/wallet/payment/PayTemplateOrderComposable.kt
+++
b/wallet/src/main/java/net/taler/wallet/payment/PayTemplateOrderComposable.kt
@@ -21,7 +21,6 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Button
-import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
@@ -41,7 +40,6 @@ import net.taler.wallet.compose.AmountInputField
import net.taler.wallet.compose.TalerSurface
import net.taler.wallet.deposit.CurrencyDropdown
-@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun PayTemplateOrderComposable(
currencies: List<String>, // assumed to have size > 0
diff --git
a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullIntroComposable.kt
b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullIntroComposable.kt
index ff6e2ee..92bc72e 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullIntroComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullIntroComposable.kt
@@ -22,7 +22,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Button
-import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Surface
@@ -52,7 +51,6 @@ import
net.taler.wallet.transactions.TransactionAmountComposable
import net.taler.wallet.transactions.TransactionInfoComposable
import kotlin.random.Random
-@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun OutgoingPullIntroComposable(
amount: Amount,
diff --git
a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushIntroComposable.kt
b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushIntroComposable.kt
index 96af156..98391be 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushIntroComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushIntroComposable.kt
@@ -30,6 +30,7 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableLongStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
@@ -47,7 +48,6 @@ import net.taler.common.Amount
import net.taler.wallet.R
import kotlin.random.Random
-@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun OutgoingPushIntroComposable(
state: OutgoingState,
@@ -117,7 +117,7 @@ fun OutgoingPushIntroComposable(
style = MaterialTheme.typography.bodyMedium,
)
var option by rememberSaveable { mutableStateOf(DEFAULT_EXPIRY) }
- var hours by rememberSaveable { mutableStateOf(DEFAULT_EXPIRY.hours) }
+ var hours by rememberSaveable {
mutableLongStateOf(DEFAULT_EXPIRY.hours) }
ExpirationComposable(
modifier = Modifier.padding(top = 8.dp, bottom = 16.dp),
option = option,
diff --git a/wallet/src/main/res/layout/fragment_manual_withdraw.xml
b/wallet/src/main/res/layout/fragment_manual_withdraw.xml
index 9225d16..6d5f78b 100644
--- a/wallet/src/main/res/layout/fragment_manual_withdraw.xml
+++ b/wallet/src/main/res/layout/fragment_manual_withdraw.xml
@@ -14,105 +14,109 @@
~ GNU Taler; see the file COPYING. If not, see
<http://www.gnu.org/licenses/>
-->
-<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
+<ScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+ <com.google.android.material.button.MaterialButton
+ android:id="@+id/qrCodeButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="32dp"
+ app:icon="@drawable/ic_scan_qr"
+ app:iconTint="?colorOnPrimary"
+ android:text="@string/button_scan_qr_code"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="0.5"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintVertical_chainStyle="packed"
+ tools:ignore="RtlHardcoded" />
- <com.google.android.material.button.MaterialButton
- android:id="@+id/qrCodeButton"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="32dp"
- app:icon="@drawable/ic_scan_qr"
- app:iconTint="?colorOnPrimary"
- android:text="@string/button_scan_qr_code"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_bias="0.5"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_chainStyle="packed"
- tools:ignore="RtlHardcoded" />
-
- <TextView
- android:id="@+id/orView"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="32dp"
- android:text="@string/or"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_bias="0.5"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/qrCodeButton" />
-
- <TextView
- android:id="@+id/manualWithdrawIntro"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="32dp"
- android:text="@string/withdraw_manual_title"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/orView" />
+ <TextView
+ android:id="@+id/orView"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="32dp"
+ android:text="@string/or"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="0.5"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/qrCodeButton" />
- <com.google.android.material.textfield.TextInputLayout
- android:id="@+id/amountLayout"
- style="@style/Widget.Material3.TextInputLayout.OutlinedBox.Dense"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
- android:layout_marginTop="16dp"
- android:layout_marginEnd="16dp"
- android:minWidth="128dp"
- app:boxBackgroundMode="outline"
- app:endIconDrawable="@drawable/ic_cancel"
- app:endIconMode="clear_text"
- app:layout_constraintEnd_toStartOf="@+id/currencyView"
- app:layout_constraintHorizontal_chainStyle="packed"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/manualWithdrawIntro">
+ <TextView
+ android:id="@+id/manualWithdrawIntro"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="32dp"
+ android:text="@string/withdraw_manual_title"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/orView" />
- <com.google.android.material.textfield.TextInputEditText
- android:id="@+id/amountView"
+ <com.google.android.material.textfield.TextInputLayout
+ android:id="@+id/amountLayout"
+ style="@style/Widget.Material3.TextInputLayout.OutlinedBox.Dense"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:inputType="numberDecimal" />
+ android:layout_marginStart="16dp"
+ android:layout_marginTop="16dp"
+ android:layout_marginEnd="16dp"
+ android:minWidth="128dp"
+ app:boxBackgroundMode="outline"
+ app:endIconDrawable="@drawable/ic_cancel"
+ app:endIconMode="clear_text"
+ app:layout_constraintEnd_toStartOf="@+id/currencyView"
+ app:layout_constraintHorizontal_chainStyle="packed"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/manualWithdrawIntro">
- </com.google.android.material.textfield.TextInputLayout>
+ <com.google.android.material.textfield.TextInputEditText
+ android:id="@+id/amountView"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:inputType="numberDecimal" />
- <TextView
- android:id="@+id/currencyView"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- app:layout_constraintBottom_toBottomOf="@+id/amountLayout"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toEndOf="@+id/amountLayout"
- app:layout_constraintTop_toTopOf="@+id/amountLayout"
- tools:text="TESTKUDOS123" />
+ </com.google.android.material.textfield.TextInputLayout>
- <TextView
- android:id="@+id/paymentOptionsLabel"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
- android:layout_marginTop="32dp"
- android:layout_marginEnd="16dp"
- android:text="@string/withdraw_manual_payment_options"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/amountLayout" />
+ <TextView
+ android:id="@+id/currencyView"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ app:layout_constraintBottom_toBottomOf="@+id/amountLayout"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/amountLayout"
+ app:layout_constraintTop_toTopOf="@+id/amountLayout"
+ tools:text="TESTKUDOS123" />
- <Button
- android:id="@+id/checkFeesButton"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="32dp"
- android:layout_marginEnd="16dp"
- android:text="@string/withdraw_manual_check_fees"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/paymentOptionsLabel"
- app:layout_constraintVertical_bias="0.0" />
+ <TextView
+ android:id="@+id/paymentOptionsLabel"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="16dp"
+ android:layout_marginTop="32dp"
+ android:layout_marginEnd="16dp"
+ android:text="@string/withdraw_manual_payment_options"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/amountLayout" />
+
+ <Button
+ android:id="@+id/checkFeesButton"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="32dp"
+ android:layout_marginEnd="16dp"
+ android:text="@string/withdraw_manual_check_fees"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/paymentOptionsLabel"
+ app:layout_constraintVertical_bias="0.0" />
-</androidx.constraintlayout.widget.ConstraintLayout>
+ </androidx.constraintlayout.widget.ConstraintLayout>
+</ScrollView>
\ No newline at end of file
diff --git a/wallet/src/main/res/values/strings.xml
b/wallet/src/main/res/values/strings.xml
index 79b808c..407fd72 100644
--- a/wallet/src/main/res/values/strings.xml
+++ b/wallet/src/main/res/values/strings.xml
@@ -166,7 +166,7 @@ GNU Taler is immune against many types of fraud, such as
phishing of credit card
<string name="send_peer_bitcoin">To another Taler wallet</string>
<string name="send_peer_title">Send money to another wallet</string>
<string name="send_peer_create_button">Send funds now</string>
- <string name="send_peer_warning">Warning: Funds will leave the wallet
immediately.</string>
+ <string name="send_peer_warning">Funds will leave the wallet
immediately.</string>
<string name="send_peer_payment_instruction">Let the payee scan this QR
code to receive:</string>
<string name="send_peer_payment_amount_received">Amount received</string>
<string name="send_peer_payment_amount_sent">Amount sent</string>
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-taler-android] branch master updated (ee4f4a5 -> 7f351d4),
gnunet <=
- [taler-taler-android] 08/08: [wallet] release 0.9.3+p9, gnunet, 2023/10/25
- [taler-taler-android] 02/08: [wallet] Remove "Warning:" from push payment screen, gnunet, 2023/10/25
- [taler-taler-android] 07/08: [wallet] Make more TextFields singleLine, gnunet, 2023/10/25
- [taler-taler-android] 04/08: [wallet] Make keyboard resize views and make manual withdraw scrollable, gnunet, 2023/10/25
- [taler-taler-android] 06/08: [wallet] Don't allow zero amount for p2p transactions, gnunet, 2023/10/25
- [taler-taler-android] 01/08: [wallet] update wallet-core to dev.34, gnunet, 2023/10/25
- [taler-taler-android] 03/08: [wallet] Remove deprecated ExperimentalMaterial3Api decorators, gnunet, 2023/10/25
- [taler-taler-android] 05/08: [wallet] Refactor wire transfer and remove BIC/SWIFT field, gnunet, 2023/10/25