diff options
Diffstat (limited to 'src/containers/settings/EditSettingsScreen.js')
-rw-r--r-- | src/containers/settings/EditSettingsScreen.js | 174 |
1 files changed, 169 insertions, 5 deletions
diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js index 698b5a3d9..ddee82e45 100644 --- a/src/containers/settings/EditSettingsScreen.js +++ b/src/containers/settings/EditSettingsScreen.js | |||
@@ -1,3 +1,4 @@ | |||
1 | import { ipcRenderer } from 'electron'; | ||
1 | import React, { Component } from 'react'; | 2 | import React, { Component } from 'react'; |
2 | import PropTypes from 'prop-types'; | 3 | import PropTypes from 'prop-types'; |
3 | import { inject, observer } from 'mobx-react'; | 4 | import { inject, observer } from 'mobx-react'; |
@@ -9,7 +10,7 @@ import UserStore from '../../stores/UserStore'; | |||
9 | import TodosStore from '../../features/todos/store'; | 10 | import TodosStore from '../../features/todos/store'; |
10 | import Form from '../../lib/Form'; | 11 | import Form from '../../lib/Form'; |
11 | import { APP_LOCALES, SPELLCHECKER_LOCALES } from '../../i18n/languages'; | 12 | import { APP_LOCALES, SPELLCHECKER_LOCALES } from '../../i18n/languages'; |
12 | import { DEFAULT_APP_SETTINGS } from '../../config'; | 13 | import { DEFAULT_APP_SETTINGS, DEFAULT_LOCK_PASSWORD, HIBERNATION_STRATEGIES } from '../../config'; |
13 | import { config as spellcheckerConfig } from '../../features/spellchecker'; | 14 | import { config as spellcheckerConfig } from '../../features/spellchecker'; |
14 | 15 | ||
15 | import { getSelectOptions } from '../../helpers/i18n-helpers'; | 16 | import { getSelectOptions } from '../../helpers/i18n-helpers'; |
@@ -17,6 +18,8 @@ import { getSelectOptions } from '../../helpers/i18n-helpers'; | |||
17 | import EditSettingsForm from '../../components/settings/settings/EditSettingsForm'; | 18 | import EditSettingsForm from '../../components/settings/settings/EditSettingsForm'; |
18 | import ErrorBoundary from '../../components/util/ErrorBoundary'; | 19 | import ErrorBoundary from '../../components/util/ErrorBoundary'; |
19 | 20 | ||
21 | import { API, TODOS_FRONTEND } from '../../environment'; | ||
22 | |||
20 | import globalMessages from '../../i18n/globalMessages'; | 23 | import globalMessages from '../../i18n/globalMessages'; |
21 | import { DEFAULT_IS_FEATURE_ENABLED_BY_USER } from '../../features/todos'; | 24 | import { DEFAULT_IS_FEATURE_ENABLED_BY_USER } from '../../features/todos'; |
22 | import WorkspacesStore from '../../features/workspaces/store'; | 25 | import WorkspacesStore from '../../features/workspaces/store'; |
@@ -25,7 +28,7 @@ import { DEFAULT_SETTING_KEEP_ALL_WORKSPACES_LOADED } from '../../features/works | |||
25 | const messages = defineMessages({ | 28 | const messages = defineMessages({ |
26 | autoLaunchOnStart: { | 29 | autoLaunchOnStart: { |
27 | id: 'settings.app.form.autoLaunchOnStart', | 30 | id: 'settings.app.form.autoLaunchOnStart', |
28 | defaultMessage: '!!!Launch Franz on start', | 31 | defaultMessage: '!!!Launch Ferdi on start', |
29 | }, | 32 | }, |
30 | autoLaunchInBackground: { | 33 | autoLaunchInBackground: { |
31 | id: 'settings.app.form.autoLaunchInBackground', | 34 | id: 'settings.app.form.autoLaunchInBackground', |
@@ -33,15 +36,59 @@ const messages = defineMessages({ | |||
33 | }, | 36 | }, |
34 | runInBackground: { | 37 | runInBackground: { |
35 | id: 'settings.app.form.runInBackground', | 38 | id: 'settings.app.form.runInBackground', |
36 | defaultMessage: '!!!Keep Franz in background when closing the window', | 39 | defaultMessage: '!!!Keep Ferdi in background when closing the window', |
37 | }, | 40 | }, |
38 | enableSystemTray: { | 41 | enableSystemTray: { |
39 | id: 'settings.app.form.enableSystemTray', | 42 | id: 'settings.app.form.enableSystemTray', |
40 | defaultMessage: '!!!Show Franz in system tray', | 43 | defaultMessage: '!!!Show Ferdi in system tray', |
41 | }, | 44 | }, |
42 | minimizeToSystemTray: { | 45 | minimizeToSystemTray: { |
43 | id: 'settings.app.form.minimizeToSystemTray', | 46 | id: 'settings.app.form.minimizeToSystemTray', |
44 | defaultMessage: '!!!Minimize Franz to system tray', | 47 | defaultMessage: '!!!Minimize Ferdi to system tray', |
48 | }, | ||
49 | privateNotifications: { | ||
50 | id: 'settings.app.form.privateNotifications', | ||
51 | defaultMessage: '!!!Don\'t show message content in notifications', | ||
52 | }, | ||
53 | showServiceNavigationBar: { | ||
54 | id: 'settings.app.form.showServiceNavigationBar', | ||
55 | defaultMessage: '!!!Always show service navigation bar', | ||
56 | }, | ||
57 | hibernate: { | ||
58 | id: 'settings.app.form.hibernate', | ||
59 | defaultMessage: '!!!Enable service hibernation', | ||
60 | }, | ||
61 | hibernationStrategy: { | ||
62 | id: 'settings.app.form.hibernationStrategy', | ||
63 | defaultMessage: '!!!Hibernation strategy', | ||
64 | }, | ||
65 | server: { | ||
66 | id: 'settings.app.form.server', | ||
67 | defaultMessage: '!!!Server', | ||
68 | }, | ||
69 | todoServer: { | ||
70 | id: 'settings.app.form.todoServer', | ||
71 | defaultMessage: '!!!Todo Server', | ||
72 | }, | ||
73 | enableLock: { | ||
74 | id: 'settings.app.form.enableLock', | ||
75 | defaultMessage: '!!!Enable Ferdi password lock', | ||
76 | }, | ||
77 | lockPassword: { | ||
78 | id: 'settings.app.form.lockPassword', | ||
79 | defaultMessage: '!!!Ferdi Lock password', | ||
80 | }, | ||
81 | scheduledDNDEnabled: { | ||
82 | id: 'settings.app.form.scheduledDNDEnabled', | ||
83 | defaultMessage: '!!!Enable scheduled Do-not-Disturb', | ||
84 | }, | ||
85 | scheduledDNDStart: { | ||
86 | id: 'settings.app.form.scheduledDNDStart', | ||
87 | defaultMessage: '!!!From', | ||
88 | }, | ||
89 | scheduledDNDEnd: { | ||
90 | id: 'settings.app.form.scheduledDNDEnd', | ||
91 | defaultMessage: '!!!To', | ||
45 | }, | 92 | }, |
46 | language: { | 93 | language: { |
47 | id: 'settings.app.form.language', | 94 | id: 'settings.app.form.language', |
@@ -51,6 +98,14 @@ const messages = defineMessages({ | |||
51 | id: 'settings.app.form.darkMode', | 98 | id: 'settings.app.form.darkMode', |
52 | defaultMessage: '!!!Dark Mode', | 99 | defaultMessage: '!!!Dark Mode', |
53 | }, | 100 | }, |
101 | universalDarkMode: { | ||
102 | id: 'settings.app.form.universalDarkMode', | ||
103 | defaultMessage: '!!!Enable universal Dark Mode', | ||
104 | }, | ||
105 | accentColor: { | ||
106 | id: 'settings.app.form.accentColor', | ||
107 | defaultMessage: '!!!Accent color', | ||
108 | }, | ||
54 | showDisabledServices: { | 109 | showDisabledServices: { |
55 | id: 'settings.app.form.showDisabledServices', | 110 | id: 'settings.app.form.showDisabledServices', |
56 | defaultMessage: '!!!Display disabled services tabs', | 111 | defaultMessage: '!!!Display disabled services tabs', |
@@ -71,6 +126,10 @@ const messages = defineMessages({ | |||
71 | id: 'settings.app.form.beta', | 126 | id: 'settings.app.form.beta', |
72 | defaultMessage: '!!!Include beta versions', | 127 | defaultMessage: '!!!Include beta versions', |
73 | }, | 128 | }, |
129 | noUpdates: { | ||
130 | id: 'settings.app.form.noUpdates', | ||
131 | defaultMessage: '!!!Disable updates', | ||
132 | }, | ||
74 | enableTodos: { | 133 | enableTodos: { |
75 | id: 'settings.app.form.enableTodos', | 134 | id: 'settings.app.form.enableTodos', |
76 | defaultMessage: '!!!Enable Franz Todos', | 135 | defaultMessage: '!!!Enable Franz Todos', |
@@ -107,19 +166,34 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
107 | runInBackground: settingsData.runInBackground, | 166 | runInBackground: settingsData.runInBackground, |
108 | enableSystemTray: settingsData.enableSystemTray, | 167 | enableSystemTray: settingsData.enableSystemTray, |
109 | minimizeToSystemTray: settingsData.minimizeToSystemTray, | 168 | minimizeToSystemTray: settingsData.minimizeToSystemTray, |
169 | privateNotifications: settingsData.privateNotifications, | ||
170 | showServiceNavigationBar: settingsData.showServiceNavigationBar, | ||
171 | hibernate: settingsData.hibernate, | ||
172 | hibernationStrategy: settingsData.hibernationStrategy, | ||
173 | server: settingsData.server, | ||
174 | todoServer: settingsData.todoServer, | ||
175 | lockingFeatureEnabled: settingsData.lockingFeatureEnabled, | ||
176 | lockedPassword: settingsData.lockedPassword, | ||
177 | scheduledDNDEnabled: settingsData.scheduledDNDEnabled, | ||
178 | scheduledDNDStart: settingsData.scheduledDNDStart, | ||
179 | scheduledDNDEnd: settingsData.scheduledDNDEnd, | ||
110 | enableGPUAcceleration: settingsData.enableGPUAcceleration, | 180 | enableGPUAcceleration: settingsData.enableGPUAcceleration, |
111 | showDisabledServices: settingsData.showDisabledServices, | 181 | showDisabledServices: settingsData.showDisabledServices, |
112 | darkMode: settingsData.darkMode, | 182 | darkMode: settingsData.darkMode, |
183 | universalDarkMode: settingsData.universalDarkMode, | ||
184 | accentColor: settingsData.accentColor, | ||
113 | showMessageBadgeWhenMuted: settingsData.showMessageBadgeWhenMuted, | 185 | showMessageBadgeWhenMuted: settingsData.showMessageBadgeWhenMuted, |
114 | enableSpellchecking: settingsData.enableSpellchecking, | 186 | enableSpellchecking: settingsData.enableSpellchecking, |
115 | spellcheckerLanguage: settingsData.spellcheckerLanguage, | 187 | spellcheckerLanguage: settingsData.spellcheckerLanguage, |
116 | beta: settingsData.beta, // we need this info in the main process as well | 188 | beta: settingsData.beta, // we need this info in the main process as well |
189 | noUpdates: settingsData.noUpdates, // we need this info in the main process as well | ||
117 | locale: settingsData.locale, // we need this info in the main process as well | 190 | locale: settingsData.locale, // we need this info in the main process as well |
118 | }, | 191 | }, |
119 | }); | 192 | }); |
120 | 193 | ||
121 | user.update({ | 194 | user.update({ |
122 | userData: { | 195 | userData: { |
196 | noUpdates: settingsData.noUpdates, | ||
123 | beta: settingsData.beta, | 197 | beta: settingsData.beta, |
124 | locale: settingsData.locale, | 198 | locale: settingsData.locale, |
125 | }, | 199 | }, |
@@ -140,6 +214,10 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
140 | } | 214 | } |
141 | } | 215 | } |
142 | 216 | ||
217 | openProcessManager() { | ||
218 | ipcRenderer.send('openProcessManager'); | ||
219 | } | ||
220 | |||
143 | prepareForm() { | 221 | prepareForm() { |
144 | const { | 222 | const { |
145 | app, settings, user, todos, workspaces, | 223 | app, settings, user, todos, workspaces, |
@@ -150,6 +228,11 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
150 | locales: APP_LOCALES, | 228 | locales: APP_LOCALES, |
151 | }); | 229 | }); |
152 | 230 | ||
231 | const hibernationStrategies = getSelectOptions({ | ||
232 | locales: HIBERNATION_STRATEGIES, | ||
233 | sort: false, | ||
234 | }); | ||
235 | |||
153 | const spellcheckingLanguages = getSelectOptions({ | 236 | const spellcheckingLanguages = getSelectOptions({ |
154 | locales: SPELLCHECKER_LOCALES, | 237 | locales: SPELLCHECKER_LOCALES, |
155 | automaticDetectionText: this.context.intl.formatMessage(globalMessages.spellcheckerAutomaticDetection), | 238 | automaticDetectionText: this.context.intl.formatMessage(globalMessages.spellcheckerAutomaticDetection), |
@@ -182,6 +265,65 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
182 | value: settings.all.app.minimizeToSystemTray, | 265 | value: settings.all.app.minimizeToSystemTray, |
183 | default: DEFAULT_APP_SETTINGS.minimizeToSystemTray, | 266 | default: DEFAULT_APP_SETTINGS.minimizeToSystemTray, |
184 | }, | 267 | }, |
268 | privateNotifications: { | ||
269 | label: intl.formatMessage(messages.privateNotifications), | ||
270 | value: settings.all.app.privateNotifications, | ||
271 | default: DEFAULT_APP_SETTINGS.privateNotifications, | ||
272 | }, | ||
273 | showServiceNavigationBar: { | ||
274 | label: intl.formatMessage(messages.showServiceNavigationBar), | ||
275 | value: settings.all.app.showServiceNavigationBar, | ||
276 | default: DEFAULT_APP_SETTINGS.showServiceNavigationBar, | ||
277 | }, | ||
278 | hibernate: { | ||
279 | label: intl.formatMessage(messages.hibernate), | ||
280 | value: settings.all.app.hibernate, | ||
281 | default: DEFAULT_APP_SETTINGS.hibernate, | ||
282 | }, | ||
283 | hibernationStrategy: { | ||
284 | label: intl.formatMessage(messages.hibernationStrategy), | ||
285 | value: settings.all.app.hibernationStrategy, | ||
286 | options: hibernationStrategies, | ||
287 | default: DEFAULT_APP_SETTINGS.hibernationStrategy, | ||
288 | }, | ||
289 | server: { | ||
290 | label: intl.formatMessage(messages.server), | ||
291 | value: settings.all.app.server || API, | ||
292 | default: API, | ||
293 | }, | ||
294 | todoServer: { | ||
295 | label: intl.formatMessage(messages.todoServer), | ||
296 | value: settings.all.app.todoServer, | ||
297 | default: TODOS_FRONTEND, | ||
298 | }, | ||
299 | lockingFeatureEnabled: { | ||
300 | label: intl.formatMessage(messages.enableLock), | ||
301 | value: settings.all.app.lockingFeatureEnabled || false, | ||
302 | default: false, | ||
303 | }, | ||
304 | lockedPassword: { | ||
305 | label: intl.formatMessage(messages.lockPassword), | ||
306 | value: settings.all.app.lockedPassword, | ||
307 | default: DEFAULT_LOCK_PASSWORD, | ||
308 | type: 'password', | ||
309 | }, | ||
310 | scheduledDNDEnabled: { | ||
311 | label: intl.formatMessage(messages.scheduledDNDEnabled), | ||
312 | value: settings.all.app.scheduledDNDEnabled || false, | ||
313 | default: false, | ||
314 | }, | ||
315 | scheduledDNDStart: { | ||
316 | label: intl.formatMessage(messages.scheduledDNDStart), | ||
317 | value: settings.all.app.scheduledDNDStart, | ||
318 | default: '17:00', | ||
319 | type: 'time', | ||
320 | }, | ||
321 | scheduledDNDEnd: { | ||
322 | label: intl.formatMessage(messages.scheduledDNDEnd), | ||
323 | value: settings.all.app.scheduledDNDEnd, | ||
324 | default: '09:00', | ||
325 | type: 'time', | ||
326 | }, | ||
185 | showDisabledServices: { | 327 | showDisabledServices: { |
186 | label: intl.formatMessage(messages.showDisabledServices), | 328 | label: intl.formatMessage(messages.showDisabledServices), |
187 | value: settings.all.app.showDisabledServices, | 329 | value: settings.all.app.showDisabledServices, |
@@ -208,6 +350,16 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
208 | value: settings.all.app.darkMode, | 350 | value: settings.all.app.darkMode, |
209 | default: DEFAULT_APP_SETTINGS.darkMode, | 351 | default: DEFAULT_APP_SETTINGS.darkMode, |
210 | }, | 352 | }, |
353 | universalDarkMode: { | ||
354 | label: intl.formatMessage(messages.universalDarkMode), | ||
355 | value: settings.all.app.universalDarkMode, | ||
356 | default: DEFAULT_APP_SETTINGS.universalDarkMode, | ||
357 | }, | ||
358 | accentColor: { | ||
359 | label: intl.formatMessage(messages.accentColor), | ||
360 | value: settings.all.app.accentColor, | ||
361 | default: DEFAULT_APP_SETTINGS.accentColor, | ||
362 | }, | ||
211 | enableGPUAcceleration: { | 363 | enableGPUAcceleration: { |
212 | label: intl.formatMessage(messages.enableGPUAcceleration), | 364 | label: intl.formatMessage(messages.enableGPUAcceleration), |
213 | value: settings.all.app.enableGPUAcceleration, | 365 | value: settings.all.app.enableGPUAcceleration, |
@@ -224,6 +376,11 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
224 | value: user.data.beta, | 376 | value: user.data.beta, |
225 | default: DEFAULT_APP_SETTINGS.beta, | 377 | default: DEFAULT_APP_SETTINGS.beta, |
226 | }, | 378 | }, |
379 | noUpdates: { | ||
380 | label: intl.formatMessage(messages.noUpdates), | ||
381 | value: settings.app.noUpdates, | ||
382 | default: DEFAULT_APP_SETTINGS.noUpdates, | ||
383 | }, | ||
227 | }, | 384 | }, |
228 | }; | 385 | }; |
229 | 386 | ||
@@ -257,6 +414,7 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
257 | cacheSize, | 414 | cacheSize, |
258 | updateStatusTypes, | 415 | updateStatusTypes, |
259 | isClearingAllCache, | 416 | isClearingAllCache, |
417 | lockingFeatureEnabled, | ||
260 | } = app; | 418 | } = app; |
261 | const { | 419 | const { |
262 | checkForUpdates, | 420 | checkForUpdates, |
@@ -282,6 +440,12 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
282 | isSpellcheckerIncludedInCurrentPlan={spellcheckerConfig.isIncludedInCurrentPlan} | 440 | isSpellcheckerIncludedInCurrentPlan={spellcheckerConfig.isIncludedInCurrentPlan} |
283 | isTodosEnabled={todos.isFeatureActive} | 441 | isTodosEnabled={todos.isFeatureActive} |
284 | isWorkspaceEnabled={workspaces.isFeatureActive} | 442 | isWorkspaceEnabled={workspaces.isFeatureActive} |
443 | server={this.props.stores.settings.app.server} | ||
444 | lockingFeatureEnabled={lockingFeatureEnabled} | ||
445 | noUpdates={this.props.stores.settings.app.noUpdates} | ||
446 | hibernationEnabled={this.props.stores.settings.app.hibernate} | ||
447 | isDarkmodeEnabled={this.props.stores.settings.app.darkMode} | ||
448 | openProcessManager={() => this.openProcessManager()} | ||
285 | /> | 449 | /> |
286 | </ErrorBoundary> | 450 | </ErrorBoundary> |
287 | ); | 451 | ); |