diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/card/CreditCardFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/card/CreditCardFragment.kt index 6c463247be..27b41695fe 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/card/CreditCardFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/card/CreditCardFragment.kt @@ -6,6 +6,7 @@ import android.view.View import android.view.WindowManager import android.view.inputmethod.EditorInfo import androidx.annotation.StringRes +import androidx.core.content.ContextCompat import androidx.core.os.bundleOf import androidx.core.widget.addTextChangedListener import androidx.fragment.app.Fragment @@ -22,6 +23,7 @@ import org.thoughtcrime.securesms.payments.FiatMoneyUtil import org.thoughtcrime.securesms.util.LifecycleDisposable import org.thoughtcrime.securesms.util.TextSecurePreferences import org.thoughtcrime.securesms.util.ViewUtil +import org.thoughtcrime.securesms.util.navigation.safeNavigate class CreditCardFragment : Fragment(R.layout.credit_card_fragment) { @@ -40,6 +42,12 @@ class CreditCardFragment : Fragment(R.layout.credit_card_fragment) { getString(R.string.CreditCardFragment__donation_amount_s, FiatMoneyUtil.format(resources, args.request.fiat)) } + binding.description.setLinkColor(ContextCompat.getColor(requireContext(), R.color.signal_colorPrimary)) + binding.description.setLearnMoreVisible(true) + binding.description.setOnLinkClickListener { + findNavController().safeNavigate(CreditCardFragmentDirections.actionCreditCardFragmentToYourInformationIsPrivateBottomSheet()) + } + binding.cardNumber.addTextChangedListener(afterTextChanged = { viewModel.onNumberChanged(it?.toString()?.filter { it != ' ' } ?: "") }) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/card/YourInformationIsPrivateBottomSheet.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/card/YourInformationIsPrivateBottomSheet.kt new file mode 100644 index 0000000000..e980da3d3e --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/card/YourInformationIsPrivateBottomSheet.kt @@ -0,0 +1,72 @@ +package org.thoughtcrime.securesms.components.settings.app.subscription.donate.card + +import org.signal.core.util.dp +import org.thoughtcrime.securesms.R +import org.thoughtcrime.securesms.components.settings.DSLConfiguration +import org.thoughtcrime.securesms.components.settings.DSLSettingsAdapter +import org.thoughtcrime.securesms.components.settings.DSLSettingsBottomSheetFragment +import org.thoughtcrime.securesms.components.settings.DSLSettingsText +import org.thoughtcrime.securesms.components.settings.configure + +/** + * Displays information about how Signal keeps card details private and how + * Signal does not link donation information to your Signal account. + */ +class YourInformationIsPrivateBottomSheet : DSLSettingsBottomSheetFragment() { + override fun bindAdapter(adapter: DSLSettingsAdapter) { + adapter.submitList(getConfiguration().toMappingModelList()) + } + + private fun getConfiguration(): DSLConfiguration { + return configure { + + space(10.dp) + + noPadTextPref( + title = DSLSettingsText.from( + R.string.YourInformationIsPrivateBottomSheet__your_information_is_private, + DSLSettingsText.CenterModifier, + DSLSettingsText.TextAppearanceModifier(R.style.Signal_Text_HeadlineMedium) + ) + ) + + space(24.dp) + + noPadTextPref( + title = DSLSettingsText.from( + R.string.YourInformationIsPrivateBottomSheet__signal_does_not_collect, + DSLSettingsText.BodyLargeModifier + ) + ) + + space(24.dp) + + noPadTextPref( + title = DSLSettingsText.from( + R.string.YourInformationIsPrivateBottomSheet__we_use_stripe, + DSLSettingsText.BodyLargeModifier + ) + ) + + space(24.dp) + + noPadTextPref( + title = DSLSettingsText.from( + R.string.YourInformationIsPrivateBottomSheet__signal_does_not_and_cannot, + DSLSettingsText.BodyLargeModifier + ) + ) + + space(24.dp) + + noPadTextPref( + title = DSLSettingsText.from( + R.string.YourInformationIsPrivateBottomSheet__thank_you, + DSLSettingsText.BodyLargeModifier + ) + ) + + space(56.dp) + } + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java b/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java index 5784357afc..1dcd9b5d9e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java @@ -100,7 +100,7 @@ public final class FeatureFlags { private static final String SMS_EXPORTER = "android.sms.exporter.2"; private static final String HIDE_CONTACTS = "android.hide.contacts"; private static final String SMS_EXPORT_MEGAPHONE_DELAY_DAYS = "android.smsExport.megaphoneDelayDays.2"; - public static final String CREDIT_CARD_PAYMENTS = "android.credit.card.payments.1"; + public static final String CREDIT_CARD_PAYMENTS = "android.credit.card.payments.2"; private static final String PAYMENTS_REQUEST_ACTIVATE_FLOW = "android.payments.requestActivateFlow"; private static final String KEEP_MUTED_CHATS_ARCHIVED = "android.keepMutedChatsArchived"; public static final String GOOGLE_PAY_DISABLED_REGIONS = "global.donations.gpayDisabledRegions"; diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/LocaleFeatureFlags.java b/app/src/main/java/org/thoughtcrime/securesms/util/LocaleFeatureFlags.java index 96d86a90e9..2d1ca94c84 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/LocaleFeatureFlags.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/LocaleFeatureFlags.java @@ -59,14 +59,14 @@ public final class LocaleFeatureFlags { * @return Whether credit cards are disabled in this region */ public static boolean isCreditCardDisabled() { - return isEnabled(FeatureFlags.CREDIT_CARD_DISABLED_REGIONS, FeatureFlags.googlePayDisabledRegions()); + return isEnabled(FeatureFlags.CREDIT_CARD_DISABLED_REGIONS, FeatureFlags.creditCardDisabledRegions()); } /** * @return Whether PayPal is disabled in this region */ public static boolean isPayPalDisabled() { - return isEnabled(FeatureFlags.PAYPAL_DISABLED_REGIONS, FeatureFlags.googlePayDisabledRegions()); + return isEnabled(FeatureFlags.PAYPAL_DISABLED_REGIONS, FeatureFlags.paypalDisabledRegions()); } /** diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/views/LearnMoreTextView.java b/app/src/main/java/org/thoughtcrime/securesms/util/views/LearnMoreTextView.java index 3158f618de..4b83f14dd0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/views/LearnMoreTextView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/views/LearnMoreTextView.java @@ -22,6 +22,9 @@ import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.util.CommunicationActions; import org.thoughtcrime.securesms.util.ThemeUtil; +/** + * Appends an optional "Learn more" link to a given piece of text. + */ public class LearnMoreTextView extends AppCompatTextView { private OnClickListener linkListener; diff --git a/app/src/main/res/layout/credit_card_fragment.xml b/app/src/main/res/layout/credit_card_fragment.xml index c2186bd0f2..7e05ee4d3a 100644 --- a/app/src/main/res/layout/credit_card_fragment.xml +++ b/app/src/main/res/layout/credit_card_fragment.xml @@ -29,14 +29,14 @@ app:layout_constraintTop_toBottomOf="@id/toolbar" tools:text="Donation amount: $20" /> - diff --git a/app/src/main/res/navigation/donate_to_signal.xml b/app/src/main/res/navigation/donate_to_signal.xml index 563701baaf..762a00a202 100644 --- a/app/src/main/res/navigation/donate_to_signal.xml +++ b/app/src/main/res/navigation/donate_to_signal.xml @@ -123,6 +123,10 @@ android:name="request" app:argType="org.thoughtcrime.securesms.components.settings.app.subscription.donate.gateway.GatewayRequest" app:nullable="false" /> + + + + \ No newline at end of file