diff --git a/app/src/main/kotlin/app/grapheneos/info/InfoApp.kt b/app/src/main/kotlin/app/grapheneos/info/InfoApp.kt
index 96f42ba..2a908a9 100644
--- a/app/src/main/kotlin/app/grapheneos/info/InfoApp.kt
+++ b/app/src/main/kotlin/app/grapheneos/info/InfoApp.kt
@@ -507,7 +507,12 @@ fun InfoApp() {
) {
BankTransfersScreen(
modifier = Modifier.consumeWindowInsets(innerPadding),
- additionalContentPadding = innerPadding
+ additionalContentPadding = innerPadding,
+ showSnackbarError = {
+ snackbarCoroutine.launch {
+ snackbarHostState.showSnackbar(it)
+ }
+ }
)
}
}
diff --git a/app/src/main/kotlin/app/grapheneos/info/ui/donate/banktransfers/BankTransfersScreen.kt b/app/src/main/kotlin/app/grapheneos/info/ui/donate/banktransfers/BankTransfersScreen.kt
index 8b88fc2..d48bf16 100644
--- a/app/src/main/kotlin/app/grapheneos/info/ui/donate/banktransfers/BankTransfersScreen.kt
+++ b/app/src/main/kotlin/app/grapheneos/info/ui/donate/banktransfers/BankTransfersScreen.kt
@@ -21,7 +21,8 @@ import app.grapheneos.info.ui.reusablecomposables.ScreenLazyColumn
@Composable
fun BankTransfersScreen(
modifier: Modifier = Modifier,
- additionalContentPadding: PaddingValues = PaddingValues(0.dp)
+ additionalContentPadding: PaddingValues = PaddingValues(0.dp),
+ showSnackbarError: (String) -> Unit = {}
) {
ScreenLazyColumn(
modifier = modifier
@@ -35,6 +36,11 @@ fun BankTransfersScreen(
style = MaterialTheme.typography.titleLarge
)
}
+ item {
+ WiseQuickLinkCard(
+ showSnackbarError = showSnackbarError
+ )
+ }
item {
AccountInfoItem(
title = stringResource(R.string.eu_sepa_eur)
diff --git a/app/src/main/kotlin/app/grapheneos/info/ui/donate/banktransfers/WiseQuickLinkCard.kt b/app/src/main/kotlin/app/grapheneos/info/ui/donate/banktransfers/WiseQuickLinkCard.kt
new file mode 100644
index 0000000..d21552a
--- /dev/null
+++ b/app/src/main/kotlin/app/grapheneos/info/ui/donate/banktransfers/WiseQuickLinkCard.kt
@@ -0,0 +1,65 @@
+package app.grapheneos.info.ui.donate.banktransfers
+
+import android.content.res.Configuration
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.material3.ElevatedCard
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.LocalUriHandler
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.tooling.preview.Wallpapers
+import androidx.compose.ui.unit.dp
+import app.grapheneos.info.R
+
+@Composable
+fun WiseQuickLinkCard(
+ modifier: Modifier = Modifier,
+ showSnackbarError: (String) -> Unit = {}
+) {
+ val wiseQuickLinkUrl = "https://wise.com/pay/business/grapheneosfoundation"
+ val uriHandler = LocalUriHandler.current
+ val openUriIllegalArgumentExceptionSnackbarError =
+ stringResource(R.string.browser_link_illegal_argument_exception_snackbar_error)
+
+ ElevatedCard(
+ onClick = {
+ try {
+ uriHandler.openUri(wiseQuickLinkUrl)
+ } catch (_: IllegalArgumentException) {
+ showSnackbarError(openUriIllegalArgumentExceptionSnackbarError)
+ }
+ },
+ modifier = modifier.fillMaxWidth()
+ ) {
+ Column(
+ modifier = Modifier.padding(16.dp)
+ ) {
+ Text(
+ text = stringResource(R.string.wise_quick_link_title),
+ Modifier.padding(bottom = 24.dp),
+ style = MaterialTheme.typography.titleLarge
+ )
+ Text(
+ text = stringResource(R.string.wise_quick_link_description)
+ )
+ }
+ }
+}
+
+
+@Preview(
+ showBackground = true,
+ wallpaper = Wallpapers.RED_DOMINATED_EXAMPLE,
+ uiMode = Configuration.UI_MODE_NIGHT_UNDEFINED
+)
+@Composable
+fun WiseQuickLinkCardPreview() {
+ MaterialTheme {
+ WiseQuickLinkCard()
+ }
+}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index fb4e569..fa62db5 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -14,6 +14,11 @@
Cardano
Litecoin
Local Bank Transfer to Wise
+ Wise Quick Pay
+ If you have a Wise account, you can donate directly via Wise using our Wise Quick Pay link rather than using the bank account details.
+ This enables sending donations from anywhere Wise is available. If the currency you\'re using isn\'t listed due to not being one of the currencies where we accept local bank transfers,
+ please select CAD or USD so we can avoid another conversion.
+
EU/SEPA (EUR)
Account holder
GrapheneOS Foundation