Don't show the full-screen PIN megaphone.

This commit is contained in:
Greyson Parrelli
2020-02-05 17:11:12 -05:00
parent 83ea919434
commit 6b1e48e485
8 changed files with 53 additions and 19 deletions

View File

@@ -25,6 +25,7 @@ import org.thoughtcrime.securesms.profiles.edit.EditProfileActivity;
import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess; import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess;
import org.thoughtcrime.securesms.registration.RegistrationNavigationActivity; import org.thoughtcrime.securesms.registration.RegistrationNavigationActivity;
import org.thoughtcrime.securesms.service.KeyCachingService; import org.thoughtcrime.securesms.service.KeyCachingService;
import org.thoughtcrime.securesms.util.CensorshipUtil;
import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.TextSecurePreferences;
import java.util.Locale; import java.util.Locale;
@@ -184,7 +185,7 @@ public abstract class PassphraseRequiredActionBarActivity extends BaseActionBarA
} }
private boolean userMustSetKbsPin() { private boolean userMustSetKbsPin() {
return !SignalStore.registrationValues().isRegistrationComplete() && !PinUtil.userHasPin(this); return !SignalStore.registrationValues().isRegistrationComplete() && !PinUtil.userHasPin(this) && !CensorshipUtil.isCensored(this);
} }
private boolean userMustSetProfileName() { private boolean userMustSetProfileName() {

View File

@@ -77,7 +77,7 @@ public class BasicMegaphoneView extends FrameLayout {
bodyText.setVisibility(GONE); bodyText.setVisibility(GONE);
} }
if (megaphone.getButtonText() != 0) { if (megaphone.hasButton()) {
actionButton.setVisibility(VISIBLE); actionButton.setVisibility(VISIBLE);
actionButton.setText(megaphone.getButtonText()); actionButton.setText(megaphone.getButtonText());
actionButton.setOnClickListener(v -> { actionButton.setOnClickListener(v -> {
@@ -99,7 +99,7 @@ public class BasicMegaphoneView extends FrameLayout {
} }
}); });
} else { } else {
actionButton.setVisibility(GONE); snoozeButton.setVisibility(GONE);
} }
} }
} }

View File

@@ -70,6 +70,10 @@ public class Megaphone {
return buttonTextRes; return buttonTextRes;
} }
public boolean hasButton() {
return buttonTextRes != 0;
}
public @Nullable EventListener getButtonClickListener() { public @Nullable EventListener getButtonClickListener() {
return buttonListener; return buttonListener;
} }

View File

@@ -115,13 +115,9 @@ public final class Megaphones {
long daysRemaining = PinsForAllSchedule.getDaysRemaining(record.getFirstVisible(), System.currentTimeMillis()); long daysRemaining = PinsForAllSchedule.getDaysRemaining(record.getFirstVisible(), System.currentTimeMillis());
if (PinUtil.userHasPin(ApplicationDependencies.getApplication())) { if (PinUtil.userHasPin(ApplicationDependencies.getApplication())) {
return buildPinsForAllMegaphoneForUserWithPin( return buildPinsForAllMegaphoneForUserWithPin(builder.enableSnooze(null));
builder.enableSnooze((megaphone, listener) -> listener.onMegaphoneToastRequested(context.getString(R.string.KbsMegaphone__well_remind_you_later_confirming_your_pin, daysRemaining)))
);
} else { } else {
return buildPinsForAllMegaphoneForUserWithoutPin( return buildPinsForAllMegaphoneForUserWithoutPin(builder.enableSnooze(null));
builder.enableSnooze((megaphone, listener) -> listener.onMegaphoneToastRequested(context.getString(R.string.KbsMegaphone__well_remind_you_later_creating_a_pin, daysRemaining)))
);
} }
} }
} }

View File

