mirror of
https://github.com/oxen-io/session-android.git
synced 2025-06-09 17:48: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
|
@CheckResult
|
||||||
public synchronized boolean isPinRequired() {
|
public synchronized boolean pinWasRequiredAtRegistration() {
|
||||||
return store.getBoolean(PIN_REQUIRED, false);
|
return store.getBoolean(PIN_REQUIRED, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,7 +17,6 @@ class PinsForAllSchedule implements MegaphoneSchedule {
|
|||||||
static final long DAYS_REMAINING_MAX = DAYS_UNTIL_FULLSCREEN - 1;
|
static final long DAYS_REMAINING_MAX = DAYS_UNTIL_FULLSCREEN - 1;
|
||||||
|
|
||||||
private final MegaphoneSchedule schedule = new RecurringSchedule(TimeUnit.DAYS.toMillis(2));
|
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) {
|
static boolean shouldDisplayFullScreen(long firstVisible, long currentTime) {
|
||||||
if (firstVisible == 0L) {
|
if (firstVisible == 0L) {
|
||||||
@ -37,7 +36,7 @@ class PinsForAllSchedule implements MegaphoneSchedule {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldDisplay(int seenCount, long lastSeen, long firstVisible, long currentTime) {
|
public boolean shouldDisplay(int seenCount, long lastSeen, long firstVisible, long currentTime) {
|
||||||
if (!enabled) return false;
|
if (!isEnabled()) return false;
|
||||||
|
|
||||||
if (shouldDisplayFullScreen(firstVisible, currentTime)) {
|
if (shouldDisplayFullScreen(firstVisible, currentTime)) {
|
||||||
return true;
|
return true;
|
||||||
@ -45,4 +44,12 @@ class PinsForAllSchedule implements MegaphoneSchedule {
|
|||||||
return schedule.shouldDisplay(seenCount, lastSeen, firstVisible, currentTime);
|
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 KBS = generateKey("kbs");
|
||||||
private static final String STORAGE_SERVICE = generateKey("storageService");
|
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_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
|
* 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.
|
* more burden on the reader to ensure that the app experience remains consistent.
|
||||||
*/
|
*/
|
||||||
private static final Set<String> HOT_SWAPPABLE = Sets.newHashSet(
|
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);
|
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. */
|
/** Only for rendering debug info. */
|
||||||
public static synchronized @NonNull Map<String, Boolean> getRemoteValues() {
|
public static synchronized @NonNull Map<String, Boolean> getRemoteValues() {
|
||||||
return new TreeMap<>(REMOTE_VALUES);
|
return new TreeMap<>(REMOTE_VALUES);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user