mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-07-10 07:54:25 +01:00
Migrate ideal icon and copy.
This commit is contained in:
+2
-2
@@ -348,7 +348,7 @@ class DonateToSignalFragment :
|
||||
if (state.oneTimeDonationState.isOneTimeDonationLongRunning) {
|
||||
R.string.DonateToSignalFragment__bank_transfers_usually_take_1_business_day_to_process_onetime
|
||||
} else if (state.oneTimeDonationState.isNonVerifiedIdeal) {
|
||||
R.string.DonateToSignalFragment__your_ideal_payment_is_still_processing
|
||||
R.string.DonateToSignalFragment__your_ideal_wero_payment_is_still_processing
|
||||
} else {
|
||||
R.string.DonateToSignalFragment__your_payment_is_still_being_processed_onetime
|
||||
}
|
||||
@@ -356,7 +356,7 @@ class DonateToSignalFragment :
|
||||
if (state.monthlyDonationState.activeSubscription?.paymentMethod == ActiveSubscription.PaymentMethod.SEPA_DEBIT) {
|
||||
R.string.DonateToSignalFragment__bank_transfers_usually_take_1_business_day_to_process_monthly
|
||||
} else if (state.monthlyDonationState.nonVerifiedMonthlyDonation != null) {
|
||||
R.string.DonateToSignalFragment__your_ideal_payment_is_still_processing
|
||||
R.string.DonateToSignalFragment__your_ideal_wero_payment_is_still_processing
|
||||
} else {
|
||||
R.string.DonateToSignalFragment__your_payment_is_still_being_processed_monthly
|
||||
}
|
||||
|
||||
+12
-12
@@ -18,10 +18,10 @@ import org.thoughtcrime.securesms.components.settings.DSLSettingsAdapter
|
||||
import org.thoughtcrime.securesms.components.settings.DSLSettingsBottomSheetFragment
|
||||
import org.thoughtcrime.securesms.components.settings.DSLSettingsIcon
|
||||
import org.thoughtcrime.securesms.components.settings.DSLSettingsText
|
||||
import org.thoughtcrime.securesms.components.settings.NO_TINT
|
||||
import org.thoughtcrime.securesms.components.settings.app.subscription.DonationSerializationHelper.toFiatMoney
|
||||
import org.thoughtcrime.securesms.components.settings.app.subscription.GooglePayComponent
|
||||
import org.thoughtcrime.securesms.components.settings.app.subscription.models.GooglePayButton
|
||||
import org.thoughtcrime.securesms.components.settings.app.subscription.models.IdealWeroButton
|
||||
import org.thoughtcrime.securesms.components.settings.app.subscription.models.PayPalButton
|
||||
import org.thoughtcrime.securesms.components.settings.configure
|
||||
import org.thoughtcrime.securesms.components.settings.models.IndeterminateLoadingCircle
|
||||
@@ -51,6 +51,7 @@ class GatewaySelectorBottomSheet : DSLSettingsBottomSheetFragment() {
|
||||
GooglePayButton.register(adapter)
|
||||
PayPalButton.register(adapter)
|
||||
IndeterminateLoadingCircle.register(adapter)
|
||||
IdealWeroButton.register(adapter)
|
||||
|
||||
lifecycleDisposable.bindTo(viewLifecycleOwner)
|
||||
|
||||
@@ -190,17 +191,16 @@ class GatewaySelectorBottomSheet : DSLSettingsBottomSheetFragment() {
|
||||
if (state.isIDEALAvailable) {
|
||||
space(16.dp)
|
||||
|
||||
tonalButton(
|
||||
text = DSLSettingsText.from(R.string.GatewaySelectorBottomSheet__ideal),
|
||||
icon = DSLSettingsIcon.from(R.drawable.logo_ideal, NO_TINT),
|
||||
disableOnClick = true,
|
||||
onClick = {
|
||||
lifecycleDisposable += viewModel.updateInAppPaymentMethod(InAppPaymentData.PaymentMethodType.IDEAL)
|
||||
.subscribeBy {
|
||||
findNavController().popBackStack()
|
||||
setFragmentResult(REQUEST_KEY, bundleOf(REQUEST_KEY to it))
|
||||
}
|
||||
}
|
||||
customPref(
|
||||
IdealWeroButton.Model(
|
||||
onClick = {
|
||||
lifecycleDisposable += viewModel.updateInAppPaymentMethod(InAppPaymentData.PaymentMethodType.IDEAL)
|
||||
.subscribeBy {
|
||||
findNavController().popBackStack()
|
||||
setFragmentResult(REQUEST_KEY, bundleOf(REQUEST_KEY to it))
|
||||
}
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -153,7 +153,7 @@ class IdealTransferDetailsFragment : ComposeFragment(), InAppPaymentCheckoutDele
|
||||
if (state.inAppPayment!!.type.recurring) { // TODO [message-requests] -- handle backup
|
||||
val formattedMoney = FiatMoneyUtil.format(requireContext().resources, state.inAppPayment.data.amount!!.toFiatMoney(), FiatMoneyUtil.formatOptions().trimZerosAfterDecimal())
|
||||
MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle(getString(R.string.IdealTransferDetailsFragment__confirm_your_donation_with_ideal))
|
||||
.setTitle(getString(R.string.IdealTransferDetailsFragment__confirm_your_donation_with_ideal_wero))
|
||||
.setMessage(getString(R.string.IdealTransferDetailsFragment__to_setup_your_recurring_donation, formattedMoney))
|
||||
.setPositiveButton(R.string.IdealTransferDetailsFragment__continue) { _, _ ->
|
||||
continueTransfer()
|
||||
@@ -218,7 +218,7 @@ private fun IdealTransferDetailsContent(
|
||||
onDonateClick: () -> Unit
|
||||
) {
|
||||
Scaffolds.Settings(
|
||||
title = stringResource(id = R.string.GatewaySelectorBottomSheet__ideal),
|
||||
title = stringResource(id = R.string.GatewaySelectorBottomSheet__ideal_wero),
|
||||
onNavigationClick = onNavigationClick,
|
||||
navigationIcon = SignalIcons.ArrowStart.imageVector
|
||||
) {
|
||||
|
||||
+3
-3
@@ -130,7 +130,7 @@ class ManageDonationsFragment :
|
||||
|
||||
MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle(R.string.ManageDonationsFragment__couldnt_confirm_donation)
|
||||
.setMessage(getString(R.string.ManageDonationsFragment__your_monthly_s_donation_couldnt_be_confirmed, amount))
|
||||
.setMessage(getString(R.string.ManageDonationsFragment__your_monthly_s_donation_couldnt_be_confirmed_ideal_wero, amount))
|
||||
.setPositiveButton(android.R.string.ok, null)
|
||||
.show()
|
||||
} else if (state.pendingOneTimeDonation?.pendingVerification == true &&
|
||||
@@ -143,7 +143,7 @@ class ManageDonationsFragment :
|
||||
|
||||
MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle(R.string.ManageDonationsFragment__couldnt_confirm_donation)
|
||||
.setMessage(getString(R.string.ManageDonationsFragment__your_one_time_s_donation_couldnt_be_confirmed, amount))
|
||||
.setMessage(getString(R.string.ManageDonationsFragment__your_one_time_s_donation_couldnt_be_confirmed_ideal_wero, amount))
|
||||
.setPositiveButton(android.R.string.ok, null)
|
||||
.show()
|
||||
}
|
||||
@@ -440,7 +440,7 @@ class ManageDonationsFragment :
|
||||
|
||||
else -> {
|
||||
val message = if (isIdeal) {
|
||||
R.string.DonationsErrors__your_ideal_couldnt_be_processed
|
||||
R.string.DonationsErrors__your_ideal_wero_couldnt_be_processed
|
||||
} else {
|
||||
R.string.DonationsErrors__try_another_payment_method
|
||||
}
|
||||
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
package org.thoughtcrime.securesms.components.settings.app.subscription.models
|
||||
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.material3.ButtonColors
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.Stable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import androidx.compose.ui.platform.ComposeView
|
||||
import androidx.compose.ui.res.colorResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.res.vectorResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import org.signal.core.ui.compose.Buttons
|
||||
import org.signal.core.ui.compose.DayNightPreviews
|
||||
import org.signal.core.ui.compose.Previews
|
||||
import org.signal.core.ui.compose.horizontalGutters
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.components.settings.PreferenceModel
|
||||
import org.thoughtcrime.securesms.components.settings.models.DSLComposePreference
|
||||
import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter
|
||||
|
||||
/**
|
||||
* DSL Ideal | Wero button for the payments gateway.
|
||||
*/
|
||||
object IdealWeroButton {
|
||||
|
||||
@Stable
|
||||
class Model(val onClick: () -> Unit) : PreferenceModel<Model>() {
|
||||
override fun areItemsTheSame(newItem: Model): Boolean = true
|
||||
}
|
||||
|
||||
class ViewHolder(itemView: ComposeView) : DSLComposePreference.ViewHolder<Model>(itemView) {
|
||||
@Composable
|
||||
override fun Content(model: Model) {
|
||||
IdealWeroButton(model)
|
||||
}
|
||||
}
|
||||
|
||||
fun register(adapter: MappingAdapter) {
|
||||
DSLComposePreference.register(adapter) { ViewHolder(it) }
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun IdealWeroButton(model: IdealWeroButton.Model) {
|
||||
var enabled by remember { mutableStateOf(true) }
|
||||
|
||||
Buttons.LargeTonal(
|
||||
contentPadding = PaddingValues(horizontal = 16.dp, vertical = 8.dp),
|
||||
onClick = {
|
||||
enabled = false
|
||||
model.onClick()
|
||||
},
|
||||
enabled = enabled,
|
||||
modifier = Modifier
|
||||
.height(44.dp)
|
||||
.horizontalGutters()
|
||||
.fillMaxWidth(),
|
||||
colors = ButtonColors(
|
||||
containerColor = colorResource(org.signal.core.ui.R.color.signal_light_colorPrimaryContainer),
|
||||
contentColor = colorResource(org.signal.core.ui.R.color.signal_light_colorOnPrimaryContainer),
|
||||
disabledContainerColor = colorResource(org.signal.core.ui.R.color.signal_light_colorPrimaryContainer),
|
||||
disabledContentColor = colorResource(org.signal.core.ui.R.color.signal_light_colorOnPrimaryContainer)
|
||||
)
|
||||
) {
|
||||
Image(
|
||||
imageVector = ImageVector.vectorResource(R.drawable.logo_ideal_wero),
|
||||
contentDescription = stringResource(R.string.GatewaySelectorBottomSheet__ideal_wero)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@DayNightPreviews
|
||||
@Composable
|
||||
private fun IdealWeroButtonPreview() {
|
||||
Previews.Preview {
|
||||
IdealWeroButton(model = remember { IdealWeroButton.Model(onClick = {}) })
|
||||
}
|
||||
}
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Copyright 2026 Signal Messenger, LLC
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
package org.thoughtcrime.securesms.components.settings.models
|
||||
|
||||
import android.view.ViewGroup
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.platform.ComposeView
|
||||
import androidx.compose.ui.platform.ViewCompositionStrategy
|
||||
import org.signal.core.ui.compose.theme.SignalTheme
|
||||
import org.thoughtcrime.securesms.util.adapter.mapping.Factory
|
||||
import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter
|
||||
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel
|
||||
import org.thoughtcrime.securesms.util.adapter.mapping.MappingViewHolder
|
||||
|
||||
/**
|
||||
* Allows hosting compose code in a DSL adapter.
|
||||
*/
|
||||
object DSLComposePreference {
|
||||
/**
|
||||
* Initializes the ComposeView to play nice with RecyclerView and manages the Model in a State.
|
||||
*/
|
||||
abstract class ViewHolder<T : MappingModel<T>>(composeView: ComposeView) : MappingViewHolder<T>(composeView) {
|
||||
|
||||
private var model: T? by mutableStateOf(null)
|
||||
|
||||
init {
|
||||
composeView.setViewCompositionStrategy(
|
||||
ViewCompositionStrategy.DisposeOnDetachedFromWindowOrReleasedFromPool
|
||||
)
|
||||
|
||||
composeView.setContent {
|
||||
val model = this.model ?: return@setContent
|
||||
|
||||
SignalTheme {
|
||||
Content(model)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun bind(model: T) {
|
||||
this.model = model
|
||||
}
|
||||
|
||||
@Composable
|
||||
abstract fun Content(model: T)
|
||||
}
|
||||
|
||||
/**
|
||||
* Does not need to be used directly, but does need to be non-private so that the inline register method can see it.
|
||||
*/
|
||||
class ComposeFactory<T : MappingModel<T>>(
|
||||
private val create: (ComposeView) -> MappingViewHolder<T>
|
||||
) : Factory<T> {
|
||||
override fun createViewHolder(parent: ViewGroup): MappingViewHolder<T> {
|
||||
return create(ComposeView(parent.context))
|
||||
}
|
||||
}
|
||||
|
||||
inline fun <reified T : MappingModel<T>> register(adapter: MappingAdapter, noinline create: (ComposeView) -> MappingViewHolder<T>) {
|
||||
adapter.registerFactory(T::class.java, ComposeFactory(create))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
<!--
|
||||
~ Copyright (C) 2026 The Android Open Source Project
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="80dp"
|
||||
android:height="28dp"
|
||||
android:viewportWidth="80"
|
||||
android:viewportHeight="28">
|
||||
<path
|
||||
android:pathData="M1.002,2.075V25.925C1.002,27.066 1.941,28 3.088,28H17.406C28.231,28 32.922,21.969 32.922,13.969C32.922,5.968 28.229,0 17.404,0H3.086C1.939,0 1,0.934 1,2.075H1.002Z"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M10.585,5.854V23.477H18.291C25.288,23.477 28.322,19.543 28.322,13.981C28.322,8.419 25.286,4.527 18.291,4.527H11.919C11.18,4.527 10.585,5.128 10.585,5.856V5.854Z"
|
||||
android:fillColor="#CC0066"/>
|
||||
<path
|
||||
android:pathData="M4.953,26.101H17.404C26.153,26.101 30.981,21.795 30.981,13.979C30.981,9.475 29.219,1.909 17.404,1.909H4.953C3.848,1.909 2.951,2.801 2.951,3.903V24.11C2.951,25.209 3.848,26.103 4.953,26.103V26.101ZM3.617,3.903C3.617,3.166 4.212,2.574 4.952,2.574H17.402C22.219,2.574 30.311,4.058 30.311,13.979C30.311,21.368 25.723,25.437 17.402,25.437H4.953C4.214,25.437 3.619,24.846 3.619,24.108V3.903H3.617Z"
|
||||
android:fillColor="#232323"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M14.376,11.417C14.142,11.334 13.897,11.292 13.631,11.292V11.281H11.867V15.537H13.652C13.968,15.537 14.243,15.474 14.479,15.369C14.713,15.254 14.907,15.107 15.061,14.918C15.215,14.729 15.327,14.498 15.407,14.236C15.479,13.974 15.519,13.691 15.519,13.376C15.519,13.019 15.469,12.715 15.376,12.453C15.274,12.201 15.142,11.981 14.979,11.802C14.806,11.634 14.612,11.498 14.377,11.414L14.376,11.417ZM13.958,14.699C13.825,14.741 13.703,14.762 13.57,14.762V14.773H12.764V12.089H13.416C13.64,12.089 13.823,12.12 13.977,12.183C14.131,12.246 14.253,12.351 14.344,12.467C14.435,12.582 14.507,12.739 14.549,12.907C14.589,13.075 14.61,13.274 14.61,13.484C14.61,13.726 14.579,13.914 14.519,14.082C14.458,14.25 14.376,14.376 14.285,14.481C14.194,14.586 14.08,14.659 13.958,14.701V14.699Z"
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M19.202,11.293V12.08H17.018V12.993H19.027V13.717H17.018V14.755H19.252V15.542H16.11V11.286H19.202V11.297V11.293Z"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M23.873,15.549L22.323,11.293H21.375L19.813,15.549H20.731L21.058,14.605H22.609L22.926,15.549H23.875H23.873ZM21.852,12.341L22.373,13.902H21.303L21.844,12.341H21.854H21.852Z"
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M25.353,11.292V14.762H27.372V15.549H24.445V11.293H25.353V11.292Z"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M7.004,15.612C8.109,15.612 9.005,14.717 9.005,13.61C9.005,12.503 8.109,11.608 7.004,11.608C5.899,11.608 5.004,12.503 5.004,13.61C5.004,14.717 5.899,15.612 7.004,15.612Z"
|
||||
android:fillColor="#232323"/>
|
||||
<path
|
||||
android:pathData="M8.195,23.618C6.646,23.618 5.404,22.281 5.404,20.637V18.31C5.404,17.488 6.025,16.813 6.805,16.813C7.585,16.813 8.205,17.478 8.205,18.31V23.618H8.195Z"
|
||||
android:fillColor="#232323"/>
|
||||
<path
|
||||
android:pathData="M69.993,14.096C69.993,11.757 71.657,9.625 74.532,9.625C77.406,9.625 79.083,11.758 79.083,14.096C79.083,16.434 77.419,18.567 74.532,18.567C71.657,18.567 69.993,16.434 69.993,14.096ZM76.557,14.096C76.557,12.968 75.813,11.928 74.532,11.928C73.25,11.928 72.507,12.97 72.507,14.096C72.507,15.222 73.262,16.266 74.532,16.266C75.801,16.266 76.557,15.224 76.557,14.096Z"
|
||||
android:fillColor="#1D1C1C"/>
|
||||
<path
|
||||
android:pathData="M68.225,15.757C69.183,15.212 69.759,14.17 69.759,13.019C69.759,11.311 68.524,9.856 66.608,9.856H62.585V18.338H65.076V16.17H65.543L66.968,18.338H69.902L68.225,15.757ZM66.106,14.217H65.076V11.818H66.118C66.79,11.818 67.22,12.363 67.22,13.017C67.22,13.671 66.776,14.217 66.106,14.217Z"
|
||||
android:fillColor="#1D1C1C"/>
|
||||
<path
|
||||
android:pathData="M51.211,9.845L49.716,14.9L48.258,9.845H46.273L44.803,14.9L43.32,9.845H40.69L43.703,18.312H45.866L47.264,13.703L48.651,18.312H50.826L53.839,9.845H51.209H51.211Z"
|
||||
android:fillColor="#1D1C1C"/>
|
||||
<path
|
||||
android:pathData="M57.61,16.245H57.605C56.673,16.245 56.019,15.682 55.739,14.937H62.071C62.121,14.658 62.147,14.371 62.147,14.08C62.147,11.748 60.488,9.62 57.61,9.618V11.916C58.547,11.918 59.194,12.481 59.472,13.224H53.15C53.099,13.503 53.073,13.79 53.073,14.08C53.073,16.415 54.734,18.544 57.603,18.544H57.609V16.245H57.61Z"
|
||||
android:fillColor="#1D1C1C"/>
|
||||
<path
|
||||
android:pathData="M57.605,18.542C57.703,18.542 57.799,18.539 57.894,18.535C58.476,18.506 59.006,18.387 59.478,18.196C59.95,18.006 60.364,17.742 60.715,17.423C61.069,17.105 61.359,16.733 61.584,16.322C61.789,15.948 61.939,15.544 62.034,15.122H59.395C59.341,15.234 59.278,15.343 59.207,15.442C59.109,15.58 58.993,15.705 58.862,15.811C58.731,15.92 58.584,16.011 58.423,16.081C58.262,16.15 58.086,16.199 57.895,16.226C57.803,16.238 57.706,16.245 57.607,16.245C57.014,16.245 56.533,16.016 56.189,15.658L54.473,17.392C55.236,18.097 56.294,18.541 57.605,18.541V18.542Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startX="60.747"
|
||||
android:startY="13.585"
|
||||
android:endX="56.809"
|
||||
android:endY="18.406"
|
||||
android:type="linear">
|
||||
<item android:offset="0.02" android:color="#001D1C1C"/>
|
||||
<item android:offset="0.68" android:color="#FF1D1C1C"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M57.605,9.616C55.171,9.616 53.606,11.148 53.188,13.036H55.818C56.133,12.386 56.752,11.914 57.605,11.914C58.285,11.914 58.813,12.208 59.158,12.652L60.889,10.902C60.116,10.118 59.004,9.616 57.607,9.616H57.605Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startX="53.879"
|
||||
android:startY="14.608"
|
||||
android:endX="57.914"
|
||||
android:endY="10.62"
|
||||
android:type="linear">
|
||||
<item android:offset="0.02" android:color="#001D1C1C"/>
|
||||
<item android:offset="0.68" android:color="#FF1D1C1C"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M36.774,23.43C36.581,23.43 36.424,23.272 36.424,23.08V4.896C36.424,4.703 36.581,4.546 36.774,4.546C36.966,4.546 37.123,4.703 37.123,4.896V23.08C37.123,23.272 36.966,23.43 36.774,23.43Z"
|
||||
android:fillColor="#1D1C1C"/>
|
||||
</vector>
|
||||
@@ -8,8 +8,6 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dsl_settings_gutter"
|
||||
android:layout_marginEnd="@dimen/dsl_settings_gutter"
|
||||
android:insetTop="2dp"
|
||||
android:insetBottom="2dp"
|
||||
app:iconGravity="textStart"
|
||||
app:iconSize="24dp"
|
||||
app:iconTint="@null"
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dsl_settings_gutter"
|
||||
android:layout_marginEnd="@dimen/dsl_settings_gutter"
|
||||
android:insetTop="2dp"
|
||||
android:insetBottom="2dp"
|
||||
android:insetTop="0dp"
|
||||
android:insetBottom="0dp"
|
||||
app:iconGravity="textStart"
|
||||
app:iconSize="24dp"
|
||||
app:iconTint="@null"
|
||||
|
||||
@@ -7,12 +7,12 @@
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/paypal_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
android:layout_height="44dp"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginStart="@dimen/dsl_settings_gutter"
|
||||
android:layout_marginEnd="@dimen/dsl_settings_gutter"
|
||||
android:insetTop="2dp"
|
||||
android:insetBottom="2dp"
|
||||
android:insetTop="0dp"
|
||||
android:insetBottom="0dp"
|
||||
app:cornerRadius="59dp"
|
||||
app:icon="@drawable/paypal"
|
||||
app:iconGravity="textStart"
|
||||
|
||||
@@ -6519,9 +6519,9 @@
|
||||
<!-- Dialog title shown when a donation requires verifying/confirmation outside of the app and the user hasn\'t done that yet -->
|
||||
<string name="ManageDonationsFragment__couldnt_confirm_donation">Couldn\'t confirm donation</string>
|
||||
<!-- Dialog message shown when a monthly donation requires verifying/confirmation outside of the app and the user hasn\'t done that yet, placeholder is money amount -->
|
||||
<string name="ManageDonationsFragment__your_monthly_s_donation_couldnt_be_confirmed">Your %1$s/month donation couldn\'t be confirmed. Check your banking app to approve your iDEAL payment.</string>
|
||||
<string name="ManageDonationsFragment__your_monthly_s_donation_couldnt_be_confirmed_ideal_wero">Your %1$s/month donation couldn\'t be confirmed. Check your banking app to approve your iDEAL | Wero payment.</string>
|
||||
<!-- Dialog message shown when a one-time donation requires verifying/confirmation outside of the app and the user hasn\'t done that yet, placeholder is money amount -->
|
||||
<string name="ManageDonationsFragment__your_one_time_s_donation_couldnt_be_confirmed">Your one-time %1$s donation couldn\'t be confirmed. Check your banking app to approve your iDEAL payment.</string>
|
||||
<string name="ManageDonationsFragment__your_one_time_s_donation_couldnt_be_confirmed_ideal_wero">Your one-time %1$s donation couldn\'t be confirmed. Check your banking app to approve your iDEAL | Wero payment.</string>
|
||||
|
||||
<string name="Boost__enter_custom_amount">Enter Custom Amount</string>
|
||||
<!-- Error label when the amount is smaller than what we can accept -->
|
||||
@@ -6650,7 +6650,7 @@
|
||||
<!-- Displayed as a dialog message when the user\'s profile could not be fetched, likely due to lack of internet -->
|
||||
<string name="DonationsErrors__your_donation_could_not_be_sent">Your donation could not be sent because of a network error. Check your connection and try again.</string>
|
||||
<!-- Displayed as a dialog message when the user encounters an error during an iDEAL donation -->
|
||||
<string name="DonationsErrors__your_ideal_couldnt_be_processed">Your iDEAL donation couldn\'t be processed. Try another payment method or contact your bank for more information.</string>
|
||||
<string name="DonationsErrors__your_ideal_wero_couldnt_be_processed">Your iDEAL | Wero donation couldn\'t be processed. Try another payment method or contact your bank for more information.</string>
|
||||
|
||||
<!-- Gift message view title -->
|
||||
<string name="GiftMessageView__donation_on_behalf_of_s">Donation on behalf of %1$s</string>
|
||||
@@ -7575,7 +7575,7 @@
|
||||
<!-- Dialog body when a user tries to donate while they already have a pending one time donation. -->
|
||||
<string name="DonateToSignalFragment__your_payment_is_still_being_processed_onetime">Your donation is still being processed. This can take a few minutes depending on your connection. Please wait until this payment completes before making another donation.</string>
|
||||
<!-- Dialog body when a user opens the manage donations main screen and they have a pending iDEAL donation -->
|
||||
<string name="DonateToSignalFragment__your_ideal_payment_is_still_processing">Your iDEAL donation is still processing. Check your banking app to approve your payment before making another donation.</string>
|
||||
<string name="DonateToSignalFragment__your_ideal_wero_payment_is_still_processing">Your iDEAL | Wero donation is still processing. Check your banking app to approve your payment before making another donation.</string>
|
||||
<!-- Dialog title shown when a user tries to donate an amount higher than is allowed for a given payment method. -->
|
||||
<string name="DonateToSignal__donation_amount_too_high">Donation amount too high</string>
|
||||
<!-- Dialog body shown when a user tries to donate an amount higher than is allowed for a given payment method, place holder is the maximum -->
|
||||
@@ -7605,7 +7605,7 @@
|
||||
<!-- Sheet summary when giving donating for a friend -->
|
||||
<string name="GatewaySelectorBottomSheet__donate_for_a_friend">Donate for a friend</string>
|
||||
<!-- Button label for paying with iDEAL -->
|
||||
<string name="GatewaySelectorBottomSheet__ideal">iDEAL</string>
|
||||
<string name="GatewaySelectorBottomSheet__ideal_wero">iDEAL | Wero</string>
|
||||
|
||||
<!-- Dialog title for launching external intent -->
|
||||
<string name="ExternalNavigationHelper__leave_signal_to_confirm_payment">Leave Signal to confirm donation?</string>
|
||||
@@ -7673,7 +7673,7 @@
|
||||
<!-- Default label for bank selection -->
|
||||
<string name="IdealTransferDetailsFragment__choose_your_bank">Choose your bank</string>
|
||||
<!-- Dialog title shown when using iDEAL payment for setting up a monthly donation -->
|
||||
<string name="IdealTransferDetailsFragment__confirm_your_donation_with_ideal">Confirm your donation with iDEAL</string>
|
||||
<string name="IdealTransferDetailsFragment__confirm_your_donation_with_ideal_wero">Confirm your donation with iDEAL | Wero</string>
|
||||
<!-- Dialog warning shown when using iDEAL payment for setting up a monthly donation. Placeholder is donation amount.Z -->
|
||||
<string name="IdealTransferDetailsFragment__to_setup_your_recurring_donation">To setup your recurring donation tap continue to confirm a €0,01 charge with your bank. This will be automatically refunded and allows your %1$s/month donation to debited from your account.</string>
|
||||
<!-- Dialog button shown when using iDEAL payment for setting up a monthly donation to continue with the donation -->
|
||||
|
||||
@@ -3,8 +3,6 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="44sp"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_marginTop="2sp"
|
||||
android:layout_marginBottom="2sp"
|
||||
android:background="@drawable/donate_with_google_pay_rounded_background"
|
||||
android:clickable="true"
|
||||
android:contentDescription="@string/donate_with_googlepay_button_content_description"
|
||||
|
||||
Reference in New Issue
Block a user