@@ -1,9 +1,13 @@
package org.thoughtcrime.securesms.megaphone; package org.thoughtcrime.securesms.megaphone;
import android.content.Context;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess;
import org.thoughtcrime.securesms.util.CensorshipUtil;
import org.thoughtcrime.securesms.util.FeatureFlags; import org.thoughtcrime.securesms.util.FeatureFlags;
import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.Util;
@@ -21,15 +25,17 @@ class PinsForAllSchedule implements MegaphoneSchedule {
private final MegaphoneSchedule schedule = new RecurringSchedule(TimeUnit.DAYS.toMillis(2)); private final MegaphoneSchedule schedule = new RecurringSchedule(TimeUnit.DAYS.toMillis(2));
static boolean shouldDisplayFullScreen(long firstVisible, long currentTime) { static boolean shouldDisplayFullScreen(long firstVisible, long currentTime) {
if (pinCreationFailedDuringRegistration()) {
return true;
}
if (firstVisible == 0L) {
return false; return false;
} else { // TODO [greyson]
return currentTime - firstVisible >= TimeUnit.DAYS.toMillis(DAYS_UNTIL_FULLSCREEN); // if (pinCreationFailedDuringRegistration()) {
} // return true;
// }
//
// if (firstVisible == 0L) {
// return false;
// } else {
// return currentTime - firstVisible >= TimeUnit.DAYS.toMillis(DAYS_UNTIL_FULLSCREEN);
// }
} }
static long getDaysRemaining(long firstVisible, long currentTime) { static long getDaysRemaining(long firstVisible, long currentTime) {
@@ -52,6 +58,10 @@ class PinsForAllSchedule implements MegaphoneSchedule {
} }
private static boolean isEnabled() { private static boolean isEnabled() {
if (CensorshipUtil.isCensored(ApplicationDependencies.getApplication())) {
return false;
}
if (FeatureFlags.pinsForAllMegaphoneKillSwitch()) { if (FeatureFlags.pinsForAllMegaphoneKillSwitch()) {
return false; return false;
} }

View File

@@ -17,6 +17,7 @@ import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.lock.v2.CreateKbsPinActivity; import org.thoughtcrime.securesms.lock.v2.CreateKbsPinActivity;
import org.thoughtcrime.securesms.lock.v2.PinUtil; import org.thoughtcrime.securesms.lock.v2.PinUtil;
import org.thoughtcrime.securesms.profiles.edit.EditProfileActivity; import org.thoughtcrime.securesms.profiles.edit.EditProfileActivity;
import org.thoughtcrime.securesms.util.CensorshipUtil;
import org.thoughtcrime.securesms.util.FeatureFlags; import org.thoughtcrime.securesms.util.FeatureFlags;
public final class RegistrationCompleteFragment extends BaseRegistrationFragment { public final class RegistrationCompleteFragment extends BaseRegistrationFragment {
@@ -41,7 +42,7 @@ public final class RegistrationCompleteFragment extends BaseRegistrationFragment
next.putExtra(EditProfileActivity.SHOW_TOOLBAR, false); next.putExtra(EditProfileActivity.SHOW_TOOLBAR, false);
Context context = requireContext(); Context context = requireContext();
if (FeatureFlags.pinsForAll() && !PinUtil.userHasPin(context)) { if (FeatureFlags.pinsForAll() && !PinUtil.userHasPin(context) && !CensorshipUtil.isCensored(requireContext())) {
activity.startActivity(chainIntents(CreateKbsPinActivity.getIntentForPinCreate(context), next)); activity.startActivity(chainIntents(CreateKbsPinActivity.getIntentForPinCreate(context), next));
} else { } else {
activity.startActivity(next); activity.startActivity(next);

View File

@@ -0,0 +1,16 @@
package org.thoughtcrime.securesms.util;
import android.content.Context;
import androidx.annotation.NonNull;
import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess;
public final class CensorshipUtil {
private CensorshipUtil() {}
public static boolean isCensored(@NonNull Context context) {
return new SignalServiceNetworkAccess(context).isCensored(context);
}
}

View File

@@ -1,6 +1,9 @@
package org.thoughtcrime.securesms.megaphone; package org.thoughtcrime.securesms.megaphone;
import android.app.Application;
import org.junit.Before; import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.core.classloader.annotations.PrepareForTest;
@@ -36,6 +39,7 @@ public class PinsForAllScheduleTest {
mockStatic(SignalStore.class); mockStatic(SignalStore.class);
mockStatic(FeatureFlags.class); mockStatic(FeatureFlags.class);
mockStatic(TextSecurePreferences.class); mockStatic(TextSecurePreferences.class);
when(ApplicationDependencies.getApplication()).thenReturn(mock(Application.class));
when(SignalStore.registrationValues()).thenReturn(registrationValues); when(SignalStore.registrationValues()).thenReturn(registrationValues);
when(SignalStore.kbsValues()).thenReturn(kbsValues); when(SignalStore.kbsValues()).thenReturn(kbsValues);
when(TextSecurePreferences.isV1RegistrationLockEnabled(any())).thenReturn(false); when(TextSecurePreferences.isV1RegistrationLockEnabled(any())).thenReturn(false);
@@ -79,6 +83,8 @@ public class PinsForAllScheduleTest {
} }
// TODO [greyson]
@Ignore
@Test @Test
public void givenFirstVisibleIsFullscreenTimeout_whenIShouldDisplayFullscreen_thenIExpectTrue() { public void givenFirstVisibleIsFullscreenTimeout_whenIShouldDisplayFullscreen_thenIExpectTrue() {
// GIVEN // GIVEN