Add a feature flag system.

fork-5.53.8
Greyson Parrelli 2019-09-06 10:09:34 -04:00
rodzic a1245baf61
commit 70347e754c
4 zmienionych plików z 35 dodań i 16 usunięć

Wyświetl plik

@ -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<Media> 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<Media> selectedMedia = getSelectedMediaOrDefault();
int selectionCount = selectedMedia.size();
ButtonState updatedButtonState = buttonState == ButtonState.COUNT && selectionCount == 0 ? ButtonState.GONE : buttonState;

Wyświetl plik

@ -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<String
actionButtonImage.setImageResource(R.drawable.ic_x);
actionButton.setOnClickListener(v -> 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<String
shareButton.setOnClickListener(null);
}
// TODO [Stickers]: Delete later
shareButton.setVisibility(View.GONE);
shareButtonImage.setVisibility(View.GONE);
if (!FeatureFlags.STICKERS_SHARING) {
shareButton.setVisibility(View.GONE);
shareButtonImage.setVisibility(View.GONE);
}
itemView.setOnClickListener(v -> eventListener.onStickerPackClicked(stickerPack.getPackId(), stickerPack.getPackKey()));
}

Wyświetl plik

@ -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();
}

Wyświetl plik

@ -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;
}