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.registration.RegistrationNavigationActivity;
import org.thoughtcrime.securesms.service.KeyCachingService;
import org.thoughtcrime.securesms.util.CensorshipUtil;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import java.util.Locale;
@@ -184,7 +185,7 @@ public abstract class PassphraseRequiredActionBarActivity extends BaseActionBarA
}
private boolean userMustSetKbsPin() {
return !SignalStore.registrationValues().isRegistrationComplete() && !PinUtil.userHasPin(this);
return !SignalStore.registrationValues().isRegistrationComplete() && !PinUtil.userHasPin(this) && !CensorshipUtil.isCensored(this);
}
private boolean userMustSetProfileName() {

View File

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

View File

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

View File

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

View File

@@ -1,9 +1,13 @@
package org.thoughtcrime.securesms.megaphone;
import android.content.Context;
import androidx.annotation.VisibleForTesting;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
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.TextSecurePreferences;
import org.thoughtcrime.securesms.util.Util;
@@ -21,15 +25,17 @@ class PinsForAllSchedule implements MegaphoneSchedule {
private final MegaphoneSchedule schedule = new RecurringSchedule(TimeUnit.DAYS.toMillis(2));
static boolean shouldDisplayFullScreen(long firstVisible, long currentTime) {
if (pinCreationFailedDuringRegistration()) {
return true;
}
if (firstVisible == 0L) {
return false;
} else {
return currentTime - firstVisible >= TimeUnit.DAYS.toMillis(DAYS_UNTIL_FULLSCREEN);
}
return false;
// TODO [greyson]
// 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) {
@@ -52,6 +58,10 @@ class PinsForAllSchedule implements MegaphoneSchedule {
}
private static boolean isEnabled() {
if (CensorshipUtil.isCensored(ApplicationDependencies.getApplication())) {
return false;
}
if (FeatureFlags.pinsForAllMegaphoneKillSwitch()) {
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.PinUtil;
import org.thoughtcrime.securesms.profiles.edit.EditProfileActivity;
import org.thoughtcrime.securesms.util.CensorshipUtil;
import org.thoughtcrime.securesms.util.FeatureFlags;
public final class RegistrationCompleteFragment extends BaseRegistrationFragment {
@@ -41,7 +42,7 @@ public final class RegistrationCompleteFragment extends BaseRegistrationFragment
next.putExtra(EditProfileActivity.SHOW_TOOLBAR, false);
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));
} else {
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;
import android.app.Application;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
@@ -36,6 +39,7 @@ public class PinsForAllScheduleTest {
mockStatic(SignalStore.class);
mockStatic(FeatureFlags.class);
mockStatic(TextSecurePreferences.class);
when(ApplicationDependencies.getApplication()).thenReturn(mock(Application.class));
when(SignalStore.registrationValues()).thenReturn(registrationValues);
when(SignalStore.kbsValues()).thenReturn(kbsValues);
when(TextSecurePreferences.isV1RegistrationLockEnabled(any())).thenReturn(false);
@@ -79,6 +83,8 @@ public class PinsForAllScheduleTest {
}
// TODO [greyson]
@Ignore
@Test
public void givenFirstVisibleIsFullscreenTimeout_whenIShouldDisplayFullscreen_thenIExpectTrue() {
// GIVEN