From 469bc0ee855f5ca46a781213f0959b7841fadaf3 Mon Sep 17 00:00:00 2001 From: vantezzen Date: Wed, 29 Jan 2020 11:17:04 +0100 Subject: #179 Add inactivity timer --- .../settings/settings/EditSettingsForm.js | 32 ++++ src/config.js | 1 + src/containers/settings/EditSettingsScreen.js | 11 ++ src/i18n/locales/defaultMessages.json | 194 ++++++++++++--------- src/i18n/locales/en-US.json | 2 + .../settings/settings/EditSettingsForm.json | 117 +++++++------ .../containers/settings/EditSettingsScreen.json | 77 ++++---- src/stores/SettingsStore.js | 20 +++ 8 files changed, 286 insertions(+), 168 deletions(-) (limited to 'src') diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js index 74f5924ea..9064ff234 100644 --- a/src/components/settings/settings/EditSettingsForm.js +++ b/src/components/settings/settings/EditSettingsForm.js @@ -36,6 +36,10 @@ const messages = defineMessages({ id: 'settings.app.hibernateInfo', defaultMessage: '!!!By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.', }, + inactivityLockInfo: { + id: 'settings.app.inactivityLockInfo', + defaultMessage: '!!!Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable', + }, serverInfo: { id: 'settings.app.serverInfo', defaultMessage: '!!!We advice you to logout after changing your server as your settings might not be saved otherwise.', @@ -142,6 +146,10 @@ const messages = defineMessages({ }, }); +const Hr = () => ( +
+); + export default @observer class EditSettingsForm extends Component { static propTypes = { checkForUpdates: PropTypes.func.isRequired, @@ -237,6 +245,9 @@ export default @observer class EditSettingsForm extends Component { + +
+ {hibernationEnabled && ( this.submit(e)} @@ -296,6 +311,10 @@ export default @observer class EditSettingsForm extends Component { {isWorkspaceEnabled && ( )} + + +
+ {isTodosEnabled && ( <> @@ -315,6 +334,8 @@ export default @observer class EditSettingsForm extends Component { )} +
+ {lockingFeatureEnabled && ( <> @@ -329,6 +350,16 @@ export default @observer class EditSettingsForm extends Component {

{ intl.formatMessage(messages.lockedPasswordInfo) }

+ + this.submit(e)} + field={form.$('inactivityLock')} + autoFocus + /> +

+ { intl.formatMessage(messages.inactivityLockInfo) } +

)}

+
{scheduledDNDEnabled && ( diff --git a/src/config.js b/src/config.js index 060b6e8cb..a788f0f54 100644 --- a/src/config.js +++ b/src/config.js @@ -73,6 +73,7 @@ export const DEFAULT_APP_SETTINGS = { scheduledDNDEnd: '09:00', hibernate: false, hibernationStrategy: 300, + inactivityLock: 0, noUpdates: false, showServiceNavigationBar: false, universalDarkMode: true, diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js index aa4de78e9..c92ad4df0 100644 --- a/src/containers/settings/EditSettingsScreen.js +++ b/src/containers/settings/EditSettingsScreen.js @@ -78,6 +78,10 @@ const messages = defineMessages({ id: 'settings.app.form.lockPassword', defaultMessage: '!!!Password', }, + inactivityLock: { + id: 'settings.app.form.inactivityLock', + defaultMessage: '!!!Lock after inactivity', + }, scheduledDNDEnabled: { id: 'settings.app.form.scheduledDNDEnabled', defaultMessage: '!!!Enable scheduled Do-not-Disturb', @@ -178,6 +182,7 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e todoServer: settingsData.todoServer, lockingFeatureEnabled: settingsData.lockingFeatureEnabled, lockedPassword: settingsData.lockedPassword, + inactivityLock: settingsData.inactivityLock, scheduledDNDEnabled: settingsData.scheduledDNDEnabled, scheduledDNDStart: settingsData.scheduledDNDStart, scheduledDNDEnd: settingsData.scheduledDNDEnd, @@ -312,6 +317,12 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e default: '', type: 'password', }, + inactivityLock: { + label: intl.formatMessage(messages.inactivityLock), + value: settings.all.app.inactivityLock, + default: 0, + type: 'number', + }, scheduledDNDEnabled: { label: intl.formatMessage(messages.scheduledDNDEnabled), value: settings.all.app.scheduledDNDEnabled || false, diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index fe324cd67..22953ffb0 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -2670,341 +2670,354 @@ } }, { - "defaultMessage": "!!!We advice you to logout after changing your server as your settings might not be saved otherwise.", + "defaultMessage": "!!!Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", "end": { "column": 3, "line": 42 }, "file": "src/components/settings/settings/EditSettingsForm.js", + "id": "settings.app.inactivityLockInfo", + "start": { + "column": 22, + "line": 39 + } + }, + { + "defaultMessage": "!!!We advice you to logout after changing your server as your settings might not be saved otherwise.", + "end": { + "column": 3, + "line": 46 + }, + "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.serverInfo", "start": { "column": 14, - "line": 39 + "line": 43 } }, { "defaultMessage": "!!!You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "end": { "column": 3, - "line": 46 + "line": 50 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.serverMoneyInfo", "start": { "column": 19, - "line": 43 + "line": 47 } }, { "defaultMessage": "!!!This server will be used for the \"Franz Todo\" feature. (default: https://app.franztodos.com)", "end": { "column": 3, - "line": 50 + "line": 54 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.todoServerInfo", "start": { "column": 18, - "line": 47 + "line": 51 } }, { "defaultMessage": "!!!Password", "end": { "column": 3, - "line": 54 + "line": 58 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.lockedPassword", "start": { "column": 18, - "line": 51 + "line": 55 } }, { "defaultMessage": "!!!Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", "end": { "column": 3, - "line": 58 + "line": 62 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.lockedPasswordInfo", "start": { "column": 22, - "line": 55 + "line": 59 } }, { "defaultMessage": "!!!Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut CMD/CTRL+Shift+L.", "end": { "column": 3, - "line": 62 + "line": 66 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.lockInfo", "start": { "column": 12, - "line": 59 + "line": 63 } }, { "defaultMessage": "!!!Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "end": { "column": 3, - "line": 66 + "line": 70 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.scheduledDNDTimeInfo", "start": { "column": 24, - "line": 63 + "line": 67 } }, { "defaultMessage": "!!!Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "end": { "column": 3, - "line": 70 + "line": 74 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.scheduledDNDInfo", "start": { "column": 20, - "line": 67 + "line": 71 } }, { "defaultMessage": "!!!Language", "end": { "column": 3, - "line": 74 + "line": 78 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.headlineLanguage", "start": { "column": 20, - "line": 71 + "line": 75 } }, { "defaultMessage": "!!!Updates", "end": { "column": 3, - "line": 78 + "line": 82 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.headlineUpdates", "start": { "column": 19, - "line": 75 + "line": 79 } }, { "defaultMessage": "!!!Appearance", "end": { "column": 3, - "line": 82 + "line": 86 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.headlineAppearance", "start": { "column": 22, - "line": 79 + "line": 83 } }, { "defaultMessage": "!!!Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.", "end": { "column": 3, - "line": 86 + "line": 90 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.universalDarkModeInfo", "start": { "column": 25, - "line": 83 + "line": 87 } }, { "defaultMessage": "!!!Write your accent color in a CSS-compatible format. (Default: #7367f0)", "end": { "column": 3, - "line": 90 + "line": 94 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.accentColorInfo", "start": { "column": 19, - "line": 87 + "line": 91 } }, { "defaultMessage": "!!!Advanced", "end": { "column": 3, - "line": 94 + "line": 98 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.headlineAdvanced", "start": { "column": 20, - "line": 91 + "line": 95 } }, { "defaultMessage": "!!!Help us to translate Ferdi into your language.", "end": { "column": 3, - "line": 98 + "line": 102 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.translationHelp", "start": { "column": 19, - "line": 95 + "line": 99 } }, { "defaultMessage": "!!!Cache", "end": { "column": 3, - "line": 102 + "line": 106 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.subheadlineCache", "start": { "column": 20, - "line": 99 + "line": 103 } }, { "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.", "end": { "column": 3, - "line": 106 + "line": 110 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.cacheInfo", "start": { "column": 13, - "line": 103 + "line": 107 } }, { "defaultMessage": "!!!Clear cache", "end": { "column": 3, - "line": 110 + "line": 114 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.buttonClearAllCache", "start": { "column": 23, - "line": 107 + "line": 111 } }, { "defaultMessage": "!!!Check for updates", "end": { "column": 3, - "line": 114 + "line": 118 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.buttonSearchForUpdate", "start": { "column": 25, - "line": 111 + "line": 115 } }, { "defaultMessage": "!!!Restart & install update", "end": { "column": 3, - "line": 118 + "line": 122 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.buttonInstallUpdate", "start": { "column": 23, - "line": 115 + "line": 119 } }, { "defaultMessage": "!!!Is searching for update", "end": { "column": 3, - "line": 122 + "line": 126 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.updateStatusSearching", "start": { "column": 25, - "line": 119 + "line": 123 } }, { "defaultMessage": "!!!Update available, downloading...", "end": { "column": 3, - "line": 126 + "line": 130 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.updateStatusAvailable", "start": { "column": 25, - "line": 123 + "line": 127 } }, { "defaultMessage": "!!!You are using the latest version of Ferdi", "end": { "column": 3, - "line": 130 + "line": 134 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.updateStatusUpToDate", "start": { "column": 24, - "line": 127 + "line": 131 } }, { "defaultMessage": "!!!Current version:", "end": { "column": 3, - "line": 134 + "line": 138 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.currentVersion", "start": { "column": 18, - "line": 131 + "line": 135 } }, { "defaultMessage": "!!!Changes require restart", "end": { "column": 3, - "line": 138 + "line": 142 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.restartRequired", "start": { "column": 29, - "line": 135 + "line": 139 } }, { "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", "end": { "column": 3, - "line": 142 + "line": 146 }, "file": "src/components/settings/settings/EditSettingsForm.js", "id": "settings.app.languageDisclaimer", "start": { "column": 22, - "line": 139 + "line": 143 } } ], @@ -4227,211 +4240,224 @@ } }, { - "defaultMessage": "!!!Enable scheduled Do-not-Disturb", + "defaultMessage": "!!!Lock after inactivity", "end": { "column": 3, "line": 84 }, "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.inactivityLock", + "start": { + "column": 18, + "line": 81 + } + }, + { + "defaultMessage": "!!!Enable scheduled Do-not-Disturb", + "end": { + "column": 3, + "line": 88 + }, + "file": "src/containers/settings/EditSettingsScreen.js", "id": "settings.app.form.scheduledDNDEnabled", "start": { "column": 23, - "line": 81 + "line": 85 } }, { "defaultMessage": "!!!From", "end": { "column": 3, - "line": 88 + "line": 92 }, "file": "src/containers/settings/EditSettingsScreen.js", "id": "settings.app.form.scheduledDNDStart", "start": { "column": 21, - "line": 85 + "line": 89 } }, { "defaultMessage": "!!!To", "end": { "column": 3, - "line": 92 + "line": 96 }, "file": "src/containers/settings/EditSettingsScreen.js", "id": "settings.app.form.scheduledDNDEnd", "start": { "column": 19, - "line": 89 + "line": 93 } }, { "defaultMessage": "!!!Language", "end": { "column": 3, - "line": 96 + "line": 100 }, "file": "src/containers/settings/EditSettingsScreen.js", "id": "settings.app.form.language", "start": { "column": 12, - "line": 93 + "line": 97 } }, { "defaultMessage": "!!!Dark Mode", "end": { "column": 3, - "line": 100 + "line": 104 }, "file": "src/containers/settings/EditSettingsScreen.js", "id": "settings.app.form.darkMode", "start": { "column": 12, - "line": 97 + "line": 101 } }, { "defaultMessage": "!!!Enable adaptable Dark Mode", "end": { "column": 3, - "line": 104 + "line": 108 }, "file": "src/containers/settings/EditSettingsScreen.js", "id": "settings.app.form.adaptableDarkMode", "start": { "column": 21, - "line": 101 + "line": 105 } }, { "defaultMessage": "!!!Enable universal Dark Mode", "end": { "column": 3, - "line": 108 + "line": 112 }, "file": "src/containers/settings/EditSettingsScreen.js", "id": "settings.app.form.universalDarkMode", "start": { "column": 21, - "line": 105 + "line": 109 } }, { "defaultMessage": "!!!Accent color", "end": { "column": 3, - "line": 112 + "line": 116 }, "file": "src/containers/settings/EditSettingsScreen.js", "id": "settings.app.form.accentColor", "start": { "column": 15, - "line": 109 + "line": 113 } }, { "defaultMessage": "!!!Display disabled services tabs", "end": { "column": 3, - "line": 116 + "line": 120 }, "file": "src/containers/settings/EditSettingsScreen.js", "id": "settings.app.form.showDisabledServices", "start": { "column": 24, - "line": 113 + "line": 117 } }, { "defaultMessage": "!!!Show unread message badge when notifications are disabled", "end": { "column": 3, - "line": 120 + "line": 124 }, "file": "src/containers/settings/EditSettingsScreen.js", "id": "settings.app.form.showMessagesBadgesWhenMuted", "start": { "column": 29, - "line": 117 + "line": 121 } }, { "defaultMessage": "!!!Enable spell checking", "end": { "column": 3, - "line": 124 + "line": 128 }, "file": "src/containers/settings/EditSettingsScreen.js", "id": "settings.app.form.enableSpellchecking", "start": { "column": 23, - "line": 121 + "line": 125 } }, { "defaultMessage": "!!!Enable GPU Acceleration", "end": { "column": 3, - "line": 128 + "line": 132 }, "file": "src/containers/settings/EditSettingsScreen.js", "id": "settings.app.form.enableGPUAcceleration", "start": { "column": 25, - "line": 125 + "line": 129 } }, { "defaultMessage": "!!!Include beta versions", "end": { "column": 3, - "line": 132 + "line": 136 }, "file": "src/containers/settings/EditSettingsScreen.js", "id": "settings.app.form.beta", "start": { "column": 8, - "line": 129 + "line": 133 } }, { "defaultMessage": "!!!Disable updates", "end": { "column": 3, - "line": 136 + "line": 140 }, "file": "src/containers/settings/EditSettingsScreen.js", "id": "settings.app.form.noUpdates", "start": { "column": 13, - "line": 133 + "line": 137 } }, { "defaultMessage": "!!!Enable Franz Todos", "end": { "column": 3, - "line": 140 + "line": 144 }, "file": "src/containers/settings/EditSettingsScreen.js", "id": "settings.app.form.enableTodos", "start": { "column": 15, - "line": 137 + "line": 141 } }, { "defaultMessage": "!!!Keep all workspaces loaded", "end": { "column": 3, - "line": 144 + "line": 148 }, "file": "src/containers/settings/EditSettingsScreen.js", "id": "settings.app.form.keepAllWorkspacesLoaded", "start": { "column": 27, - "line": 141 + "line": 145 } } ], diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 5acb277ef..510a29143 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -269,6 +269,7 @@ "settings.app.form.enableTodos": "Enable Ferdi Todos", "settings.app.form.hibernate": "Enable service hibernation", "settings.app.form.hibernationStrategy": "Hibernation strategy", + "settings.app.form.inactivityLock": "Lock after inactivity", "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded", "settings.app.form.language": "Language", "settings.app.form.lockPassword": "Password", @@ -292,6 +293,7 @@ "settings.app.headlineLanguage": "Language", "settings.app.headlineUpdates": "Updates", "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", + "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.", "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut CMD/CTRL+Shift+L.", "settings.app.lockedPassword": "Password", diff --git a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json index 1fdff93b9..9be6f507d 100644 --- a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json +++ b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json @@ -38,16 +38,29 @@ "column": 3 } }, + { + "id": "settings.app.inactivityLockInfo", + "defaultMessage": "!!!Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", + "file": "src/components/settings/settings/EditSettingsForm.js", + "start": { + "line": 39, + "column": 22 + }, + "end": { + "line": 42, + "column": 3 + } + }, { "id": "settings.app.serverInfo", "defaultMessage": "!!!We advice you to logout after changing your server as your settings might not be saved otherwise.", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 39, + "line": 43, "column": 14 }, "end": { - "line": 42, + "line": 46, "column": 3 } }, @@ -56,11 +69,11 @@ "defaultMessage": "!!!You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 43, + "line": 47, "column": 19 }, "end": { - "line": 46, + "line": 50, "column": 3 } }, @@ -69,11 +82,11 @@ "defaultMessage": "!!!This server will be used for the \"Franz Todo\" feature. (default: https://app.franztodos.com)", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 47, + "line": 51, "column": 18 }, "end": { - "line": 50, + "line": 54, "column": 3 } }, @@ -82,11 +95,11 @@ "defaultMessage": "!!!Password", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 51, + "line": 55, "column": 18 }, "end": { - "line": 54, + "line": 58, "column": 3 } }, @@ -95,11 +108,11 @@ "defaultMessage": "!!!Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 55, + "line": 59, "column": 22 }, "end": { - "line": 58, + "line": 62, "column": 3 } }, @@ -108,11 +121,11 @@ "defaultMessage": "!!!Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut CMD/CTRL+Shift+L.", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 59, + "line": 63, "column": 12 }, "end": { - "line": 62, + "line": 66, "column": 3 } }, @@ -121,11 +134,11 @@ "defaultMessage": "!!!Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 63, + "line": 67, "column": 24 }, "end": { - "line": 66, + "line": 70, "column": 3 } }, @@ -134,11 +147,11 @@ "defaultMessage": "!!!Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 67, + "line": 71, "column": 20 }, "end": { - "line": 70, + "line": 74, "column": 3 } }, @@ -147,11 +160,11 @@ "defaultMessage": "!!!Language", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 71, + "line": 75, "column": 20 }, "end": { - "line": 74, + "line": 78, "column": 3 } }, @@ -160,11 +173,11 @@ "defaultMessage": "!!!Updates", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 75, + "line": 79, "column": 19 }, "end": { - "line": 78, + "line": 82, "column": 3 } }, @@ -173,11 +186,11 @@ "defaultMessage": "!!!Appearance", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 79, + "line": 83, "column": 22 }, "end": { - "line": 82, + "line": 86, "column": 3 } }, @@ -186,11 +199,11 @@ "defaultMessage": "!!!Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 83, + "line": 87, "column": 25 }, "end": { - "line": 86, + "line": 90, "column": 3 } }, @@ -199,11 +212,11 @@ "defaultMessage": "!!!Write your accent color in a CSS-compatible format. (Default: #7367f0)", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 87, + "line": 91, "column": 19 }, "end": { - "line": 90, + "line": 94, "column": 3 } }, @@ -212,11 +225,11 @@ "defaultMessage": "!!!Advanced", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 91, + "line": 95, "column": 20 }, "end": { - "line": 94, + "line": 98, "column": 3 } }, @@ -225,11 +238,11 @@ "defaultMessage": "!!!Help us to translate Ferdi into your language.", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 95, + "line": 99, "column": 19 }, "end": { - "line": 98, + "line": 102, "column": 3 } }, @@ -238,11 +251,11 @@ "defaultMessage": "!!!Cache", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 99, + "line": 103, "column": 20 }, "end": { - "line": 102, + "line": 106, "column": 3 } }, @@ -251,11 +264,11 @@ "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 103, + "line": 107, "column": 13 }, "end": { - "line": 106, + "line": 110, "column": 3 } }, @@ -264,11 +277,11 @@ "defaultMessage": "!!!Clear cache", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 107, + "line": 111, "column": 23 }, "end": { - "line": 110, + "line": 114, "column": 3 } }, @@ -277,11 +290,11 @@ "defaultMessage": "!!!Check for updates", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 111, + "line": 115, "column": 25 }, "end": { - "line": 114, + "line": 118, "column": 3 } }, @@ -290,11 +303,11 @@ "defaultMessage": "!!!Restart & install update", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 115, + "line": 119, "column": 23 }, "end": { - "line": 118, + "line": 122, "column": 3 } }, @@ -303,11 +316,11 @@ "defaultMessage": "!!!Is searching for update", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 119, + "line": 123, "column": 25 }, "end": { - "line": 122, + "line": 126, "column": 3 } }, @@ -316,11 +329,11 @@ "defaultMessage": "!!!Update available, downloading...", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 123, + "line": 127, "column": 25 }, "end": { - "line": 126, + "line": 130, "column": 3 } }, @@ -329,11 +342,11 @@ "defaultMessage": "!!!You are using the latest version of Ferdi", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 127, + "line": 131, "column": 24 }, "end": { - "line": 130, + "line": 134, "column": 3 } }, @@ -342,11 +355,11 @@ "defaultMessage": "!!!Current version:", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 131, + "line": 135, "column": 18 }, "end": { - "line": 134, + "line": 138, "column": 3 } }, @@ -355,11 +368,11 @@ "defaultMessage": "!!!Changes require restart", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 135, + "line": 139, "column": 29 }, "end": { - "line": 138, + "line": 142, "column": 3 } }, @@ -368,11 +381,11 @@ "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", "file": "src/components/settings/settings/EditSettingsForm.js", "start": { - "line": 139, + "line": 143, "column": 22 }, "end": { - "line": 142, + "line": 146, "column": 3 } } diff --git a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json index d6cdb94c0..06874d97e 100644 --- a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json +++ b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json @@ -168,16 +168,29 @@ "column": 3 } }, + { + "id": "settings.app.form.inactivityLock", + "defaultMessage": "!!!Lock after inactivity", + "file": "src/containers/settings/EditSettingsScreen.js", + "start": { + "line": 81, + "column": 18 + }, + "end": { + "line": 84, + "column": 3 + } + }, { "id": "settings.app.form.scheduledDNDEnabled", "defaultMessage": "!!!Enable scheduled Do-not-Disturb", "file": "src/containers/settings/EditSettingsScreen.js", "start": { - "line": 81, + "line": 85, "column": 23 }, "end": { - "line": 84, + "line": 88, "column": 3 } }, @@ -186,11 +199,11 @@ "defaultMessage": "!!!From", "file": "src/containers/settings/EditSettingsScreen.js", "start": { - "line": 85, + "line": 89, "column": 21 }, "end": { - "line": 88, + "line": 92, "column": 3 } }, @@ -199,11 +212,11 @@ "defaultMessage": "!!!To", "file": "src/containers/settings/EditSettingsScreen.js", "start": { - "line": 89, + "line": 93, "column": 19 }, "end": { - "line": 92, + "line": 96, "column": 3 } }, @@ -212,11 +225,11 @@ "defaultMessage": "!!!Language", "file": "src/containers/settings/EditSettingsScreen.js", "start": { - "line": 93, + "line": 97, "column": 12 }, "end": { - "line": 96, + "line": 100, "column": 3 } }, @@ -225,11 +238,11 @@ "defaultMessage": "!!!Dark Mode", "file": "src/containers/settings/EditSettingsScreen.js", "start": { - "line": 97, + "line": 101, "column": 12 }, "end": { - "line": 100, + "line": 104, "column": 3 } }, @@ -238,11 +251,11 @@ "defaultMessage": "!!!Enable adaptable Dark Mode", "file": "src/containers/settings/EditSettingsScreen.js", "start": { - "line": 101, + "line": 105, "column": 21 }, "end": { - "line": 104, + "line": 108, "column": 3 } }, @@ -251,11 +264,11 @@ "defaultMessage": "!!!Enable universal Dark Mode", "file": "src/containers/settings/EditSettingsScreen.js", "start": { - "line": 105, + "line": 109, "column": 21 }, "end": { - "line": 108, + "line": 112, "column": 3 } }, @@ -264,11 +277,11 @@ "defaultMessage": "!!!Accent color", "file": "src/containers/settings/EditSettingsScreen.js", "start": { - "line": 109, + "line": 113, "column": 15 }, "end": { - "line": 112, + "line": 116, "column": 3 } }, @@ -277,11 +290,11 @@ "defaultMessage": "!!!Display disabled services tabs", "file": "src/containers/settings/EditSettingsScreen.js", "start": { - "line": 113, + "line": 117, "column": 24 }, "end": { - "line": 116, + "line": 120, "column": 3 } }, @@ -290,11 +303,11 @@ "defaultMessage": "!!!Show unread message badge when notifications are disabled", "file": "src/containers/settings/EditSettingsScreen.js", "start": { - "line": 117, + "line": 121, "column": 29 }, "end": { - "line": 120, + "line": 124, "column": 3 } }, @@ -303,11 +316,11 @@ "defaultMessage": "!!!Enable spell checking", "file": "src/containers/settings/EditSettingsScreen.js", "start": { - "line": 121, + "line": 125, "column": 23 }, "end": { - "line": 124, + "line": 128, "column": 3 } }, @@ -316,11 +329,11 @@ "defaultMessage": "!!!Enable GPU Acceleration", "file": "src/containers/settings/EditSettingsScreen.js", "start": { - "line": 125, + "line": 129, "column": 25 }, "end": { - "line": 128, + "line": 132, "column": 3 } }, @@ -329,11 +342,11 @@ "defaultMessage": "!!!Include beta versions", "file": "src/containers/settings/EditSettingsScreen.js", "start": { - "line": 129, + "line": 133, "column": 8 }, "end": { - "line": 132, + "line": 136, "column": 3 } }, @@ -342,11 +355,11 @@ "defaultMessage": "!!!Disable updates", "file": "src/containers/settings/EditSettingsScreen.js", "start": { - "line": 133, + "line": 137, "column": 13 }, "end": { - "line": 136, + "line": 140, "column": 3 } }, @@ -355,11 +368,11 @@ "defaultMessage": "!!!Enable Franz Todos", "file": "src/containers/settings/EditSettingsScreen.js", "start": { - "line": 137, + "line": 141, "column": 15 }, "end": { - "line": 140, + "line": 144, "column": 3 } }, @@ -368,11 +381,11 @@ "defaultMessage": "!!!Keep all workspaces loaded", "file": "src/containers/settings/EditSettingsScreen.js", "start": { - "line": 141, + "line": 145, "column": 27 }, "end": { - "line": 144, + "line": 148, "column": 3 } } diff --git a/src/stores/SettingsStore.js b/src/stores/SettingsStore.js index 051e86be2..8a5ee7204 100644 --- a/src/stores/SettingsStore.js +++ b/src/stores/SettingsStore.js @@ -79,6 +79,26 @@ export default class SettingsStore extends Store { }, ); + // Inactivity lock timer + let inactivityTimer; + remote.getCurrentWindow().on('blur', () => { + if (this.all.app.inactivityLock !== 0) { + inactivityTimer = setTimeout(() => { + this.actions.settings.update({ + type: 'app', + data: { + locked: true, + }, + }); + }, this.all.app.inactivityLock * 1000 * 60); + } + }); + remote.getCurrentWindow().on('focus', () => { + if (inactivityTimer) { + clearTimeout(inactivityTimer); + } + }); + // Make sure to lock app on launch if locking feature is enabled setTimeout(() => { const isLoggedIn = Boolean(localStorage.getItem('authToken')); -- cgit v1.2.3-54-g00ecf