From 0d6cbea23c2a579e7457fd30cd625bad5c225fa1 Mon Sep 17 00:00:00 2001 From: Inhishonor Date: Fri, 3 Oct 2025 21:34:41 -0700 Subject: [PATCH] Add wise quick link --- .../kotlin/app/grapheneos/info/InfoApp.kt | 7 +- .../banktransfers/BankTransfersScreen.kt | 8 ++- .../donate/banktransfers/WiseQuickLinkCard.kt | 65 +++++++++++++++++++ app/src/main/res/values/strings.xml | 5 ++ 4 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 app/src/main/kotlin/app/grapheneos/info/ui/donate/banktransfers/WiseQuickLinkCard.kt 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