mirror of
https://github.com/oxen-io/session-android.git
synced 2025-06-09 14:38:33 +00:00
Add Pins for All Megaphone Kill Switch.
This commit is contained in:
parent
5e83206e6e
commit
e1b75c78ab
@ -32,7 +32,7 @@ public final class RegistrationValues {
|
||||
}
|
||||
|
||||
@CheckResult
|
||||
public synchronized boolean isPinRequired() {
|
||||
public synchronized boolean pinWasRequiredAtRegistration() {
|
||||
return store.getBoolean(PIN_REQUIRED, false);
|
||||
}
|
||||
|
||||
|
@ -17,7 +17,6 @@ class PinsForAllSchedule implements MegaphoneSchedule {
|
||||
static final long DAYS_REMAINING_MAX = DAYS_UNTIL_FULLSCREEN - 1;
|
||||
|
||||
private final MegaphoneSchedule schedule = new RecurringSchedule(TimeUnit.DAYS.toMillis(2));
|
||||
private final boolean enabled = !SignalStore.registrationValues().isPinRequired() || FeatureFlags.pinsForAll();
|
||||
|
||||
static boolean shouldDisplayFullScreen(long firstVisible, long currentTime) {
|
||||
if (firstVisible == 0L) {
|
||||
@ -37,7 +36,7 @@ class PinsForAllSchedule implements MegaphoneSchedule {
|
||||
|
||||
@Override
|
||||
public boolean shouldDisplay(int seenCount, long lastSeen, long firstVisible, long currentTime) {
|
||||
if (!enabled) return false;
|
||||
if (!isEnabled()) return false;
|
||||
|
||||
if (shouldDisplayFullScreen(firstVisible, currentTime)) {
|
||||
return true;
|
||||
@ -45,4 +44,12 @@ class PinsForAllSchedule implements MegaphoneSchedule {
|
||||
return schedule.shouldDisplay(seenCount, lastSeen, firstVisible, currentTime);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isEnabled() {
|
||||
if (FeatureFlags.pinsForAllMegaphoneKillSwitch() || SignalStore.registrationValues().pinWasRequiredAtRegistration()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return FeatureFlags.pinsForAll();
|
||||
}
|
||||
}
|
||||
|
@ -53,6 +53,7 @@ public final class FeatureFlags {
|
||||
private static final String KBS = generateKey("kbs");
|
||||
private static final String STORAGE_SERVICE = generateKey("storageService");
|
||||
private static final String PINS_FOR_ALL = generateKey("beta.pinsForAll"); // TODO [alex] remove beta prefix
|
||||
private static final String PINS_MEGAPHONE_KILL_SWITCH = generateKey("pinsMegaphoneKillSwitch");
|
||||
|
||||
/**
|
||||
* Values in this map will take precedence over any value. If you do not wish to have any sort of
|
||||
@ -75,7 +76,8 @@ public final class FeatureFlags {
|
||||
* more burden on the reader to ensure that the app experience remains consistent.
|
||||
*/
|
||||
private static final Set<String> HOT_SWAPPABLE = Sets.newHashSet(
|
||||
KBS
|
||||
KBS,
|
||||
PINS_MEGAPHONE_KILL_SWITCH
|
||||
);
|
||||
|
||||
/**
|
||||
@ -159,6 +161,11 @@ public final class FeatureFlags {
|
||||
return SignalStore.registrationValues().pinWasRequiredAtRegistration() || getValue(PINS_FOR_ALL, false);
|
||||
}
|
||||
|
||||
/** Safety flag to disable Pins for All Megaphone */
|
||||
public static boolean pinsForAllMegaphoneKillSwitch() {
|
||||
return getValue(PINS_MEGAPHONE_KILL_SWITCH, false);
|
||||
}
|
||||
|
||||
/** Only for rendering debug info. */
|
||||
public static synchronized @NonNull Map<String, Boolean> getRemoteValues() {
|
||||
return new TreeMap<>(REMOTE_VALUES);
|
||||
|
Loading…
x
Reference in New Issue
Block a user