diff --git a/app/src/main/java/org/thoughtcrime/securesms/badges/view/ViewBadgeBottomSheetDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/badges/view/ViewBadgeBottomSheetDialogFragment.kt index f63723aed..2e4df2bc9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/badges/view/ViewBadgeBottomSheetDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/badges/view/ViewBadgeBottomSheetDialogFragment.kt @@ -23,7 +23,6 @@ import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.util.BottomSheetUtil import org.thoughtcrime.securesms.util.CommunicationActions -import org.thoughtcrime.securesms.util.FeatureFlags import org.thoughtcrime.securesms.util.PlayServicesUtil import org.thoughtcrime.securesms.util.ViewUtil import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter @@ -68,10 +67,7 @@ class ViewBadgeBottomSheetDialogFragment : FixedRoundedCornerBottomSheetDialogFr action.setOnClickListener { CommunicationActions.openBrowserLink(requireContext(), getString(R.string.donate_url)) } - } else if ( - FeatureFlags.donorBadges() && - Recipient.self().badges.none { it.category == Badge.Category.Donor && !it.isBoost() && !it.isExpired() } - ) { + } else if (Recipient.self().badges.none { it.category == Badge.Category.Donor && !it.isBoost() && !it.isExpired() }) { action.setOnClickListener { startActivity(AppSettingsActivity.subscriptions(requireContext())) } @@ -143,10 +139,6 @@ class ViewBadgeBottomSheetDialogFragment : FixedRoundedCornerBottomSheetDialogFr recipientId: RecipientId, startBadge: Badge? = null ) { - if (!FeatureFlags.displayDonorBadges() && recipientId != Recipient.self().id) { - return - } - ViewBadgeBottomSheetDialogFragment().apply { arguments = Bundle().apply { putParcelable(ARG_START_BADGE, startBadge) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsFragment.kt index 85e918d98..fffe40c25 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsFragment.kt @@ -70,8 +70,7 @@ class AppSettingsFragment : DSLSettingsFragment(R.string.text_secure_normal__men } ) - if (FeatureFlags.donorBadges() && PlayServicesUtil.getPlayServicesStatus(requireContext()) == PlayServicesUtil.PlayServicesStatus.SUCCESS) { - + if (PlayServicesUtil.getPlayServicesStatus(requireContext()) == PlayServicesUtil.PlayServicesStatus.SUCCESS) { clickPref( title = DSLSettingsText.from(R.string.preferences__donate_to_signal), icon = DSLSettingsIcon.from(R.drawable.ic_heart_24), diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt index f301f6e54..738fd9c1d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsFragment.kt @@ -40,7 +40,6 @@ import org.thoughtcrime.securesms.megaphone.Megaphones import org.thoughtcrime.securesms.payments.DataExportUtil import org.thoughtcrime.securesms.storage.StorageSyncHelper import org.thoughtcrime.securesms.util.ConversationUtil -import org.thoughtcrime.securesms.util.FeatureFlags import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter import org.thoughtcrime.securesms.util.navigation.safeNavigate import java.util.Optional @@ -365,7 +364,7 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter } ) - if (FeatureFlags.donorBadges() && SignalStore.donationsValues().getSubscriber() != null) { + if (SignalStore.donationsValues().getSubscriber() != null) { dividerPref() sectionHeaderPref(R.string.preferences__internal_badges) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsFragment.kt index f2352ddfc..924240e1e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsFragment.kt @@ -81,7 +81,6 @@ import org.thoughtcrime.securesms.stories.viewer.StoryViewerActivity import org.thoughtcrime.securesms.util.CommunicationActions import org.thoughtcrime.securesms.util.ContextUtil import org.thoughtcrime.securesms.util.ExpirationUtil -import org.thoughtcrime.securesms.util.FeatureFlags import org.thoughtcrime.securesms.util.Material3OnScrollHelper import org.thoughtcrime.securesms.util.ViewUtil import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter @@ -231,7 +230,7 @@ class ConversationSettingsFragment : DSLSettingsFragment( .withFixedSize(ViewUtil.dpToPx(80)) .load(state.recipient) - if (FeatureFlags.displayDonorBadges() && !state.recipient.isSelf) { + if (!state.recipient.isSelf) { toolbarBadge.setBadgeFromRecipient(state.recipient) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/ManageProfileFragment.java b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/ManageProfileFragment.java index 46004d770..8e28eda17 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/ManageProfileFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/ManageProfileFragment.java @@ -108,17 +108,13 @@ public class ManageProfileFragment extends LoggingFragment { } }); - if (FeatureFlags.donorBadges()) { - binding.manageProfileBadgesContainer.setOnClickListener(v -> { - if (Recipient.self().getBadges().isEmpty()) { - BecomeASustainerFragment.show(getParentFragmentManager()); - } else { - SafeNavigation.safeNavigate(Navigation.findNavController(v), ManageProfileFragmentDirections.actionManageProfileFragmentToBadgeManageFragment()); - } - }); - } else { - binding.manageProfileBadgesContainer.setVisibility(View.GONE); - } + binding.manageProfileBadgesContainer.setOnClickListener(v -> { + if (Recipient.self().getBadges().isEmpty()) { + BecomeASustainerFragment.show(getParentFragmentManager()); + } else { + SafeNavigation.safeNavigate(Navigation.findNavController(v), ManageProfileFragmentDirections.actionManageProfileFragmentToBadgeManageFragment()); + } + }); binding.manageProfileAvatar.setOnClickListener(v -> { startActivity(AvatarPreviewActivity.intentFromRecipientId(requireContext(), Recipient.self().getId()), diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.java index 7dcec4146..e89f9082e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.java @@ -1138,7 +1138,7 @@ public class Recipient { } public @NonNull List getBadges() { - return FeatureFlags.displayDonorBadges() || isSelf() ? badges : Collections.emptyList(); + return badges; } public @Nullable Badge getFeaturedBadge() { 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 a4d147196..107b917ae 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/FeatureFlags.java @@ -78,14 +78,10 @@ public final class FeatureFlags { private static final String MEDIA_QUALITY_LEVELS = "android.mediaQuality.levels"; private static final String RETRY_RECEIPT_LIFESPAN = "android.retryReceiptLifespan"; private static final String RETRY_RESPOND_MAX_AGE = "android.retryRespondMaxAge"; - private static final String SENDER_KEY = "android.senderKey.5"; private static final String SENDER_KEY_MAX_AGE = "android.senderKeyMaxAge"; private static final String RETRY_RECEIPTS = "android.retryReceipts"; - private static final String SUGGEST_SMS_BLACKLIST = "android.suggestSmsBlacklist"; private static final String MAX_GROUP_CALL_RING_SIZE = "global.calling.maxGroupCallRingSize"; private static final String GROUP_CALL_RINGING = "android.calling.groupCallRinging"; - private static final String DONOR_BADGES = "android.donorBadges.6"; - private static final String DONOR_BADGES_DISPLAY = "android.donorBadges.display.4"; private static final String STORIES = "android.stories.2"; private static final String STORIES_TEXT_FUNCTIONS = "android.stories.text.functions"; private static final String HARDWARE_AEC_BLOCKLIST_MODELS = "android.calling.hardwareAecBlockList"; @@ -138,14 +134,10 @@ public final class FeatureFlags { MEDIA_QUALITY_LEVELS, RETRY_RECEIPT_LIFESPAN, RETRY_RESPOND_MAX_AGE, - SENDER_KEY, RETRY_RECEIPTS, - SUGGEST_SMS_BLACKLIST, MAX_GROUP_CALL_RING_SIZE, GROUP_CALL_RINGING, SENDER_KEY_MAX_AGE, - DONOR_BADGES, - DONOR_BADGES_DISPLAY, STORIES, STORIES_TEXT_FUNCTIONS, HARDWARE_AEC_BLOCKLIST_MODELS, @@ -211,13 +203,10 @@ public final class FeatureFlags { MEDIA_QUALITY_LEVELS, RETRY_RECEIPT_LIFESPAN, RETRY_RESPOND_MAX_AGE, - SUGGEST_SMS_BLACKLIST, RETRY_RECEIPTS, - SENDER_KEY, MAX_GROUP_CALL_RING_SIZE, GROUP_CALL_RINGING, SENDER_KEY_MAX_AGE, - DONOR_BADGES_DISPLAY, DONATE_MEGAPHONE, HARDWARE_AEC_BLOCKLIST_MODELS, SOFTWARE_AEC_BLOCKLIST_MODELS, @@ -255,7 +244,6 @@ public final class FeatureFlags { */ private static final Map FLAG_CHANGE_LISTENERS = new HashMap() {{ put(MESSAGE_PROCESSOR_ALARM_INTERVAL, change -> MessageProcessReceiver.startOrUpdateAlarm(ApplicationDependencies.getApplication())); - put(SENDER_KEY, change -> ApplicationDependencies.getJobManager().startChain(new RefreshAttributesJob()).then(new RefreshOwnProfileJob()).enqueue()); put(STORIES, change -> ApplicationDependencies.getJobManager().startChain(new RefreshAttributesJob()).then(new RefreshOwnProfileJob()).enqueue()); put(GIFT_BADGE_RECEIVE_SUPPORT, change -> ApplicationDependencies.getJobManager().startChain(new RefreshAttributesJob()).then(new RefreshOwnProfileJob()).enqueue()); }}; @@ -436,11 +424,6 @@ public final class FeatureFlags { return Math.min(getLong(SENDER_KEY_MAX_AGE, TimeUnit.DAYS.toMillis(14)), TimeUnit.DAYS.toMillis(90)); } - /** A comma-delimited list of country codes that should not be told about SMS during onboarding. */ - public static @NonNull String suggestSmsBlacklist() { - return getString(SUGGEST_SMS_BLACKLIST, ""); - } - /** Max group size that can be use group call ringing. */ public static long maxGroupCallRingSize() { return getLong(MAX_GROUP_CALL_RING_SIZE, 16); @@ -456,17 +439,6 @@ public final class FeatureFlags { return getString(PAYMENTS_COUNTRY_BLOCKLIST, "98,963,53,850,7"); } - /** - * Whether or not to show donor badges in the UI. - */ - public static boolean donorBadges() { - if (Environment.IS_STAGING) { - return true; - } else { - return getBoolean(DONOR_BADGES, true) || SignalStore.donationsValues().getSubscriber() != null; - } - } - /** * Whether or not stories are available * @@ -492,13 +464,6 @@ public final class FeatureFlags { return getString(STORIES_LOCALE, ""); } - /** - * Whether or not donor badges should be displayed throughout the app. - */ - public static boolean displayDonorBadges() { - return getBoolean(DONOR_BADGES_DISPLAY, true); - } - /** A comma-separated list of models that should *not* use hardware AEC for calling. */ public static @NonNull String hardwareAecBlocklistModels() { return getString(HARDWARE_AEC_BLOCKLIST_MODELS, ""); 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 38519fce7..b3c314b79 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/LocaleFeatureFlags.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/LocaleFeatureFlags.java @@ -51,16 +51,6 @@ public final class LocaleFeatureFlags { return isEnabled(FeatureFlags.STORIES_LOCALE, FeatureFlags.storiesLocale()); } - /** - * Whether or not you should suggest SMS during onboarding. - */ - public static boolean shouldSuggestSms() { - Set blacklist = new HashSet<>(Arrays.asList(FeatureFlags.suggestSmsBlacklist().split(","))); - String countryCode = String.valueOf(PhoneNumberFormatter.getLocalCountryCode()); - - return !blacklist.contains(countryCode); - } - public static boolean shouldShowReleaseNote(@NonNull String releaseNoteUuid, @NonNull String countries) { return isEnabled(releaseNoteUuid, countries); }