diff --git a/app/lib/methods/getSettings.js b/app/lib/methods/getSettings.js index 349e81db9..79e3db074 100644 --- a/app/lib/methods/getSettings.js +++ b/app/lib/methods/getSettings.js @@ -55,12 +55,14 @@ const serverInfoUpdate = async(serverInfo, iconSetting) => { return { ...allSettings, autoLock }; } if (setting._id === 'Force_Screen_Lock_After') { + const forceScreenLock = serverInfo.find(s => s._id === 'Force_Screen_Lock')?.valueAsBoolean; + // if Force_Screen_Lock_After === 0 and autoLockTime is null, set app's default value if (setting.valueAsNumber === 0 && !server.autoLockTime) { return { ...allSettings, autoLockTime: DEFAULT_AUTO_LOCK }; } - // if Force_Screen_Lock_After > 0, use it - if (setting.valueAsNumber > 0) { + // if Force_Screen_Lock_After > 0 and forceScreenLock is enabled, use it + if (setting.valueAsNumber > 0 && forceScreenLock) { return { ...allSettings, autoLockTime: setting.valueAsNumber }; } } diff --git a/app/views/ScreenLockConfigView.js b/app/views/ScreenLockConfigView.js index e4e3f5387..1dfdc6fdc 100644 --- a/app/views/ScreenLockConfigView.js +++ b/app/views/ScreenLockConfigView.js @@ -54,6 +54,12 @@ class ScreenLockConfigView extends React.Component { this.init(); } + componentWillUnmount() { + if (this.observable && this.observable.unsubscribe) { + this.observable.unsubscribe(); + } + } + defaultAutoLockOptions = [ { title: I18n.t('Local_authentication_auto_lock_60'), @@ -94,6 +100,19 @@ class ScreenLockConfigView extends React.Component { const biometryLabel = await supportedBiometryLabel(); this.setState({ biometryLabel }); + + this.observe(); + } + + /* + * We should observe biometry value + * because it can be changed by PasscodeChange + * when the user set his first passcode + */ + observe = () => { + this.observable = this.serverRecord?.observe()?.subscribe(({ biometry }) => { + this.setState({ biometry }); + }); } save = async() => {