From 1abd3ad79ef714fa6f68e958b0430466c71c1368 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Fri, 22 May 2020 15:04:43 -0300 Subject: [PATCH] [FIX] Screen Lock Time respect local value (#2141) * [FIX] Screen Lock Time respect local value * [FIX] Enable biometry at the first passcode change --- app/lib/methods/getSettings.js | 6 ++++-- app/views/ScreenLockConfigView.js | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) 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() => {