mirror of
https://github.com/oxen-io/session-android.git
synced 2025-08-26 05:58:33 +00:00
Don't show the full-screen PIN megaphone.
This commit is contained in:
@@ -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() {
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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)))
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
|
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user