aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar Stefan Malzner <stefan@adlk.io>2019-09-07 00:53:10 +0200
committerLibravatar Stefan Malzner <stefan@adlk.io>2019-09-07 00:53:10 +0200
commit5d03b91dd789ffd6d3d5753c223b4b6412887220 (patch)
treeb48a93aadcd5e77cd4f42d635edc598255286d4f /src
parentUpdate CHANGELOG.md (diff)
downloadferdium-app-5d03b91dd789ffd6d3d5753c223b4b6412887220.tar.gz
ferdium-app-5d03b91dd789ffd6d3d5753c223b4b6412887220.tar.zst
ferdium-app-5d03b91dd789ffd6d3d5753c223b4b6412887220.zip
feat(Todos): Add option to disable todos
Diffstat (limited to 'src')
-rw-r--r--src/components/settings/settings/EditSettingsForm.js5
-rw-r--r--src/containers/settings/EditSettingsScreen.js41
-rw-r--r--src/features/todos/actions.js1
-rw-r--r--src/features/todos/index.js1
-rw-r--r--src/features/todos/store.js19
-rw-r--r--src/i18n/locales/defaultMessages.json100
-rw-r--r--src/i18n/locales/en-US.json3
-rw-r--r--src/i18n/messages/src/containers/settings/EditSettingsScreen.json61
8 files changed, 177 insertions, 54 deletions
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js
index 3f9e0a6bc..ff30daed2 100644
--- a/src/components/settings/settings/EditSettingsForm.js
+++ b/src/components/settings/settings/EditSettingsForm.js
@@ -101,6 +101,7 @@ export default @observer class EditSettingsForm extends Component {
101 onClearAllCache: PropTypes.func.isRequired, 101 onClearAllCache: PropTypes.func.isRequired,
102 cacheSize: PropTypes.string.isRequired, 102 cacheSize: PropTypes.string.isRequired,
103 isSpellcheckerIncludedInCurrentPlan: PropTypes.bool.isRequired, 103 isSpellcheckerIncludedInCurrentPlan: PropTypes.bool.isRequired,
104 isTodosEnabled: PropTypes.bool.isRequired,
104 }; 105 };
105 106
106 static contextTypes = { 107 static contextTypes = {
@@ -131,6 +132,7 @@ export default @observer class EditSettingsForm extends Component {
131 onClearAllCache, 132 onClearAllCache,
132 cacheSize, 133 cacheSize,
133 isSpellcheckerIncludedInCurrentPlan, 134 isSpellcheckerIncludedInCurrentPlan,
135 isTodosEnabled,
134 } = this.props; 136 } = this.props;
135 const { intl } = this.context; 137 const { intl } = this.context;
136 138
@@ -162,6 +164,9 @@ export default @observer class EditSettingsForm extends Component {
162 {process.platform === 'win32' && ( 164 {process.platform === 'win32' && (
163 <Toggle field={form.$('minimizeToSystemTray')} /> 165 <Toggle field={form.$('minimizeToSystemTray')} />
164 )} 166 )}
167 {isTodosEnabled && (
168 <Toggle field={form.$('enableTodos')} />
169 )}
165 170
166 {/* Appearance */} 171 {/* Appearance */}
167 <h2 id="apperance">{intl.formatMessage(messages.headlineAppearance)}</h2> 172 <h2 id="apperance">{intl.formatMessage(messages.headlineAppearance)}</h2>
diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js
index 67d52f102..65b5a45df 100644
--- a/src/containers/settings/EditSettingsScreen.js
+++ b/src/containers/settings/EditSettingsScreen.js
@@ -6,6 +6,7 @@ import { defineMessages, intlShape } from 'react-intl';
6import AppStore from '../../stores/AppStore'; 6import AppStore from '../../stores/AppStore';
7import SettingsStore from '../../stores/SettingsStore'; 7import SettingsStore from '../../stores/SettingsStore';
8import UserStore from '../../stores/UserStore'; 8import UserStore from '../../stores/UserStore';
9import TodosStore from '../../features/todos/store';
9import Form from '../../lib/Form'; 10import Form from '../../lib/Form';
10import { APP_LOCALES, SPELLCHECKER_LOCALES } from '../../i18n/languages'; 11import { APP_LOCALES, SPELLCHECKER_LOCALES } from '../../i18n/languages';
11import { DEFAULT_APP_SETTINGS } from '../../config'; 12import { DEFAULT_APP_SETTINGS } from '../../config';
@@ -17,6 +18,7 @@ import EditSettingsForm from '../../components/settings/settings/EditSettingsFor
17import ErrorBoundary from '../../components/util/ErrorBoundary'; 18import ErrorBoundary from '../../components/util/ErrorBoundary';
18 19
19import globalMessages from '../../i18n/globalMessages'; 20import globalMessages from '../../i18n/globalMessages';
21import { DEFAULT_IS_FEATURE_ENABLED_BY_USER } from '../../features/todos';
20 22
21const messages = defineMessages({ 23const messages = defineMessages({
22 autoLaunchOnStart: { 24 autoLaunchOnStart: {
@@ -67,6 +69,10 @@ const messages = defineMessages({
67 id: 'settings.app.form.beta', 69 id: 'settings.app.form.beta',
68 defaultMessage: '!!!Include beta versions', 70 defaultMessage: '!!!Include beta versions',
69 }, 71 },
72 enableTodos: {
73 id: 'settings.app.form.enableTodos',
74 defaultMessage: '!!!Enable Franz Todos',
75 },
70}); 76});
71 77
72export default @inject('stores', 'actions') @observer class EditSettingsScreen extends Component { 78export default @inject('stores', 'actions') @observer class EditSettingsScreen extends Component {
@@ -75,7 +81,13 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e
75 }; 81 };
76 82
77 onSubmit(settingsData) { 83 onSubmit(settingsData) {
78 const { app, settings, user } = this.props.actions; 84 const { todos } = this.props.stores;
85 const {
86 app,
87 settings,
88 user,
89 todos: todosActions,
90 } = this.props.actions;
79 91
80 app.launchOnStartup({ 92 app.launchOnStartup({
81 enable: settingsData.autoLaunchOnStart, 93 enable: settingsData.autoLaunchOnStart,
@@ -105,10 +117,16 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e
105 locale: settingsData.locale, 117 locale: settingsData.locale,
106 }, 118 },
107 }); 119 });
120
121 if (todos.isFeatureActive) {
122 todosActions.toggleTodosFeatureVisibility();
123 }
108 } 124 }
109 125
110 prepareForm() { 126 prepareForm() {
111 const { app, settings, user } = this.props.stores; 127 const {
128 app, settings, user, todos,
129 } = this.props.stores;
112 const { intl } = this.context; 130 const { intl } = this.context;
113 131
114 const locales = getSelectOptions({ 132 const locales = getSelectOptions({
@@ -192,16 +210,28 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e
192 }, 210 },
193 }; 211 };
194 212
213 if (todos.isFeatureActive) {
214 config.fields.enableTodos = {
215 label: intl.formatMessage(messages.enableTodos),
216 value: todos.settings.isFeatureEnabledByUser,
217 default: DEFAULT_IS_FEATURE_ENABLED_BY_USER,
218 };
219 }
220
195 return new Form(config); 221 return new Form(config);
196 } 222 }
197 223
198 render() { 224 render() {
199 const { 225 const {
226 app,
227 todos,
228 } = this.props.stores;
229 const {
200 updateStatus, 230 updateStatus,
201 cacheSize, 231 cacheSize,
202 updateStatusTypes, 232 updateStatusTypes,
203 isClearingAllCache, 233 isClearingAllCache,
204 } = this.props.stores.app; 234 } = app;
205 const { 235 const {
206 checkForUpdates, 236 checkForUpdates,
207 installUpdate, 237 installUpdate,
@@ -224,6 +254,7 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e
224 isClearingAllCache={isClearingAllCache} 254 isClearingAllCache={isClearingAllCache}
225 onClearAllCache={clearAllCache} 255 onClearAllCache={clearAllCache}
226 isSpellcheckerIncludedInCurrentPlan={spellcheckerConfig.isIncludedInCurrentPlan} 256 isSpellcheckerIncludedInCurrentPlan={spellcheckerConfig.isIncludedInCurrentPlan}
257 isTodosEnabled={todos.isFeatureActive}
227 /> 258 />
228 </ErrorBoundary> 259 </ErrorBoundary>
229 ); 260 );
@@ -235,6 +266,7 @@ EditSettingsScreen.wrappedComponent.propTypes = {
235 app: PropTypes.instanceOf(AppStore).isRequired, 266 app: PropTypes.instanceOf(AppStore).isRequired,
236 user: PropTypes.instanceOf(UserStore).isRequired, 267 user: PropTypes.instanceOf(UserStore).isRequired,
237 settings: PropTypes.instanceOf(SettingsStore).isRequired, 268 settings: PropTypes.instanceOf(SettingsStore).isRequired,
269 todos: PropTypes.instanceOf(TodosStore).isRequired,
238 }).isRequired, 270 }).isRequired,
239 actions: PropTypes.shape({ 271 actions: PropTypes.shape({
240 app: PropTypes.shape({ 272 app: PropTypes.shape({
@@ -249,5 +281,8 @@ EditSettingsScreen.wrappedComponent.propTypes = {
249 user: PropTypes.shape({ 281 user: PropTypes.shape({
250 update: PropTypes.func.isRequired, 282 update: PropTypes.func.isRequired,
251 }).isRequired, 283 }).isRequired,
284 todos: PropTypes.shape({
285 toggleTodosFeatureVisibility: PropTypes.func.isRequired,
286 }).isRequired,
252 }).isRequired, 287 }).isRequired,
253}; 288};
diff --git a/src/features/todos/actions.js b/src/features/todos/actions.js
index dc63d5fcd..1ccc9a592 100644
--- a/src/features/todos/actions.js
+++ b/src/features/todos/actions.js
@@ -6,6 +6,7 @@ export const todoActions = createActionsFromDefinitions({
6 width: PropTypes.number.isRequired, 6 width: PropTypes.number.isRequired,
7 }, 7 },
8 toggleTodosPanel: {}, 8 toggleTodosPanel: {},
9 toggleTodosFeatureVisibility: {},
9 setTodosWebview: { 10 setTodosWebview: {
10 webview: PropTypes.instanceOf(Element).isRequired, 11 webview: PropTypes.instanceOf(Element).isRequired,
11 }, 12 },
diff --git a/src/features/todos/index.js b/src/features/todos/index.js
index 9b6ab00a0..7388aebaf 100644
--- a/src/features/todos/index.js
+++ b/src/features/todos/index.js
@@ -8,6 +8,7 @@ export const GA_CATEGORY_TODOS = 'Todos';
8export const DEFAULT_TODOS_WIDTH = 300; 8export const DEFAULT_TODOS_WIDTH = 300;
9export const TODOS_MIN_WIDTH = 200; 9export const TODOS_MIN_WIDTH = 200;
10export const DEFAULT_TODOS_VISIBLE = true; 10export const DEFAULT_TODOS_VISIBLE = true;
11export const DEFAULT_IS_FEATURE_ENABLED_BY_USER = true;
11 12
12export const TODOS_ROUTES = { 13export const TODOS_ROUTES = {
13 TARGET: '/todos', 14 TARGET: '/todos',
diff --git a/src/features/todos/store.js b/src/features/todos/store.js
index 003c69a5b..05eef4ec1 100644
--- a/src/features/todos/store.js
+++ b/src/features/todos/store.js
@@ -11,7 +11,7 @@ import { FeatureStore } from '../utils/FeatureStore';
11import { createReactions } from '../../stores/lib/Reaction'; 11import { createReactions } from '../../stores/lib/Reaction';
12import { createActionBindings } from '../utils/ActionBinding'; 12import { createActionBindings } from '../utils/ActionBinding';
13import { 13import {
14 DEFAULT_TODOS_WIDTH, TODOS_MIN_WIDTH, DEFAULT_TODOS_VISIBLE, TODOS_ROUTES, 14 DEFAULT_TODOS_WIDTH, TODOS_MIN_WIDTH, DEFAULT_TODOS_VISIBLE, TODOS_ROUTES, DEFAULT_IS_FEATURE_ENABLED_BY_USER,
15} from '.'; 15} from '.';
16import { IPC } from './constants'; 16import { IPC } from './constants';
17import { state as delayAppState } from '../delayApp'; 17import { state as delayAppState } from '../delayApp';
@@ -33,7 +33,7 @@ export default class TodoStore extends FeatureStore {
33 33
34 @computed get isTodosPanelForceHidden() { 34 @computed get isTodosPanelForceHidden() {
35 const { isAnnouncementShown } = this.stores.announcements; 35 const { isAnnouncementShown } = this.stores.announcements;
36 return delayAppState.isDelayAppScreenVisible || isAnnouncementShown; 36 return delayAppState.isDelayAppScreenVisible || !this.settings.isFeatureEnabledByUser || isAnnouncementShown;
37 } 37 }
38 38
39 @computed get isTodosPanelVisible() { 39 @computed get isTodosPanelVisible() {
@@ -60,6 +60,7 @@ export default class TodoStore extends FeatureStore {
60 [todoActions.setTodosWebview, this._setTodosWebview], 60 [todoActions.setTodosWebview, this._setTodosWebview],
61 [todoActions.handleHostMessage, this._handleHostMessage], 61 [todoActions.handleHostMessage, this._handleHostMessage],
62 [todoActions.handleClientMessage, this._handleClientMessage], 62 [todoActions.handleClientMessage, this._handleClientMessage],
63 [todoActions.toggleTodosFeatureVisibility, this._toggleTodosFeatureVisibility],
63 ])); 64 ]));
64 65
65 // REACTIONS 66 // REACTIONS
@@ -74,6 +75,12 @@ export default class TodoStore extends FeatureStore {
74 this._registerReactions(this._allReactions); 75 this._registerReactions(this._allReactions);
75 76
76 this.isFeatureActive = true; 77 this.isFeatureActive = true;
78
79 if (this.settings.isFeatureEnabledByUser === undefined) {
80 this._updateSettings({
81 isFeatureEnabledByUser: DEFAULT_IS_FEATURE_ENABLED_BY_USER,
82 });
83 }
77 } 84 }
78 85
79 @action stop() { 86 @action stop() {
@@ -128,6 +135,14 @@ export default class TodoStore extends FeatureStore {
128 } 135 }
129 }; 136 };
130 137
138 @action _toggleTodosFeatureVisibility = () => {
139 debug('_toggleTodosFeatureVisibility');
140
141 this._updateSettings({
142 isFeatureEnabledByUser: !this.settings.isFeatureEnabledByUser,
143 });
144 };
145
131 // Todos client message handlers 146 // Todos client message handlers
132 147
133 _onTodosClientInitialized = () => { 148 _onTodosClientInitialized = () => {
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json
index 70111f72b..44a49317e 100644
--- a/src/i18n/locales/defaultMessages.json
+++ b/src/i18n/locales/defaultMessages.json
@@ -2945,6 +2945,45 @@
2945 "column": 20, 2945 "column": 20,
2946 "line": 25 2946 "line": 25
2947 } 2947 }
2948 },
2949 {
2950 "defaultMessage": "!!!No strings attached",
2951 "end": {
2952 "column": 3,
2953 "line": 32
2954 },
2955 "file": "src/components/ui/ActivateTrialButton/index.js",
2956 "id": "pricing.trial.terms.headline",
2957 "start": {
2958 "column": 29,
2959 "line": 29
2960 }
2961 },
2962 {
2963 "defaultMessage": "!!!No credit card required",
2964 "end": {
2965 "column": 3,
2966 "line": 36
2967 },
2968 "file": "src/components/ui/ActivateTrialButton/index.js",
2969 "id": "pricing.trial.terms.noCreditCard",
2970 "start": {
2971 "column": 16,
2972 "line": 33
2973 }
2974 },
2975 {
2976 "defaultMessage": "!!!Your free trial ends automatically after 14 days",
2977 "end": {
2978 "column": 3,
2979 "line": 40
2980 },
2981 "file": "src/components/ui/ActivateTrialButton/index.js",
2982 "id": "pricing.trial.terms.automaticTrialEnd",
2983 "start": {
2984 "column": 21,
2985 "line": 37
2986 }
2948 } 2987 }
2949 ], 2988 ],
2950 "path": "src/components/ui/ActivateTrialButton/index.json" 2989 "path": "src/components/ui/ActivateTrialButton/index.json"
@@ -3375,156 +3414,169 @@
3375 "defaultMessage": "!!!Launch Franz on start", 3414 "defaultMessage": "!!!Launch Franz on start",
3376 "end": { 3415 "end": {
3377 "column": 3, 3416 "column": 3,
3378 "line": 25 3417 "line": 27
3379 }, 3418 },
3380 "file": "src/containers/settings/EditSettingsScreen.js", 3419 "file": "src/containers/settings/EditSettingsScreen.js",
3381 "id": "settings.app.form.autoLaunchOnStart", 3420 "id": "settings.app.form.autoLaunchOnStart",
3382 "start": { 3421 "start": {
3383 "column": 21, 3422 "column": 21,
3384 "line": 22 3423 "line": 24
3385 } 3424 }
3386 }, 3425 },
3387 { 3426 {
3388 "defaultMessage": "!!!Open in background", 3427 "defaultMessage": "!!!Open in background",
3389 "end": { 3428 "end": {
3390 "column": 3, 3429 "column": 3,
3391 "line": 29 3430 "line": 31
3392 }, 3431 },
3393 "file": "src/containers/settings/EditSettingsScreen.js", 3432 "file": "src/containers/settings/EditSettingsScreen.js",
3394 "id": "settings.app.form.autoLaunchInBackground", 3433 "id": "settings.app.form.autoLaunchInBackground",
3395 "start": { 3434 "start": {
3396 "column": 26, 3435 "column": 26,
3397 "line": 26 3436 "line": 28
3398 } 3437 }
3399 }, 3438 },
3400 { 3439 {
3401 "defaultMessage": "!!!Keep Franz in background when closing the window", 3440 "defaultMessage": "!!!Keep Franz in background when closing the window",
3402 "end": { 3441 "end": {
3403 "column": 3, 3442 "column": 3,
3404 "line": 33 3443 "line": 35
3405 }, 3444 },
3406 "file": "src/containers/settings/EditSettingsScreen.js", 3445 "file": "src/containers/settings/EditSettingsScreen.js",
3407 "id": "settings.app.form.runInBackground", 3446 "id": "settings.app.form.runInBackground",
3408 "start": { 3447 "start": {
3409 "column": 19, 3448 "column": 19,
3410 "line": 30 3449 "line": 32
3411 } 3450 }
3412 }, 3451 },
3413 { 3452 {
3414 "defaultMessage": "!!!Show Franz in system tray", 3453 "defaultMessage": "!!!Show Franz in system tray",
3415 "end": { 3454 "end": {
3416 "column": 3, 3455 "column": 3,
3417 "line": 37 3456 "line": 39
3418 }, 3457 },
3419 "file": "src/containers/settings/EditSettingsScreen.js", 3458 "file": "src/containers/settings/EditSettingsScreen.js",
3420 "id": "settings.app.form.enableSystemTray", 3459 "id": "settings.app.form.enableSystemTray",
3421 "start": { 3460 "start": {
3422 "column": 20, 3461 "column": 20,
3423 "line": 34 3462 "line": 36
3424 } 3463 }
3425 }, 3464 },
3426 { 3465 {
3427 "defaultMessage": "!!!Minimize Franz to system tray", 3466 "defaultMessage": "!!!Minimize Franz to system tray",
3428 "end": { 3467 "end": {
3429 "column": 3, 3468 "column": 3,
3430 "line": 41 3469 "line": 43
3431 }, 3470 },
3432 "file": "src/containers/settings/EditSettingsScreen.js", 3471 "file": "src/containers/settings/EditSettingsScreen.js",
3433 "id": "settings.app.form.minimizeToSystemTray", 3472 "id": "settings.app.form.minimizeToSystemTray",
3434 "start": { 3473 "start": {
3435 "column": 24, 3474 "column": 24,
3436 "line": 38 3475 "line": 40
3437 } 3476 }
3438 }, 3477 },
3439 { 3478 {
3440 "defaultMessage": "!!!Language", 3479 "defaultMessage": "!!!Language",
3441 "end": { 3480 "end": {
3442 "column": 3, 3481 "column": 3,
3443 "line": 45 3482 "line": 47
3444 }, 3483 },
3445 "file": "src/containers/settings/EditSettingsScreen.js", 3484 "file": "src/containers/settings/EditSettingsScreen.js",
3446 "id": "settings.app.form.language", 3485 "id": "settings.app.form.language",
3447 "start": { 3486 "start": {
3448 "column": 12, 3487 "column": 12,
3449 "line": 42 3488 "line": 44
3450 } 3489 }
3451 }, 3490 },
3452 { 3491 {
3453 "defaultMessage": "!!!Dark Mode", 3492 "defaultMessage": "!!!Dark Mode",
3454 "end": { 3493 "end": {
3455 "column": 3, 3494 "column": 3,
3456 "line": 49 3495 "line": 51
3457 }, 3496 },
3458 "file": "src/containers/settings/EditSettingsScreen.js", 3497 "file": "src/containers/settings/EditSettingsScreen.js",
3459 "id": "settings.app.form.darkMode", 3498 "id": "settings.app.form.darkMode",
3460 "start": { 3499 "start": {
3461 "column": 12, 3500 "column": 12,
3462 "line": 46 3501 "line": 48
3463 } 3502 }
3464 }, 3503 },
3465 { 3504 {
3466 "defaultMessage": "!!!Display disabled services tabs", 3505 "defaultMessage": "!!!Display disabled services tabs",
3467 "end": { 3506 "end": {
3468 "column": 3, 3507 "column": 3,
3469 "line": 53 3508 "line": 55
3470 }, 3509 },
3471 "file": "src/containers/settings/EditSettingsScreen.js", 3510 "file": "src/containers/settings/EditSettingsScreen.js",
3472 "id": "settings.app.form.showDisabledServices", 3511 "id": "settings.app.form.showDisabledServices",
3473 "start": { 3512 "start": {
3474 "column": 24, 3513 "column": 24,
3475 "line": 50 3514 "line": 52
3476 } 3515 }
3477 }, 3516 },
3478 { 3517 {
3479 "defaultMessage": "!!!Show unread message badge when notifications are disabled", 3518 "defaultMessage": "!!!Show unread message badge when notifications are disabled",
3480 "end": { 3519 "end": {
3481 "column": 3, 3520 "column": 3,
3482 "line": 57 3521 "line": 59
3483 }, 3522 },
3484 "file": "src/containers/settings/EditSettingsScreen.js", 3523 "file": "src/containers/settings/EditSettingsScreen.js",
3485 "id": "settings.app.form.showMessagesBadgesWhenMuted", 3524 "id": "settings.app.form.showMessagesBadgesWhenMuted",
3486 "start": { 3525 "start": {
3487 "column": 29, 3526 "column": 29,
3488 "line": 54 3527 "line": 56
3489 } 3528 }
3490 }, 3529 },
3491 { 3530 {
3492 "defaultMessage": "!!!Enable spell checking", 3531 "defaultMessage": "!!!Enable spell checking",
3493 "end": { 3532 "end": {
3494 "column": 3, 3533 "column": 3,
3495 "line": 61 3534 "line": 63
3496 }, 3535 },
3497 "file": "src/containers/settings/EditSettingsScreen.js", 3536 "file": "src/containers/settings/EditSettingsScreen.js",
3498 "id": "settings.app.form.enableSpellchecking", 3537 "id": "settings.app.form.enableSpellchecking",
3499 "start": { 3538 "start": {
3500 "column": 23, 3539 "column": 23,
3501 "line": 58 3540 "line": 60
3502 } 3541 }
3503 }, 3542 },
3504 { 3543 {
3505 "defaultMessage": "!!!Enable GPU Acceleration", 3544 "defaultMessage": "!!!Enable GPU Acceleration",
3506 "end": { 3545 "end": {
3507 "column": 3, 3546 "column": 3,
3508 "line": 65 3547 "line": 67
3509 }, 3548 },
3510 "file": "src/containers/settings/EditSettingsScreen.js", 3549 "file": "src/containers/settings/EditSettingsScreen.js",
3511 "id": "settings.app.form.enableGPUAcceleration", 3550 "id": "settings.app.form.enableGPUAcceleration",
3512 "start": { 3551 "start": {
3513 "column": 25, 3552 "column": 25,
3514 "line": 62 3553 "line": 64
3515 } 3554 }
3516 }, 3555 },
3517 { 3556 {
3518 "defaultMessage": "!!!Include beta versions", 3557 "defaultMessage": "!!!Include beta versions",
3519 "end": { 3558 "end": {
3520 "column": 3, 3559 "column": 3,
3521 "line": 69 3560 "line": 71
3522 }, 3561 },
3523 "file": "src/containers/settings/EditSettingsScreen.js", 3562 "file": "src/containers/settings/EditSettingsScreen.js",
3524 "id": "settings.app.form.beta", 3563 "id": "settings.app.form.beta",
3525 "start": { 3564 "start": {
3526 "column": 8, 3565 "column": 8,
3527 "line": 66 3566 "line": 68
3567 }
3568 },
3569 {
3570 "defaultMessage": "!!!Enable Franz Todos",
3571 "end": {
3572 "column": 3,
3573 "line": 75
3574 },
3575 "file": "src/containers/settings/EditSettingsScreen.js",
3576 "id": "settings.app.form.enableTodos",
3577 "start": {
3578 "column": 15,
3579 "line": 72
3528 } 3580 }
3529 } 3581 }
3530 ], 3582 ],
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index addb4064c..9e63fdbca 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -206,6 +206,7 @@
206 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", 206 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration",
207 "settings.app.form.enableSpellchecking": "Enable spell checking", 207 "settings.app.form.enableSpellchecking": "Enable spell checking",
208 "settings.app.form.enableSystemTray": "Show Franz in system tray", 208 "settings.app.form.enableSystemTray": "Show Franz in system tray",
209 "settings.app.form.enableTodos": "Enable Franz Todos",
209 "settings.app.form.language": "Language", 210 "settings.app.form.language": "Language",
210 "settings.app.form.minimizeToSystemTray": "Minimize Franz to system tray", 211 "settings.app.form.minimizeToSystemTray": "Minimize Franz to system tray",
211 "settings.app.form.runInBackground": "Keep Franz in background when closing the window", 212 "settings.app.form.runInBackground": "Keep Franz in background when closing the window",
@@ -378,4 +379,4 @@
378 "workspaceDrawer.workspaceFeatureInfo": "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>", 379 "workspaceDrawer.workspaceFeatureInfo": "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>",
379 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", 380 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings",
380 "workspaces.switchingIndicator.switchingTo": "Switching to" 381 "workspaces.switchingIndicator.switchingTo": "Switching to"
381} \ No newline at end of file 382}
diff --git a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json
index d3b413540..2b666e7e9 100644
--- a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json
+++ b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Launch Franz on start", 4 "defaultMessage": "!!!Launch Franz on start",
5 "file": "src/containers/settings/EditSettingsScreen.js", 5 "file": "src/containers/settings/EditSettingsScreen.js",
6 "start": { 6 "start": {
7 "line": 22, 7 "line": 24,
8 "column": 21 8 "column": 21
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 25, 11 "line": 27,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Open in background", 17 "defaultMessage": "!!!Open in background",
18 "file": "src/containers/settings/EditSettingsScreen.js", 18 "file": "src/containers/settings/EditSettingsScreen.js",
19 "start": { 19 "start": {
20 "line": 26, 20 "line": 28,
21 "column": 26 21 "column": 26
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 29, 24 "line": 31,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Keep Franz in background when closing the window", 30 "defaultMessage": "!!!Keep Franz in background when closing the window",
31 "file": "src/containers/settings/EditSettingsScreen.js", 31 "file": "src/containers/settings/EditSettingsScreen.js",
32 "start": { 32 "start": {
33 "line": 30, 33 "line": 32,
34 "column": 19 34 "column": 19
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 33, 37 "line": 35,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!Show Franz in system tray", 43 "defaultMessage": "!!!Show Franz in system tray",
44 "file": "src/containers/settings/EditSettingsScreen.js", 44 "file": "src/containers/settings/EditSettingsScreen.js",
45 "start": { 45 "start": {
46 "line": 34, 46 "line": 36,
47 "column": 20 47 "column": 20
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 37, 50 "line": 39,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
@@ -56,11 +56,11 @@
56 "defaultMessage": "!!!Minimize Franz to system tray", 56 "defaultMessage": "!!!Minimize Franz to system tray",
57 "file": "src/containers/settings/EditSettingsScreen.js", 57 "file": "src/containers/settings/EditSettingsScreen.js",
58 "start": { 58 "start": {
59 "line": 38, 59 "line": 40,
60 "column": 24 60 "column": 24
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 41, 63 "line": 43,
64 "column": 3 64 "column": 3
65 } 65 }
66 }, 66 },
@@ -69,11 +69,11 @@
69 "defaultMessage": "!!!Language", 69 "defaultMessage": "!!!Language",
70 "file": "src/containers/settings/EditSettingsScreen.js", 70 "file": "src/containers/settings/EditSettingsScreen.js",
71 "start": { 71 "start": {
72 "line": 42, 72 "line": 44,
73 "column": 12 73 "column": 12
74 }, 74 },
75 "end": { 75 "end": {
76 "line": 45, 76 "line": 47,
77 "column": 3 77 "column": 3
78 } 78 }
79 }, 79 },
@@ -82,11 +82,11 @@
82 "defaultMessage": "!!!Dark Mode", 82 "defaultMessage": "!!!Dark Mode",
83 "file": "src/containers/settings/EditSettingsScreen.js", 83 "file": "src/containers/settings/EditSettingsScreen.js",
84 "start": { 84 "start": {
85 "line": 46, 85 "line": 48,
86 "column": 12 86 "column": 12
87 }, 87 },
88 "end": { 88 "end": {
89 "line": 49, 89 "line": 51,
90 "column": 3 90 "column": 3
91 } 91 }
92 }, 92 },
@@ -95,11 +95,11 @@
95 "defaultMessage": "!!!Display disabled services tabs", 95 "defaultMessage": "!!!Display disabled services tabs",
96 "file": "src/containers/settings/EditSettingsScreen.js", 96 "file": "src/containers/settings/EditSettingsScreen.js",
97 "start": { 97 "start": {
98 "line": 50, 98 "line": 52,
99 "column": 24 99 "column": 24
100 }, 100 },
101 "end": { 101 "end": {
102 "line": 53, 102 "line": 55,
103 "column": 3 103 "column": 3
104 } 104 }
105 }, 105 },
@@ -108,11 +108,11 @@
108 "defaultMessage": "!!!Show unread message badge when notifications are disabled", 108 "defaultMessage": "!!!Show unread message badge when notifications are disabled",
109 "file": "src/containers/settings/EditSettingsScreen.js", 109 "file": "src/containers/settings/EditSettingsScreen.js",
110 "start": { 110 "start": {
111 "line": 54, 111 "line": 56,
112 "column": 29 112 "column": 29
113 }, 113 },
114 "end": { 114 "end": {
115 "line": 57, 115 "line": 59,
116 "column": 3 116 "column": 3
117 } 117 }
118 }, 118 },
@@ -121,11 +121,11 @@
121 "defaultMessage": "!!!Enable spell checking", 121 "defaultMessage": "!!!Enable spell checking",
122 "file": "src/containers/settings/EditSettingsScreen.js", 122 "file": "src/containers/settings/EditSettingsScreen.js",
123 "start": { 123 "start": {
124 "line": 58, 124 "line": 60,
125 "column": 23 125 "column": 23
126 }, 126 },
127 "end": { 127 "end": {
128 "line": 61, 128 "line": 63,
129 "column": 3 129 "column": 3
130 } 130 }
131 }, 131 },
@@ -134,11 +134,11 @@
134 "defaultMessage": "!!!Enable GPU Acceleration", 134 "defaultMessage": "!!!Enable GPU Acceleration",
135 "file": "src/containers/settings/EditSettingsScreen.js", 135 "file": "src/containers/settings/EditSettingsScreen.js",
136 "start": { 136 "start": {
137 "line": 62, 137 "line": 64,
138 "column": 25 138 "column": 25
139 }, 139 },
140 "end": { 140 "end": {
141 "line": 65, 141 "line": 67,
142 "column": 3 142 "column": 3
143 } 143 }
144 }, 144 },
@@ -147,11 +147,24 @@
147 "defaultMessage": "!!!Include beta versions", 147 "defaultMessage": "!!!Include beta versions",
148 "file": "src/containers/settings/EditSettingsScreen.js", 148 "file": "src/containers/settings/EditSettingsScreen.js",
149 "start": { 149 "start": {
150 "line": 66, 150 "line": 68,
151 "column": 8 151 "column": 8
152 }, 152 },
153 "end": { 153 "end": {
154 "line": 69, 154 "line": 71,
155 "column": 3
156 }
157 },
158 {
159 "id": "settings.app.form.enableTodos",
160 "defaultMessage": "!!!Enable Franz Todos",
161 "file": "src/containers/settings/EditSettingsScreen.js",
162 "start": {
163 "line": 72,
164 "column": 15
165 },
166 "end": {
167 "line": 75,
155 "column": 3 168 "column": 3
156 } 169 }
157 } 170 }