diff --git a/android/app/src/main/java/com/standardnotes/MainApplication.java b/android/app/src/main/java/com/standardnotes/MainApplication.java index 844cf891..e6db6dd9 100644 --- a/android/app/src/main/java/com/standardnotes/MainApplication.java +++ b/android/app/src/main/java/com/standardnotes/MainApplication.java @@ -18,6 +18,7 @@ import com.facebook.react.shell.MainReactPackage; import com.facebook.react.modules.core.PermissionAwareActivity; import com.facebook.react.uimanager.ViewManager; import com.facebook.soloader.SoLoader; +import com.kristiansorens.flagsecure.FlagSecure; import com.oblador.keychain.KeychainPackage; import com.oblador.vectoricons.VectorIconsPackage; import com.reactnativenavigation.NavigationApplication; @@ -31,6 +32,7 @@ import java.util.Arrays; import java.util.List; import com.bugsnag.BugsnagReactNative; + public class MainApplication extends NavigationApplication { @Override @@ -74,33 +76,33 @@ public class MainApplication extends NavigationApplication { activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); } + + @Override public void onActivityStarted(Activity activity) { -// activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); + if(FlagSecure.instance != null && FlagSecure.instance.enabled) { + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); + } } @Override public void onActivityResumed(Activity activity) { -// sendEvent("onActivityResumed"); } @Override public void onActivityPaused(Activity activity) { -// sendEvent("onActivityPaused"); } @Override public void onActivityStopped(Activity activity) { - } public void onActivitySaveInstanceState(Activity activity, Bundle bundle) { -// sendEvent("onActivitySaveInstanceState"); + } @Override public void onActivityDestroyed(Activity activity) { - } public void sendEvent(String eventName) { diff --git a/src/ApplicationState.js b/src/ApplicationState.js index 6a5e1e97..418ddd4b 100644 --- a/src/ApplicationState.js +++ b/src/ApplicationState.js @@ -24,6 +24,9 @@ export default class ApplicationState { // When the user enters their local passcode and/or fingerprint static Unlocking = "Unlocking"; + static ThemeChangeBegin = "ThemeChangeBegin"; + static ThemeChangeEnd = "ThemeChangeEnd"; + static instance = null; static get() { if (this.instance == null) { @@ -48,9 +51,23 @@ export default class ApplicationState { } } + setThemeChangeBegan() { + this.themeChangeInProgress = true; + this.notifyOfState(ApplicationState.ThemeChangeBegin); + } + + setThemeChangeEnded() { + this.themeChangeInProgress = false; + this.notifyOfState(ApplicationState.ThemeChangeEnd); + } + handleAppStateChange = (nextAppState) => { + if(this.themeChangeInProgress) { + return; + } + var isResuming = nextAppState === "active"; var isEnteringBackground = nextAppState == 'background'; var isLosingFocus = nextAppState == 'inactive'; diff --git a/src/app.js b/src/app.js index cace8fa2..a763c4d8 100644 --- a/src/app.js +++ b/src/app.js @@ -232,12 +232,18 @@ export default class App { } reload() { + ApplicationState.get().setThemeChangeBegan(); + Icons.get().loadIcons(); // reset search box this.optionsState.setSearchTerm(null); this.startApp(); + + setTimeout(function () { + ApplicationState.get().setThemeChangeEnded(); + }, 100); } } diff --git a/src/lib/keysManager.js b/src/lib/keysManager.js index 5cdf1c6b..7e8fe557 100644 --- a/src/lib/keysManager.js +++ b/src/lib/keysManager.js @@ -54,8 +54,10 @@ export default class KeysManager { async loadInitialData() { this.stateObserver = ApplicationState.get().addStateObserver((state) => { - if(state == ApplicationState.Unlocking) { - this.updateScreenshotPrivacy(); + if(state == ApplicationState.Unlocking || state == ApplicationState.ThemeChangeBegin) { + setTimeout(() => { + this.updateScreenshotPrivacy(); + }, 1000); } }) diff --git a/src/screens/Notes.js b/src/screens/Notes.js index e359b803..5c85e924 100644 --- a/src/screens/Notes.js +++ b/src/screens/Notes.js @@ -146,8 +146,6 @@ export default class Notes extends Abstract { configureNavBar(initial = false) { if(this.state.lockContent) { - this.notesTitle = "Authentication Required"; - this.props.navigator.setTitle({title: this.notesTitle, animated: false}); return; } @@ -356,9 +354,12 @@ export default class Notes extends Abstract { render() { if(this.state.lockContent) { + console.log("Notes rendering AuthModal"); return ; } + console.log("Notes rendering actual content"); + var result = ModelManager.getInstance().getNotes(this.options); var notes = result.notes; var tags = this.selectedTags = result.tags; diff --git a/vendor/react-native-flag-secure-android b/vendor/react-native-flag-secure-android index 8b14db33..d0cbae0c 160000 --- a/vendor/react-native-flag-secure-android +++ b/vendor/react-native-flag-secure-android @@ -1 +1 @@ -Subproject commit 8b14db33269ccee67125c6d258760dc44ed0b925 +Subproject commit d0cbae0c10ad2ed990a66ee9a4dc5c433ee75a9e