diff --git a/src/org/thoughtcrime/securesms/mediasend/MediaSendViewModel.java b/src/org/thoughtcrime/securesms/mediasend/MediaSendViewModel.java index fc6214406..5885ab9c4 100644 --- a/src/org/thoughtcrime/securesms/mediasend/MediaSendViewModel.java +++ b/src/org/thoughtcrime/securesms/mediasend/MediaSendViewModel.java @@ -19,6 +19,7 @@ import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.mms.MediaConstraints; import org.thoughtcrime.securesms.providers.BlobProvider; import org.thoughtcrime.securesms.recipients.Recipient; +import org.thoughtcrime.securesms.util.FeatureFlags; import org.thoughtcrime.securesms.util.MediaUtil; import org.thoughtcrime.securesms.util.SingleLiveEvent; import org.thoughtcrime.securesms.util.TextSecurePreferences; @@ -187,9 +188,11 @@ class MediaSendViewModel extends ViewModel { buttonState = (recipient != null) ? ButtonState.SEND : ButtonState.CONTINUE; if (viewOnceState == ViewOnceState.GONE && viewOnceSupported()) { - // TODO[reveal] -// viewOnceState = TextSecurePreferences.isRevealableMessageEnabled(application) ? ViewOnceState.ENABLED : ViewOnceState.DISABLED; - viewOnceState = ViewOnceState.GONE; + if (FeatureFlags.VIEW_ONCE_SENDING) { + viewOnceState = TextSecurePreferences.isRevealableMessageEnabled(application) ? ViewOnceState.ENABLED : ViewOnceState.DISABLED; + } else { + viewOnceState = ViewOnceState.GONE; + } } else if (!viewOnceSupported()) { viewOnceState = ViewOnceState.GONE; } @@ -449,8 +452,7 @@ class MediaSendViewModel extends ViewModel { } boolean isViewOnce() { - // TODO[reveal] - return false; + return FeatureFlags.VIEW_ONCE_SENDING && viewOnceState == ViewOnceState.ENABLED; } private @NonNull List getSelectedMediaOrDefault() { @@ -471,8 +473,7 @@ class MediaSendViewModel extends ViewModel { } private HudState buildHudState() { - // TODO[reveal] - ViewOnceState updatedViewOnceState = ViewOnceState.GONE; + ViewOnceState updatedViewOnceState = FeatureFlags.VIEW_ONCE_SENDING ? viewOnceState : ViewOnceState.GONE; List selectedMedia = getSelectedMediaOrDefault(); int selectionCount = selectedMedia.size(); ButtonState updatedButtonState = buttonState == ButtonState.COUNT && selectionCount == 0 ? ButtonState.GONE : buttonState; diff --git a/src/org/thoughtcrime/securesms/stickers/StickerManagementAdapter.java b/src/org/thoughtcrime/securesms/stickers/StickerManagementAdapter.java index 295f04661..9ca887828 100644 --- a/src/org/thoughtcrime/securesms/stickers/StickerManagementAdapter.java +++ b/src/org/thoughtcrime/securesms/stickers/StickerManagementAdapter.java @@ -16,6 +16,7 @@ import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.database.model.StickerPackRecord; import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader.DecryptableUri; import org.thoughtcrime.securesms.mms.GlideRequests; +import org.thoughtcrime.securesms.util.FeatureFlags; import org.thoughtcrime.securesms.util.adapter.SectionedRecyclerViewAdapter; import org.thoughtcrime.securesms.util.adapter.StableIdGenerator; @@ -222,10 +223,11 @@ final class StickerManagementAdapter extends SectionedRecyclerViewAdapter eventListener.onStickerPackUninstallClicked(stickerPack.getPackId(), stickerPack.getPackKey())); - // TODO [Stickers]: Re-enable later -// shareButton.setVisibility(View.VISIBLE); -// shareButtonImage.setVisibility(View.VISIBLE); -// shareButton.setOnClickListener(v -> eventListener.onStickerPackShareClicked(stickerPack.getPackId(), stickerPack.getPackKey())); + if (FeatureFlags.STICKERS_SHARING) { + shareButton.setVisibility(View.VISIBLE); + shareButtonImage.setVisibility(View.VISIBLE); + shareButton.setOnClickListener(v -> eventListener.onStickerPackShareClicked(stickerPack.getPackId(), stickerPack.getPackKey())); + } } else { actionButtonImage.setImageResource(R.drawable.ic_arrow_down); actionButton.setOnClickListener(v -> eventListener.onStickerPackInstallClicked(stickerPack.getPackId(), stickerPack.getPackKey())); @@ -235,9 +237,10 @@ final class StickerManagementAdapter extends SectionedRecyclerViewAdapter eventListener.onStickerPackClicked(stickerPack.getPackId(), stickerPack.getPackKey())); } diff --git a/src/org/thoughtcrime/securesms/stickers/StickerPackPreviewActivity.java b/src/org/thoughtcrime/securesms/stickers/StickerPackPreviewActivity.java index 86a7a5171..3f4b5abf8 100644 --- a/src/org/thoughtcrime/securesms/stickers/StickerPackPreviewActivity.java +++ b/src/org/thoughtcrime/securesms/stickers/StickerPackPreviewActivity.java @@ -28,6 +28,7 @@ import org.thoughtcrime.securesms.mms.GlideApp; import org.thoughtcrime.securesms.stickers.StickerManifest.Sticker; import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme; import org.thoughtcrime.securesms.util.DynamicTheme; +import org.thoughtcrime.securesms.util.FeatureFlags; import org.thoughtcrime.securesms.util.ThemeUtil; import org.thoughtcrime.securesms.util.concurrent.SimpleTask; import org.whispersystems.libsignal.util.Pair; @@ -147,8 +148,9 @@ public final class StickerPackPreviewActivity extends PassphraseRequiredActionBa if (manifest.isPresent()) { presentManifest(manifest.get().getManifest()); presentButton(manifest.get().isInstalled()); - // TODO [Stickers]: Re-enable later -// presentShareButton(manifest.get().isInstalled(), manifest.get().getManifest().getPackId(), manifest.get().getManifest().getPackKey()); + if (FeatureFlags.STICKERS_SHARING) { + presentShareButton(manifest.get().isInstalled(), manifest.get().getManifest().getPackId(), manifest.get().getManifest().getPackKey()); + } } else { presentError(); } diff --git a/src/org/thoughtcrime/securesms/util/FeatureFlags.java b/src/org/thoughtcrime/securesms/util/FeatureFlags.java new file mode 100644 index 000000000..ef0743144 --- /dev/null +++ b/src/org/thoughtcrime/securesms/util/FeatureFlags.java @@ -0,0 +1,13 @@ +package org.thoughtcrime.securesms.util; + +/** + * A location for constants that allows us to turn features on and off during development. + * After a feature has been launched, the flag should be removed. + */ +public class FeatureFlags { + /** Support for sharing stickers. */ + public static final boolean STICKERS_SHARING = false; + + /** Send support for view-once photos. */ + public static final boolean VIEW_ONCE_SENDING = false; +}