From 08d5df70c275f1fb52a8fa66b1bc7dcf71e16be7 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 17 Aug 2020 12:03:37 -0400 Subject: [PATCH] Don't show the link preview megaphone if previously disabled. --- .../thoughtcrime/securesms/megaphone/Megaphones.java | 11 ++++++++--- .../securesms/util/TextSecurePreferences.java | 10 ++++++++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java b/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java index d2c7655fb..e5fe0abd4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java +++ b/app/src/main/java/org/thoughtcrime/securesms/megaphone/Megaphones.java @@ -23,6 +23,7 @@ import org.thoughtcrime.securesms.messagerequests.MessageRequestMegaphoneActivit import org.thoughtcrime.securesms.profiles.ProfileName; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.util.FeatureFlags; +import org.thoughtcrime.securesms.util.TextSecurePreferences; import java.util.LinkedHashMap; import java.util.List; @@ -54,7 +55,7 @@ public final class Megaphones { static @Nullable Megaphone getNextMegaphone(@NonNull Context context, @NonNull Map records) { long currentTime = System.currentTimeMillis(); - List megaphones = Stream.of(buildDisplayOrder()) + List megaphones = Stream.of(buildDisplayOrder(context)) .filter(e -> { MegaphoneRecord record = Objects.requireNonNull(records.get(e.getKey())); MegaphoneSchedule schedule = e.getValue(); @@ -84,14 +85,14 @@ public final class Megaphones { * This is when you would hide certain megaphones based on {@link FeatureFlags}. You could * conditionally set a {@link ForeverSchedule} set to false for disabled features. */ - private static Map buildDisplayOrder() { + private static Map buildDisplayOrder(@NonNull Context context) { return new LinkedHashMap() {{ put(Event.REACTIONS, ALWAYS); put(Event.PINS_FOR_ALL, new PinsForAllSchedule()); put(Event.PIN_REMINDER, new SignalPinReminderSchedule()); put(Event.MESSAGE_REQUESTS, shouldShowMessageRequestsMegaphone() ? ALWAYS : NEVER); put(Event.MENTIONS, shouldShowMentionsMegaphone() ? ALWAYS : NEVER); - put(Event.LINK_PREVIEWS, SignalStore.settings().isLinkPreviewsEnabled() ? NEVER : ALWAYS); + put(Event.LINK_PREVIEWS, shouldShowLinkPreviewsMegaphone(context) ? ALWAYS : NEVER); }}; } @@ -213,6 +214,10 @@ public final class Megaphones { return FeatureFlags.mentions() && FeatureFlags.groupsV2(); } + private static boolean shouldShowLinkPreviewsMegaphone(@NonNull Context context) { + return TextSecurePreferences.wereLinkPreviewsEnabled(context) && !SignalStore.settings().isLinkPreviewsEnabled(); + } + public enum Event { REACTIONS("reactions"), PINS_FOR_ALL("pins_for_all"), diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java b/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java index 811f3de85..51580d5d8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java @@ -16,6 +16,7 @@ import androidx.core.app.NotificationCompat; import org.greenrobot.eventbus.EventBus; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.jobmanager.impl.SqlCipherMigrationConstraintObserver; +import org.thoughtcrime.securesms.keyvalue.SettingsValues; import org.thoughtcrime.securesms.lock.RegistrationLockReminders; import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.preferences.widgets.NotificationPrivacyPreference; @@ -419,8 +420,13 @@ public class TextSecurePreferences { setBooleanPreference(context, TYPING_INDICATORS, enabled); } - public static void setLinkPreviewsEnabled(Context context, boolean enabled) { - setBooleanPreference(context, LINK_PREVIEWS, enabled); + /** + * Only kept so that we can avoid showing the megaphone for the new link previews setting + * ({@link SettingsValues#isLinkPreviewsEnabled()}) when users upgrade. This can be removed after + * we stop showing the link previews megaphone. + */ + public static boolean wereLinkPreviewsEnabled(Context context) { + return getBooleanPreference(context, LINK_PREVIEWS, true); } public static boolean isGifSearchInGridLayout(Context context) {