Skip to content

Commit

Permalink
Add Pins for All Megaphone Kill Switch.
Browse files Browse the repository at this point in the history
  • Loading branch information
alex-signal authored and greyson-signal committed Feb 3, 2020
1 parent 5e83206 commit e1b75c7
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public synchronized void setRegistrationComplete() {
}

@CheckResult
public synchronized boolean isPinRequired() {
public synchronized boolean pinWasRequiredAtRegistration() {
return store.getBoolean(PIN_REQUIRED, false);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -37,12 +36,20 @@ static long getDaysRemaining(long firstVisible, long currentTime) {

@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;
} else {
return schedule.shouldDisplay(seenCount, lastSeen, firstVisible, currentTime);
}
}

private static boolean isEnabled() {
if (FeatureFlags.pinsForAllMegaphoneKillSwitch() || SignalStore.registrationValues().pinWasRequiredAtRegistration()) {
return false;
}

return FeatureFlags.pinsForAll();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,14 @@ public final class FeatureFlags {
private static final String PREFIX = "android.";
private static final long FETCH_INTERVAL = TimeUnit.HOURS.toMillis(2);

private static final String UUIDS = generateKey("uuids");
private static final String PROFILE_DISPLAY = generateKey("profileDisplay");
private static final String MESSAGE_REQUESTS = generateKey("messageRequests");
private static final String USERNAMES = generateKey("usernames");
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 UUIDS = generateKey("uuids");
private static final String PROFILE_DISPLAY = generateKey("profileDisplay");
private static final String MESSAGE_REQUESTS = generateKey("messageRequests");
private static final String USERNAMES = generateKey("usernames");
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
Expand All @@ -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
);

/**
Expand Down Expand Up @@ -159,6 +161,11 @@ public static boolean pinsForAll() {
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);
Expand Down

0 comments on commit e1b75c7

Please sign in to comment.