aboutsummaryrefslogtreecommitdiffstats
path: root/src/containers/settings/EditSettingsScreen.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/containers/settings/EditSettingsScreen.js')
-rw-r--r--src/containers/settings/EditSettingsScreen.js174
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 @@
1import { ipcRenderer } from 'electron';
1import React, { Component } from 'react'; 2import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 3import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react'; 4import { inject, observer } from 'mobx-react';
@@ -9,7 +10,7 @@ import UserStore from '../../stores/UserStore';
9import TodosStore from '../../features/todos/store'; 10import TodosStore from '../../features/todos/store';
10import Form from '../../lib/Form'; 11import Form from '../../lib/Form';
11import { APP_LOCALES, SPELLCHECKER_LOCALES } from '../../i18n/languages'; 12import { APP_LOCALES, SPELLCHECKER_LOCALES } from '../../i18n/languages';
12import { DEFAULT_APP_SETTINGS } from '../../config'; 13import { DEFAULT_APP_SETTINGS, DEFAULT_LOCK_PASSWORD, HIBERNATION_STRATEGIES } from '../../config';
13import { config as spellcheckerConfig } from '../../features/spellchecker'; 14import { config as spellcheckerConfig } from '../../features/spellchecker';
14 15
15import { getSelectOptions } from '../../helpers/i18n-helpers'; 16import { getSelectOptions } from '../../helpers/i18n-helpers';
@@ -17,6 +18,8 @@ import { getSelectOptions } from '../../helpers/i18n-helpers';
17import EditSettingsForm from '../../components/settings/settings/EditSettingsForm'; 18import EditSettingsForm from '../../components/settings/settings/EditSettingsForm';
18import ErrorBoundary from '../../components/util/ErrorBoundary'; 19import ErrorBoundary from '../../components/util/ErrorBoundary';
19 20
21import { API, TODOS_FRONTEND } from '../../environment';
22
20import globalMessages from '../../i18n/globalMessages'; 23import globalMessages from '../../i18n/globalMessages';
21import { DEFAULT_IS_FEATURE_ENABLED_BY_USER } from '../../features/todos'; 24import { DEFAULT_IS_FEATURE_ENABLED_BY_USER } from '../../features/todos';
22import WorkspacesStore from '../../features/workspaces/store'; 25import WorkspacesStore from '../../features/workspaces/store';
@@ -25,7 +28,7 @@ import { DEFAULT_SETTING_KEEP_ALL_WORKSPACES_LOADED } from '../../features/works
25const messages = defineMessages({ 28const 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 );