mirror of
https://github.com/oxen-io/session-android.git
synced 2025-08-26 17:57:34 +00:00
Add a feature flag system.
This commit is contained in:
@@ -19,6 +19,7 @@ import org.thoughtcrime.securesms.logging.Log;
|
|||||||
import org.thoughtcrime.securesms.mms.MediaConstraints;
|
import org.thoughtcrime.securesms.mms.MediaConstraints;
|
||||||
import org.thoughtcrime.securesms.providers.BlobProvider;
|
import org.thoughtcrime.securesms.providers.BlobProvider;
|
||||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||||
|
import org.thoughtcrime.securesms.util.FeatureFlags;
|
||||||
import org.thoughtcrime.securesms.util.MediaUtil;
|
import org.thoughtcrime.securesms.util.MediaUtil;
|
||||||
import org.thoughtcrime.securesms.util.SingleLiveEvent;
|
import org.thoughtcrime.securesms.util.SingleLiveEvent;
|
||||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||||
@@ -187,9 +188,11 @@ class MediaSendViewModel extends ViewModel {
|
|||||||
buttonState = (recipient != null) ? ButtonState.SEND : ButtonState.CONTINUE;
|
buttonState = (recipient != null) ? ButtonState.SEND : ButtonState.CONTINUE;
|
||||||
|
|
||||||
if (viewOnceState == ViewOnceState.GONE && viewOnceSupported()) {
|
if (viewOnceState == ViewOnceState.GONE && viewOnceSupported()) {
|
||||||
// TODO[reveal]
|
if (FeatureFlags.VIEW_ONCE_SENDING) {
|
||||||
// viewOnceState = TextSecurePreferences.isRevealableMessageEnabled(application) ? ViewOnceState.ENABLED : ViewOnceState.DISABLED;
|
viewOnceState = TextSecurePreferences.isRevealableMessageEnabled(application) ? ViewOnceState.ENABLED : ViewOnceState.DISABLED;
|
||||||
viewOnceState = ViewOnceState.GONE;
|
} else {
|
||||||
|
viewOnceState = ViewOnceState.GONE;
|
||||||
|
}
|
||||||
} else if (!viewOnceSupported()) {
|
} else if (!viewOnceSupported()) {
|
||||||
viewOnceState = ViewOnceState.GONE;
|
viewOnceState = ViewOnceState.GONE;
|
||||||
}
|
}
|
||||||
@@ -449,8 +452,7 @@ class MediaSendViewModel extends ViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
boolean isViewOnce() {
|
boolean isViewOnce() {
|
||||||
// TODO[reveal]
|
return FeatureFlags.VIEW_ONCE_SENDING && viewOnceState == ViewOnceState.ENABLED;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private @NonNull List<Media> getSelectedMediaOrDefault() {
|
private @NonNull List<Media> getSelectedMediaOrDefault() {
|
||||||
@@ -471,8 +473,7 @@ class MediaSendViewModel extends ViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private HudState buildHudState() {
|
private HudState buildHudState() {
|
||||||
// TODO[reveal]
|
ViewOnceState updatedViewOnceState = FeatureFlags.VIEW_ONCE_SENDING ? viewOnceState : ViewOnceState.GONE;
|
||||||
ViewOnceState updatedViewOnceState = ViewOnceState.GONE;
|
|
||||||
List<Media> selectedMedia = getSelectedMediaOrDefault();
|
List<Media> selectedMedia = getSelectedMediaOrDefault();
|
||||||
int selectionCount = selectedMedia.size();
|
int selectionCount = selectedMedia.size();
|
||||||
ButtonState updatedButtonState = buttonState == ButtonState.COUNT && selectionCount == 0 ? ButtonState.GONE : buttonState;
|
ButtonState updatedButtonState = buttonState == ButtonState.COUNT && selectionCount == 0 ? ButtonState.GONE : buttonState;
|
||||||
|
@@ -16,6 +16,7 @@ import org.thoughtcrime.securesms.R;
|
|||||||
import org.thoughtcrime.securesms.database.model.StickerPackRecord;
|
import org.thoughtcrime.securesms.database.model.StickerPackRecord;
|
||||||
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader.DecryptableUri;
|
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader.DecryptableUri;
|
||||||
import org.thoughtcrime.securesms.mms.GlideRequests;
|
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.SectionedRecyclerViewAdapter;
|
||||||
import org.thoughtcrime.securesms.util.adapter.StableIdGenerator;
|
import org.thoughtcrime.securesms.util.adapter.StableIdGenerator;
|
||||||
|
|
||||||
@@ -222,10 +223,11 @@ final class StickerManagementAdapter extends SectionedRecyclerViewAdapter<String
|
|||||||
actionButtonImage.setImageResource(R.drawable.ic_x);
|
actionButtonImage.setImageResource(R.drawable.ic_x);
|
||||||
actionButton.setOnClickListener(v -> eventListener.onStickerPackUninstallClicked(stickerPack.getPackId(), stickerPack.getPackKey()));
|
actionButton.setOnClickListener(v -> eventListener.onStickerPackUninstallClicked(stickerPack.getPackId(), stickerPack.getPackKey()));
|
||||||
|
|
||||||
// TODO [Stickers]: Re-enable later
|
if (FeatureFlags.STICKERS_SHARING) {
|
||||||
// shareButton.setVisibility(View.VISIBLE);
|
shareButton.setVisibility(View.VISIBLE);
|
||||||
// shareButtonImage.setVisibility(View.VISIBLE);
|
shareButtonImage.setVisibility(View.VISIBLE);
|
||||||
// shareButton.setOnClickListener(v -> eventListener.onStickerPackShareClicked(stickerPack.getPackId(), stickerPack.getPackKey()));
|
shareButton.setOnClickListener(v -> eventListener.onStickerPackShareClicked(stickerPack.getPackId(), stickerPack.getPackKey()));
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
actionButtonImage.setImageResource(R.drawable.ic_arrow_down);
|
actionButtonImage.setImageResource(R.drawable.ic_arrow_down);
|
||||||
actionButton.setOnClickListener(v -> eventListener.onStickerPackInstallClicked(stickerPack.getPackId(), stickerPack.getPackKey()));
|
actionButton.setOnClickListener(v -> eventListener.onStickerPackInstallClicked(stickerPack.getPackId(), stickerPack.getPackKey()));
|
||||||
@@ -235,9 +237,10 @@ final class StickerManagementAdapter extends SectionedRecyclerViewAdapter<String
|
|||||||
shareButton.setOnClickListener(null);
|
shareButton.setOnClickListener(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO [Stickers]: Delete later
|
if (!FeatureFlags.STICKERS_SHARING) {
|
||||||
shareButton.setVisibility(View.GONE);
|
shareButton.setVisibility(View.GONE);
|
||||||
shareButtonImage.setVisibility(View.GONE);
|
shareButtonImage.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
itemView.setOnClickListener(v -> eventListener.onStickerPackClicked(stickerPack.getPackId(), stickerPack.getPackKey()));
|
itemView.setOnClickListener(v -> eventListener.onStickerPackClicked(stickerPack.getPackId(), stickerPack.getPackKey()));
|
||||||
}
|
}
|
||||||
|
@@ -28,6 +28,7 @@ import org.thoughtcrime.securesms.mms.GlideApp;
|
|||||||
import org.thoughtcrime.securesms.stickers.StickerManifest.Sticker;
|
import org.thoughtcrime.securesms.stickers.StickerManifest.Sticker;
|
||||||
import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme;
|
import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme;
|
||||||
import org.thoughtcrime.securesms.util.DynamicTheme;
|
import org.thoughtcrime.securesms.util.DynamicTheme;
|
||||||
|
import org.thoughtcrime.securesms.util.FeatureFlags;
|
||||||
import org.thoughtcrime.securesms.util.ThemeUtil;
|
import org.thoughtcrime.securesms.util.ThemeUtil;
|
||||||
import org.thoughtcrime.securesms.util.concurrent.SimpleTask;
|
import org.thoughtcrime.securesms.util.concurrent.SimpleTask;
|
||||||
import org.whispersystems.libsignal.util.Pair;
|
import org.whispersystems.libsignal.util.Pair;
|
||||||
@@ -147,8 +148,9 @@ public final class StickerPackPreviewActivity extends PassphraseRequiredActionBa
|
|||||||
if (manifest.isPresent()) {
|
if (manifest.isPresent()) {
|
||||||
presentManifest(manifest.get().getManifest());
|
presentManifest(manifest.get().getManifest());
|
||||||
presentButton(manifest.get().isInstalled());
|
presentButton(manifest.get().isInstalled());
|
||||||
// TODO [Stickers]: Re-enable later
|
if (FeatureFlags.STICKERS_SHARING) {
|
||||||
// presentShareButton(manifest.get().isInstalled(), manifest.get().getManifest().getPackId(), manifest.get().getManifest().getPackKey());
|
presentShareButton(manifest.get().isInstalled(), manifest.get().getManifest().getPackId(), manifest.get().getManifest().getPackKey());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
presentError();
|
presentError();
|
||||||
}
|
}
|
||||||
|
13
src/org/thoughtcrime/securesms/util/FeatureFlags.java
Normal file
13
src/org/thoughtcrime/securesms/util/FeatureFlags.java
Normal file
@@ -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;
|
||||||
|
}
|
Reference in New Issue
Block a user