Default discoverability to 'off' until registration is complete.

This commit is contained in:
Greyson Parrelli
2024-02-06 15:52:03 -05:00
committed by Cody Henthorne
parent 879fca0e11
commit 6097e6c305
12 changed files with 52 additions and 36 deletions

View File

@@ -24,6 +24,7 @@ import org.thoughtcrime.securesms.database.model.RemoteMegaphoneRecord;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
import org.thoughtcrime.securesms.keyvalue.PhoneNumberPrivacyValues;
import org.thoughtcrime.securesms.keyvalue.PhoneNumberPrivacyValues.PhoneNumberDiscoverabilityMode;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.lock.SignalPinReminderDialog;
import org.thoughtcrime.securesms.lock.SignalPinReminders;
@@ -392,13 +393,13 @@ public final class Megaphones {
* Prompt megaphone 3 days after turning off phone number discovery when no username is set.
*/
private static boolean shouldShowSetUpYourUsernameMegaphone(@NonNull Map<Event, MegaphoneRecord> records) {
boolean hasUsername = SignalStore.account().isRegistered() && SignalStore.account().getUsername() != null;
boolean hasCompleted = MapUtil.mapOrDefault(records, Event.SET_UP_YOUR_USERNAME, MegaphoneRecord::isFinished, false);
long phoneNumberDiscoveryDisabledAt = SignalStore.phoneNumberPrivacy().getPhoneNumberDiscoverabilityModeTimestamp();
PhoneNumberPrivacyValues.PhoneNumberDiscoverabilityMode listingMode = SignalStore.phoneNumberPrivacy().getPhoneNumberDiscoverabilityMode();
boolean hasUsername = SignalStore.account().isRegistered() && SignalStore.account().getUsername() != null;
boolean hasCompleted = MapUtil.mapOrDefault(records, Event.SET_UP_YOUR_USERNAME, MegaphoneRecord::isFinished, false);
long phoneNumberDiscoveryDisabledAt = SignalStore.phoneNumberPrivacy().getPhoneNumberDiscoverabilityModeTimestamp();
PhoneNumberDiscoverabilityMode listingMode = SignalStore.phoneNumberPrivacy().getPhoneNumberDiscoverabilityMode();
return !hasUsername &&
listingMode.isUndiscoverable() &&
listingMode == PhoneNumberDiscoverabilityMode.NOT_DISCOVERABLE &&
!hasCompleted &&
phoneNumberDiscoveryDisabledAt > 0 &&
(System.currentTimeMillis() - phoneNumberDiscoveryDisabledAt) >= TimeUnit.DAYS.toMillis(3);