aboutsummaryrefslogtreecommitdiff
path: root/wallet/src/main/java/net/taler/wallet/peer
diff options
context:
space:
mode:
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/peer')
-rw-r--r--wallet/src/main/java/net/taler/wallet/peer/IncomingPullPaymentFragment.kt2
-rw-r--r--wallet/src/main/java/net/taler/wallet/peer/IncomingPushPaymentFragment.kt2
-rw-r--r--wallet/src/main/java/net/taler/wallet/peer/OutgoingPullFragment.kt2
-rw-r--r--wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt2
-rw-r--r--wallet/src/main/java/net/taler/wallet/peer/OutgoingPushResultComposable.kt63
-rw-r--r--wallet/src/main/java/net/taler/wallet/peer/PeerManager.kt9
-rw-r--r--wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt2
-rw-r--r--wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt2
8 files changed, 27 insertions, 57 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/peer/IncomingPullPaymentFragment.kt b/wallet/src/main/java/net/taler/wallet/peer/IncomingPullPaymentFragment.kt
index c5c41d7..6a74c30 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/IncomingPullPaymentFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/IncomingPullPaymentFragment.kt
@@ -27,7 +27,7 @@ import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import net.taler.wallet.MainViewModel
import net.taler.wallet.R
-import net.taler.wallet.TalerSurface
+import net.taler.wallet.compose.TalerSurface
import net.taler.wallet.compose.collectAsStateLifecycleAware
class IncomingPullPaymentFragment : Fragment() {
diff --git a/wallet/src/main/java/net/taler/wallet/peer/IncomingPushPaymentFragment.kt b/wallet/src/main/java/net/taler/wallet/peer/IncomingPushPaymentFragment.kt
index c0fbad9..56734e3 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/IncomingPushPaymentFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/IncomingPushPaymentFragment.kt
@@ -27,7 +27,7 @@ import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import net.taler.wallet.MainViewModel
import net.taler.wallet.R
-import net.taler.wallet.TalerSurface
+import net.taler.wallet.compose.TalerSurface
import net.taler.wallet.compose.collectAsStateLifecycleAware
class IncomingPushPaymentFragment : Fragment() {
diff --git a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullFragment.kt b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullFragment.kt
index 8a226b3..b9634d5 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPullFragment.kt
@@ -27,7 +27,7 @@ import androidx.navigation.findNavController
import net.taler.common.Amount
import net.taler.wallet.MainViewModel
import net.taler.wallet.R
-import net.taler.wallet.TalerSurface
+import net.taler.wallet.compose.TalerSurface
import net.taler.wallet.compose.collectAsStateLifecycleAware
import net.taler.wallet.exchanges.ExchangeItem
diff --git a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt
index c9b3a78..b110876 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushFragment.kt
@@ -27,7 +27,7 @@ import androidx.navigation.findNavController
import net.taler.common.Amount
import net.taler.wallet.MainViewModel
import net.taler.wallet.R
-import net.taler.wallet.TalerSurface
+import net.taler.wallet.compose.TalerSurface
import net.taler.wallet.compose.collectAsStateLifecycleAware
class OutgoingPushFragment : Fragment() {
diff --git a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushResultComposable.kt b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushResultComposable.kt
index 6d8b5dc..5afac59 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushResultComposable.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/OutgoingPushResultComposable.kt
@@ -17,11 +17,8 @@
package net.taler.wallet.peer
import android.content.res.Configuration.UI_MODE_NIGHT_YES
-import androidx.compose.foundation.Image
-import androidx.compose.foundation.horizontalScroll
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ColumnScope
-import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
@@ -29,28 +26,21 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.Button
import androidx.compose.material.CircularProgressIndicator
-import androidx.compose.material.Icon
-import androidx.compose.material.IconButton
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.material.Text
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.ContentCopy
import androidx.compose.runtime.Composable
-import androidx.compose.ui.Alignment
import androidx.compose.ui.Alignment.Companion.CenterHorizontally
import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.asImageBitmap
-import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.stringResource
-import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import net.taler.common.QrCodeManager
import net.taler.wallet.R
import net.taler.wallet.backend.TalerErrorInfo
-import net.taler.wallet.compose.copyToClipBoard
+import net.taler.wallet.compose.QrCodeUriComposable
+import net.taler.wallet.compose.TalerSurface
import net.taler.wallet.compose.getQrCodeSize
import org.json.JSONObject
@@ -95,42 +85,15 @@ private fun ColumnScope.PeerPushCreatingComposable() {
@Composable
private fun ColumnScope.PeerPushResponseComposable(state: OutgoingResponse) {
- val qrCodeSize = getQrCodeSize()
- Image(
- modifier = Modifier
- .size(qrCodeSize)
- .align(CenterHorizontally),
- bitmap = state.qrCode.asImageBitmap(),
- contentDescription = stringResource(id = R.string.button_scan_qr_code),
- )
- Text(
- modifier = Modifier.padding(horizontal = 16.dp),
- style = MaterialTheme.typography.body1,
- text = stringResource(id = R.string.receive_peer_invoice_uri),
- )
- val scrollState = rememberScrollState()
- Text(
- modifier = Modifier
- .horizontalScroll(scrollState)
- .padding(16.dp),
- fontFamily = FontFamily.Monospace,
- style = MaterialTheme.typography.body1,
- text = state.talerUri,
- )
- val context = LocalContext.current
- IconButton(
- modifier = Modifier
- .align(CenterHorizontally),
- onClick = { copyToClipBoard(context, "Invoice", state.talerUri) },
+ QrCodeUriComposable(
+ talerUri = state.talerUri,
+ clipBoardLabel = "Invoice",
) {
- Row(verticalAlignment = Alignment.CenterVertically) {
- Icon(Icons.Default.ContentCopy, stringResource(R.string.copy))
- Text(
- modifier = Modifier.padding(start = 8.dp),
- text = stringResource(R.string.copy),
- style = MaterialTheme.typography.body1,
- )
- }
+ Text(
+ modifier = Modifier.padding(horizontal = 16.dp),
+ style = MaterialTheme.typography.body1,
+ text = stringResource(id = R.string.receive_peer_invoice_uri),
+ )
}
}
@@ -154,10 +117,10 @@ fun PeerPushCreatingPreview() {
}
}
-@Preview
+@Preview(uiMode = UI_MODE_NIGHT_YES)
@Composable
fun PeerPushResponsePreview() {
- Surface {
+ TalerSurface {
val talerUri = "https://example.org/foo/bar/can/be/very/long/url/so/fit/it/on/screen"
val response = OutgoingResponse(talerUri, QrCodeManager.makeQrCode(talerUri))
OutgoingPushResultComposable(response) {}
@@ -167,7 +130,7 @@ fun PeerPushResponsePreview() {
@Preview(widthDp = 720, uiMode = UI_MODE_NIGHT_YES)
@Composable
fun PeerPushResponseLandscapePreview() {
- Surface {
+ TalerSurface {
val talerUri = "https://example.org/foo/bar/can/be/very/long/url/so/fit/it/on/screen"
val response = OutgoingResponse(talerUri, QrCodeManager.makeQrCode(talerUri))
OutgoingPushResultComposable(response) {}
diff --git a/wallet/src/main/java/net/taler/wallet/peer/PeerManager.kt b/wallet/src/main/java/net/taler/wallet/peer/PeerManager.kt
index 1e53e7c..5f26119 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/PeerManager.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/PeerManager.kt
@@ -22,12 +22,16 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.launch
+import kotlinx.serialization.encodeToString
+import kotlinx.serialization.json.Json
import net.taler.common.Amount
import net.taler.common.QrCodeManager
+import net.taler.common.Timestamp
import net.taler.wallet.TAG
import net.taler.wallet.backend.WalletBackendApi
import net.taler.wallet.exchanges.ExchangeItem
import org.json.JSONObject
+import java.util.concurrent.TimeUnit.DAYS
class PeerManager(
private val api: WalletBackendApi,
@@ -51,8 +55,8 @@ class PeerManager(
scope.launch(Dispatchers.IO) {
api.request("initiatePeerPullPayment", InitiatePeerPullPaymentResponse.serializer()) {
put("exchangeBaseUrl", exchange.exchangeBaseUrl)
- put("amount", amount.toJSONString())
put("partialContractTerms", JSONObject().apply {
+ put("amount", amount.toJSONString())
put("summary", summary)
})
}.onSuccess {
@@ -72,10 +76,13 @@ class PeerManager(
fun initiatePeerPushPayment(amount: Amount, summary: String) {
_outgoingPushState.value = OutgoingCreating
scope.launch(Dispatchers.IO) {
+ val expiry = Timestamp.fromMillis(System.currentTimeMillis() + DAYS.toMillis(3))
api.request("initiatePeerPushPayment", InitiatePeerPushPaymentResponse.serializer()) {
put("amount", amount.toJSONString())
put("partialContractTerms", JSONObject().apply {
+ put("amount", amount.toJSONString())
put("summary", summary)
+ put("purse_expiration", JSONObject(Json.encodeToString(expiry)))
})
}.onSuccess { response ->
val qrCode = QrCodeManager.makeQrCode(response.talerUri)
diff --git a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt
index 02b3774..92264c7 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPullCredit.kt
@@ -65,7 +65,7 @@ fun ColumnScope.TransactionPeerPullCreditComposable(t: TransactionPeerPullCredit
QrCodeUriComposable(
talerUri = t.talerUri,
clipBoardLabel = "Invoice",
- buttonText = stringResource(id = R.string.copy_uri),
+ buttonText = stringResource(id = R.string.copy),
) {
Text(
modifier = Modifier.padding(horizontal = 16.dp),
diff --git a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt
index f068fb8..88c27fe 100644
--- a/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt
+++ b/wallet/src/main/java/net/taler/wallet/peer/TransactionPeerPushDebit.kt
@@ -64,7 +64,7 @@ fun ColumnScope.TransactionPeerPushDebitComposable(t: TransactionPeerPushDebit)
QrCodeUriComposable(
talerUri = t.talerUri,
clipBoardLabel = "Push payment",
- buttonText = stringResource(id = R.string.copy_uri),
+ buttonText = stringResource(id = R.string.copy),
) {
Text(
modifier = Modifier.padding(horizontal = 16.dp),