diff options
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | src/app.js | 2 | ||||
-rw-r--r-- | src/components/auth/Locked.js | 115 | ||||
-rw-r--r-- | src/components/layout/Sidebar.js | 27 | ||||
-rw-r--r-- | src/components/settings/settings/EditSettingsForm.js | 42 | ||||
-rw-r--r-- | src/config.js | 5 | ||||
-rw-r--r-- | src/containers/auth/LockedScreen.js | 72 | ||||
-rw-r--r-- | src/containers/settings/EditSettingsScreen.js | 25 | ||||
-rw-r--r-- | src/i18n/locales/defaultMessages.json | 400 | ||||
-rw-r--r-- | src/i18n/locales/en-US.json | 11 | ||||
-rw-r--r-- | src/i18n/messages/src/components/auth/Locked.json | 67 | ||||
-rw-r--r-- | src/i18n/messages/src/components/layout/Sidebar.json | 13 | ||||
-rw-r--r-- | src/i18n/messages/src/components/settings/settings/EditSettingsForm.json | 90 | ||||
-rw-r--r-- | src/i18n/messages/src/containers/settings/EditSettingsScreen.json | 62 | ||||
-rw-r--r-- | src/i18n/messages/src/lib/Menu.json | 165 | ||||
-rw-r--r-- | src/lib/Menu.js | 19 | ||||
-rw-r--r-- | src/stores/SettingsStore.js | 28 |
17 files changed, 888 insertions, 256 deletions
@@ -25,6 +25,7 @@ You can find the installers in the [latest release](https://github.com/kytwb/fer | |||
25 | - [x] Makes all users Premium by default | 25 | - [x] Makes all users Premium by default |
26 | - [x] [Add option to change server to a custom](https://github.com/kytwb/ferdi/wiki/Custom-Server) [ferdi-server](https://github.com/vantezzen/ferdi-server) | 26 | - [x] [Add option to change server to a custom](https://github.com/kytwb/ferdi/wiki/Custom-Server) [ferdi-server](https://github.com/vantezzen/ferdi-server) |
27 | - [x] Add "Private Notification"-Mode, that hides message content from notifications (as suggested in [meetfranz/franz#879](https://github.com/meetfranz/franz/issues/879)) | 27 | - [x] Add "Private Notification"-Mode, that hides message content from notifications (as suggested in [meetfranz/franz#879](https://github.com/meetfranz/franz/issues/879)) |
28 | - [x] Add Password Lock feature to keep your messages protected. ([ferdi#41](https://github.com/kytwb/ferdi/issues/41) and [meetfranz#810](https://github.com/meetfranz/franz/issues/810)) | ||
28 | - [x] [Add CTRL+← and CTRL+→ shortcuts and menu options to go back and forward in the service browsing history](https://github.com/kytwb/ferdi/issues/39) | 29 | - [x] [Add CTRL+← and CTRL+→ shortcuts and menu options to go back and forward in the service browsing history](https://github.com/kytwb/ferdi/issues/39) |
29 | - [x] Add "npm run prepare-code" command for development to lint and beautify code | 30 | - [x] Add "npm run prepare-code" command for development to lint and beautify code |
30 | - [x] Remove "Franz is better together" popup | 31 | - [x] Remove "Franz is better together" popup |
diff --git a/src/app.js b/src/app.js index 797c178a3..e16c01456 100644 --- a/src/app.js +++ b/src/app.js | |||
@@ -32,6 +32,7 @@ import EditSettingsScreen from './containers/settings/EditSettingsScreen'; | |||
32 | import InviteSettingsScreen from './containers/settings/InviteScreen'; | 32 | import InviteSettingsScreen from './containers/settings/InviteScreen'; |
33 | import WelcomeScreen from './containers/auth/WelcomeScreen'; | 33 | import WelcomeScreen from './containers/auth/WelcomeScreen'; |
34 | import LoginScreen from './containers/auth/LoginScreen'; | 34 | import LoginScreen from './containers/auth/LoginScreen'; |
35 | import LockedScreen from './containers/auth/LockedScreen'; | ||
35 | import PasswordScreen from './containers/auth/PasswordScreen'; | 36 | import PasswordScreen from './containers/auth/PasswordScreen'; |
36 | import SignupScreen from './containers/auth/SignupScreen'; | 37 | import SignupScreen from './containers/auth/SignupScreen'; |
37 | import ImportScreen from './containers/auth/ImportScreen'; | 38 | import ImportScreen from './containers/auth/ImportScreen'; |
@@ -94,6 +95,7 @@ window.addEventListener('load', () => { | |||
94 | <IndexRedirect to="/auth/welcome" /> | 95 | <IndexRedirect to="/auth/welcome" /> |
95 | <Route path="/auth/welcome" component={WelcomeScreen} /> | 96 | <Route path="/auth/welcome" component={WelcomeScreen} /> |
96 | <Route path="/auth/login" component={LoginScreen} /> | 97 | <Route path="/auth/login" component={LoginScreen} /> |
98 | <Route path="/auth/locked" component={LockedScreen} /> | ||
97 | <Route path="/auth/signup"> | 99 | <Route path="/auth/signup"> |
98 | <IndexRedirect to="/auth/signup/form" /> | 100 | <IndexRedirect to="/auth/signup/form" /> |
99 | <Route path="/auth/signup/form" component={SignupScreen} /> | 101 | <Route path="/auth/signup/form" component={SignupScreen} /> |
diff --git a/src/components/auth/Locked.js b/src/components/auth/Locked.js new file mode 100644 index 000000000..045621d0a --- /dev/null +++ b/src/components/auth/Locked.js | |||
@@ -0,0 +1,115 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { observer } from 'mobx-react'; | ||
4 | import { defineMessages, intlShape } from 'react-intl'; | ||
5 | |||
6 | import Form from '../../lib/Form'; | ||
7 | import { required } from '../../helpers/validation-helpers'; | ||
8 | import Input from '../ui/Input'; | ||
9 | import Button from '../ui/Button'; | ||
10 | import Infobox from '../ui/Infobox'; | ||
11 | |||
12 | import { globalError as globalErrorPropType } from '../../prop-types'; | ||
13 | |||
14 | const messages = defineMessages({ | ||
15 | headline: { | ||
16 | id: 'locked.headline', | ||
17 | defaultMessage: '!!!Locked', | ||
18 | }, | ||
19 | info: { | ||
20 | id: 'locked.info', | ||
21 | defaultMessage: '!!!Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.', | ||
22 | }, | ||
23 | passwordLabel: { | ||
24 | id: 'locked.password.label', | ||
25 | defaultMessage: '!!!Password', | ||
26 | }, | ||
27 | submitButtonLabel: { | ||
28 | id: 'locked.submit.label', | ||
29 | defaultMessage: '!!!Unlock', | ||
30 | }, | ||
31 | invalidCredentials: { | ||
32 | id: 'locked.invalidCredentials', | ||
33 | defaultMessage: '!!!Password invalid', | ||
34 | }, | ||
35 | }); | ||
36 | |||
37 | export default @observer class Locked extends Component { | ||
38 | static propTypes = { | ||
39 | onSubmit: PropTypes.func.isRequired, | ||
40 | isSubmitting: PropTypes.bool.isRequired, | ||
41 | error: globalErrorPropType.isRequired, | ||
42 | }; | ||
43 | |||
44 | static contextTypes = { | ||
45 | intl: intlShape, | ||
46 | }; | ||
47 | |||
48 | form = new Form({ | ||
49 | fields: { | ||
50 | password: { | ||
51 | label: this.context.intl.formatMessage(messages.passwordLabel), | ||
52 | value: '', | ||
53 | validators: [required], | ||
54 | type: 'password', | ||
55 | }, | ||
56 | }, | ||
57 | }, this.context.intl); | ||
58 | |||
59 | submit(e) { | ||
60 | e.preventDefault(); | ||
61 | this.form.submit({ | ||
62 | onSuccess: (form) => { | ||
63 | this.props.onSubmit(form.values()); | ||
64 | }, | ||
65 | onError: () => { }, | ||
66 | }); | ||
67 | } | ||
68 | |||
69 | render() { | ||
70 | const { form } = this; | ||
71 | const { intl } = this.context; | ||
72 | const { | ||
73 | isSubmitting, | ||
74 | error, | ||
75 | } = this.props; | ||
76 | |||
77 | return ( | ||
78 | <div className="auth__container"> | ||
79 | <form className="franz-form auth__form" onSubmit={e => this.submit(e)}> | ||
80 | <img | ||
81 | src="./assets/images/logo.svg" | ||
82 | className="auth__logo" | ||
83 | alt="" | ||
84 | /> | ||
85 | <h1>{intl.formatMessage(messages.headline)}</h1> | ||
86 | <Infobox type="warning"> | ||
87 | {intl.formatMessage(messages.info)} | ||
88 | </Infobox> | ||
89 | <Input | ||
90 | field={form.$('password')} | ||
91 | showPasswordToggle | ||
92 | /> | ||
93 | {error.code === 'invalid-credentials' && ( | ||
94 | <p className="error-message center">{intl.formatMessage(messages.invalidCredentials)}</p> | ||
95 | )} | ||
96 | {isSubmitting ? ( | ||
97 | <Button | ||
98 | className="auth__button is-loading" | ||
99 | buttonType="secondary" | ||
100 | label={`${intl.formatMessage(messages.submitButtonLabel)} ...`} | ||
101 | loaded={false} | ||
102 | disabled | ||
103 | /> | ||
104 | ) : ( | ||
105 | <Button | ||
106 | type="submit" | ||
107 | className="auth__button" | ||
108 | label={intl.formatMessage(messages.submitButtonLabel)} | ||
109 | /> | ||
110 | )} | ||
111 | </form> | ||
112 | </div> | ||
113 | ); | ||
114 | } | ||
115 | } | ||
diff --git a/src/components/layout/Sidebar.js b/src/components/layout/Sidebar.js index 729bd35af..d26eb852d 100644 --- a/src/components/layout/Sidebar.js +++ b/src/components/layout/Sidebar.js | |||
@@ -2,7 +2,7 @@ import React, { Component } from 'react'; | |||
2 | import PropTypes from 'prop-types'; | 2 | import PropTypes from 'prop-types'; |
3 | import ReactTooltip from 'react-tooltip'; | 3 | import ReactTooltip from 'react-tooltip'; |
4 | import { defineMessages, intlShape } from 'react-intl'; | 4 | import { defineMessages, intlShape } from 'react-intl'; |
5 | import { observer } from 'mobx-react'; | 5 | import { inject, observer } from 'mobx-react'; |
6 | import { Link } from 'react-router'; | 6 | import { Link } from 'react-router'; |
7 | 7 | ||
8 | import Tabbar from '../services/tabs/Tabbar'; | 8 | import Tabbar from '../services/tabs/Tabbar'; |
@@ -44,9 +44,13 @@ const messages = defineMessages({ | |||
44 | id: 'sidebar.closeTodosDrawer', | 44 | id: 'sidebar.closeTodosDrawer', |
45 | defaultMessage: '!!!Close Franz Todos', | 45 | defaultMessage: '!!!Close Franz Todos', |
46 | }, | 46 | }, |
47 | lockFerdi: { | ||
48 | id: 'sidebar.lockFerdi', | ||
49 | defaultMessage: '!!!Lock Ferdi', | ||
50 | }, | ||
47 | }); | 51 | }); |
48 | 52 | ||
49 | export default @observer class Sidebar extends Component { | 53 | export default @inject('stores', 'actions') @observer class Sidebar extends Component { |
50 | static propTypes = { | 54 | static propTypes = { |
51 | openSettings: PropTypes.func.isRequired, | 55 | openSettings: PropTypes.func.isRequired, |
52 | toggleMuteApp: PropTypes.func.isRequired, | 56 | toggleMuteApp: PropTypes.func.isRequired, |
@@ -87,6 +91,8 @@ export default @observer class Sidebar extends Component { | |||
87 | isAppMuted, | 91 | isAppMuted, |
88 | isWorkspaceDrawerOpen, | 92 | isWorkspaceDrawerOpen, |
89 | toggleWorkspaceDrawer, | 93 | toggleWorkspaceDrawer, |
94 | stores, | ||
95 | actions, | ||
90 | } = this.props; | 96 | } = this.props; |
91 | const { intl } = this.context; | 97 | const { intl } = this.context; |
92 | const todosToggleMessage = ( | 98 | const todosToggleMessage = ( |
@@ -107,6 +113,23 @@ export default @observer class Sidebar extends Component { | |||
107 | /> | 113 | /> |
108 | { isLoggedIn ? ( | 114 | { isLoggedIn ? ( |
109 | <> | 115 | <> |
116 | { stores.settings.all.app.lockingFeatureEnabled ? ( | ||
117 | <button | ||
118 | type="button" | ||
119 | className={`sidebar__button sidebar__button--audio ${isAppMuted ? 'is-muted' : ''}`} | ||
120 | onClick={() => { | ||
121 | actions.settings.update({ | ||
122 | type: 'app', | ||
123 | data: { | ||
124 | locked: true, | ||
125 | }, | ||
126 | }); | ||
127 | }} | ||
128 | data-tip={`${intl.formatMessage(messages.lockFerdi)} (${ctrlKey}+Shift+L)`} | ||
129 | > | ||
130 | <i className="mdi mdi-lock" /> | ||
131 | </button> | ||
132 | ) : null} | ||
110 | {todosStore.isFeatureEnabled && todosStore.isFeatureEnabledByUser ? ( | 133 | {todosStore.isFeatureEnabled && todosStore.isFeatureEnabledByUser ? ( |
111 | <button | 134 | <button |
112 | type="button" | 135 | type="button" |
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js index b4e6e08a1..0152857a6 100644 --- a/src/components/settings/settings/EditSettingsForm.js +++ b/src/components/settings/settings/EditSettingsForm.js | |||
@@ -30,6 +30,14 @@ const messages = defineMessages({ | |||
30 | id: 'settings.app.todoServerInfo', | 30 | id: 'settings.app.todoServerInfo', |
31 | defaultMessage: '!!!This server will be used for the "Franz Todo" feature. The default server will only work for premium users. (default: https://app.franztodos.com)', | 31 | defaultMessage: '!!!This server will be used for the "Franz Todo" feature. The default server will only work for premium users. (default: https://app.franztodos.com)', |
32 | }, | 32 | }, |
33 | lockedPassword: { | ||
34 | id: 'settings.app.lockedPassword', | ||
35 | defaultMessage: '!!!Ferdi Lock Password', | ||
36 | }, | ||
37 | lockedPasswordInfo: { | ||
38 | id: 'settings.app.lockedPasswordInfo', | ||
39 | defaultMessage: '!!!Please make sure to set a password you\'ll remember.\nIf you loose this password, you will have to reinstall Ferdi.', | ||
40 | }, | ||
33 | headlineLanguage: { | 41 | headlineLanguage: { |
34 | id: 'settings.app.headlineLanguage', | 42 | id: 'settings.app.headlineLanguage', |
35 | defaultMessage: '!!!Language', | 43 | defaultMessage: '!!!Language', |
@@ -159,6 +167,7 @@ export default @observer class EditSettingsForm extends Component { | |||
159 | } | 167 | } |
160 | 168 | ||
161 | const isLoggedIn = Boolean(localStorage.getItem('authToken')); | 169 | const isLoggedIn = Boolean(localStorage.getItem('authToken')); |
170 | const lockingFeatureEnabled = window.ferdi.stores.settings.all.app.lockingFeatureEnabled; | ||
162 | 171 | ||
163 | return ( | 172 | return ( |
164 | <div className="settings__main"> | 173 | <div className="settings__main"> |
@@ -205,6 +214,7 @@ export default @observer class EditSettingsForm extends Component { | |||
205 | Please still consider | 214 | Please still consider |
206 | {' '} | 215 | {' '} |
207 | <a href="https://www.meetfranz.com/pricing" target="_blank">paying for a Franz account</a> | 216 | <a href="https://www.meetfranz.com/pricing" target="_blank">paying for a Franz account</a> |
217 | {' '} | ||
208 | or | 218 | or |
209 | {' '} | 219 | {' '} |
210 | <a href="https://github.com/vantezzen/ferdi-server" target="_blank">using a self-hosted ferdi-server</a> | 220 | <a href="https://github.com/vantezzen/ferdi-server" target="_blank">using a self-hosted ferdi-server</a> |
@@ -225,12 +235,42 @@ export default @observer class EditSettingsForm extends Component { | |||
225 | placeholder="Todo Server" | 235 | placeholder="Todo Server" |
226 | onChange={e => this.submit(e)} | 236 | onChange={e => this.submit(e)} |
227 | field={form.$('todoServer')} | 237 | field={form.$('todoServer')} |
228 | autoFocus | ||
229 | /> | 238 | /> |
230 | <p>{ intl.formatMessage(messages.todoServerInfo) }</p> | 239 | <p>{ intl.formatMessage(messages.todoServerInfo) }</p> |
231 | </> | 240 | </> |
232 | )} | 241 | )} |
233 | 242 | ||
243 | <Toggle field={form.$('lockingFeatureEnabled')} /> | ||
244 | {lockingFeatureEnabled && ( | ||
245 | <> | ||
246 | <Input | ||
247 | placeholder={intl.formatMessage(messages.lockedPassword)} | ||
248 | onChange={e => this.submit(e)} | ||
249 | field={form.$('lockedPassword')} | ||
250 | type="password" | ||
251 | /> | ||
252 | <p> | ||
253 | { intl.formatMessage(messages.lockedPasswordInfo) } | ||
254 | </p> | ||
255 | </> | ||
256 | )} | ||
257 | <p | ||
258 | className="settings__message" | ||
259 | style={{ | ||
260 | borderTop: 0, marginTop: 0, paddingTop: 0, marginBottom: '2rem', | ||
261 | }} | ||
262 | > | ||
263 | <span> | ||
264 | Ferdi password lock allows you to keep your messages protected. | ||
265 | <br /> | ||
266 | Using Ferdi password lock, you will be prompted to enter your password everytime you | ||
267 | start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut | ||
268 | {' '} | ||
269 | <code>CMD/CTRL+Shift+L</code> | ||
270 | </span> | ||
271 | </p> | ||
272 | |||
273 | |||
234 | {/* Appearance */} | 274 | {/* Appearance */} |
235 | <h2 id="apperance">{intl.formatMessage(messages.headlineAppearance)}</h2> | 275 | <h2 id="apperance">{intl.formatMessage(messages.headlineAppearance)}</h2> |
236 | <Toggle field={form.$('showDisabledServices')} /> | 276 | <Toggle field={form.$('showDisabledServices')} /> |
diff --git a/src/config.js b/src/config.js index 66789f2a4..77fb34d3c 100644 --- a/src/config.js +++ b/src/config.js | |||
@@ -31,6 +31,8 @@ export const DEVELOPMENT_TODOS_FRONTEND_URL = 'https://development--franz-todos. | |||
31 | 31 | ||
32 | export const GA_ID = !isDevMode ? 'UA-74126766-10' : 'UA-74126766-12'; | 32 | export const GA_ID = !isDevMode ? 'UA-74126766-10' : 'UA-74126766-12'; |
33 | 33 | ||
34 | export const DEFAULT_LOCK_PASSWORD = 'ferdi'; | ||
35 | |||
34 | export const DEFAULT_APP_SETTINGS = { | 36 | export const DEFAULT_APP_SETTINGS = { |
35 | autoLaunchInBackground: false, | 37 | autoLaunchInBackground: false, |
36 | runInBackground: true, | 38 | runInBackground: true, |
@@ -51,6 +53,9 @@ export const DEFAULT_APP_SETTINGS = { | |||
51 | enableGPUAcceleration: true, | 53 | enableGPUAcceleration: true, |
52 | serviceLimit: 5, | 54 | serviceLimit: 5, |
53 | autohideMenuBar: false, | 55 | autohideMenuBar: false, |
56 | lockingFeatureEnabled: false, | ||
57 | locked: false, | ||
58 | lockedPassword: '', | ||
54 | }; | 59 | }; |
55 | 60 | ||
56 | export const DEFAULT_FEATURES_CONFIG = { | 61 | export const DEFAULT_FEATURES_CONFIG = { |
diff --git a/src/containers/auth/LockedScreen.js b/src/containers/auth/LockedScreen.js new file mode 100644 index 000000000..94285fb06 --- /dev/null +++ b/src/containers/auth/LockedScreen.js | |||
@@ -0,0 +1,72 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { inject, observer } from 'mobx-react'; | ||
4 | import Locked from '../../components/auth/Locked'; | ||
5 | import SettingsStore from '../../stores/SettingsStore'; | ||
6 | import { DEFAULT_LOCK_PASSWORD } from '../../config'; | ||
7 | |||
8 | import { globalError as globalErrorPropType } from '../../prop-types'; | ||
9 | |||
10 | export default @inject('stores', 'actions') @observer class LockedScreen extends Component { | ||
11 | static propTypes = { | ||
12 | error: globalErrorPropType.isRequired, | ||
13 | }; | ||
14 | |||
15 | state = { | ||
16 | error: false, | ||
17 | } | ||
18 | |||
19 | constructor(props) { | ||
20 | super(props); | ||
21 | |||
22 | this.onSubmit = this.onSubmit.bind(this); | ||
23 | } | ||
24 | |||
25 | onSubmit(values) { | ||
26 | const { password } = values; | ||
27 | |||
28 | let correctPassword = this.props.stores.settings.all.app.lockedPassword; | ||
29 | if (!correctPassword) { | ||
30 | // Lock feature was enabled but no password was set | ||
31 | // Use default lock password so user can exit | ||
32 | correctPassword = DEFAULT_LOCK_PASSWORD; | ||
33 | } | ||
34 | |||
35 | if (String(password) === String(correctPassword)) { | ||
36 | this.props.actions.settings.update({ | ||
37 | type: 'app', | ||
38 | data: { | ||
39 | locked: false, | ||
40 | }, | ||
41 | }); | ||
42 | } else { | ||
43 | this.setState({ | ||
44 | error: { | ||
45 | code: 'invalid-credentials', | ||
46 | }, | ||
47 | }); | ||
48 | } | ||
49 | } | ||
50 | |||
51 | render() { | ||
52 | const { stores, error } = this.props; | ||
53 | return ( | ||
54 | <Locked | ||
55 | onSubmit={this.onSubmit} | ||
56 | isSubmitting={stores.user.loginRequest.isExecuting} | ||
57 | error={this.state.error || error} | ||
58 | /> | ||
59 | ); | ||
60 | } | ||
61 | } | ||
62 | |||
63 | LockedScreen.wrappedComponent.propTypes = { | ||
64 | actions: PropTypes.shape({ | ||
65 | settings: PropTypes.shape({ | ||
66 | update: PropTypes.func.isRequired, | ||
67 | }).isRequired, | ||
68 | }).isRequired, | ||
69 | stores: PropTypes.shape({ | ||
70 | settings: PropTypes.instanceOf(SettingsStore).isRequired, | ||
71 | }).isRequired, | ||
72 | }; | ||
diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js index 778b70ad9..1b134622a 100644 --- a/src/containers/settings/EditSettingsScreen.js +++ b/src/containers/settings/EditSettingsScreen.js | |||
@@ -9,7 +9,7 @@ import UserStore from '../../stores/UserStore'; | |||
9 | import TodosStore from '../../features/todos/store'; | 9 | import TodosStore from '../../features/todos/store'; |
10 | import Form from '../../lib/Form'; | 10 | import Form from '../../lib/Form'; |
11 | import { APP_LOCALES, SPELLCHECKER_LOCALES } from '../../i18n/languages'; | 11 | import { APP_LOCALES, SPELLCHECKER_LOCALES } from '../../i18n/languages'; |
12 | import { DEFAULT_APP_SETTINGS } from '../../config'; | 12 | import { DEFAULT_APP_SETTINGS, DEFAULT_LOCK_PASSWORD } from '../../config'; |
13 | import { config as spellcheckerConfig } from '../../features/spellchecker'; | 13 | import { config as spellcheckerConfig } from '../../features/spellchecker'; |
14 | 14 | ||
15 | import { getSelectOptions } from '../../helpers/i18n-helpers'; | 15 | import { getSelectOptions } from '../../helpers/i18n-helpers'; |
@@ -57,6 +57,14 @@ const messages = defineMessages({ | |||
57 | id: 'settings.app.form.todoServer', | 57 | id: 'settings.app.form.todoServer', |
58 | defaultMessage: '!!!Todo Server', | 58 | defaultMessage: '!!!Todo Server', |
59 | }, | 59 | }, |
60 | enableLock: { | ||
61 | id: 'settings.app.form.enableLock', | ||
62 | defaultMessage: '!!!Enable Ferdi password lock', | ||
63 | }, | ||
64 | lockPassword: { | ||
65 | id: 'settings.app.form.lockPassword', | ||
66 | defaultMessage: '!!!Ferdi Lock password', | ||
67 | }, | ||
60 | language: { | 68 | language: { |
61 | id: 'settings.app.form.language', | 69 | id: 'settings.app.form.language', |
62 | defaultMessage: '!!!Language', | 70 | defaultMessage: '!!!Language', |
@@ -124,6 +132,8 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
124 | privateNotifications: settingsData.privateNotifications, | 132 | privateNotifications: settingsData.privateNotifications, |
125 | server: settingsData.server, | 133 | server: settingsData.server, |
126 | todoServer: settingsData.todoServer, | 134 | todoServer: settingsData.todoServer, |
135 | lockingFeatureEnabled: settingsData.lockingFeatureEnabled, | ||
136 | lockedPassword: settingsData.lockedPassword, | ||
127 | enableGPUAcceleration: settingsData.enableGPUAcceleration, | 137 | enableGPUAcceleration: settingsData.enableGPUAcceleration, |
128 | showDisabledServices: settingsData.showDisabledServices, | 138 | showDisabledServices: settingsData.showDisabledServices, |
129 | darkMode: settingsData.darkMode, | 139 | darkMode: settingsData.darkMode, |
@@ -214,6 +224,17 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
214 | value: settings.all.app.todoServer || TODOS_FRONTEND, | 224 | value: settings.all.app.todoServer || TODOS_FRONTEND, |
215 | default: TODOS_FRONTEND, | 225 | default: TODOS_FRONTEND, |
216 | }, | 226 | }, |
227 | lockingFeatureEnabled: { | ||
228 | label: intl.formatMessage(messages.enableLock), | ||
229 | value: settings.all.app.lockingFeatureEnabled || false, | ||
230 | default: false, | ||
231 | }, | ||
232 | lockedPassword: { | ||
233 | label: intl.formatMessage(messages.lockPassword), | ||
234 | value: settings.all.app.lockedPassword || DEFAULT_LOCK_PASSWORD, | ||
235 | default: DEFAULT_LOCK_PASSWORD, | ||
236 | type: 'password', | ||
237 | }, | ||
217 | showDisabledServices: { | 238 | showDisabledServices: { |
218 | label: intl.formatMessage(messages.showDisabledServices), | 239 | label: intl.formatMessage(messages.showDisabledServices), |
219 | value: settings.all.app.showDisabledServices, | 240 | value: settings.all.app.showDisabledServices, |
@@ -290,6 +311,7 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
290 | updateStatusTypes, | 311 | updateStatusTypes, |
291 | isClearingAllCache, | 312 | isClearingAllCache, |
292 | server, | 313 | server, |
314 | lockingFeatureEnabled, | ||
293 | } = app; | 315 | } = app; |
294 | const { | 316 | const { |
295 | checkForUpdates, | 317 | checkForUpdates, |
@@ -316,6 +338,7 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
316 | isTodosEnabled={todos.isFeatureActive} | 338 | isTodosEnabled={todos.isFeatureActive} |
317 | isWorkspaceEnabled={workspaces.isFeatureActive} | 339 | isWorkspaceEnabled={workspaces.isFeatureActive} |
318 | server={server || 'https://api.franzinfra.com'} | 340 | server={server || 'https://api.franzinfra.com'} |
341 | lockingFeatureEnabled={lockingFeatureEnabled} | ||
319 | /> | 342 | /> |
320 | </ErrorBoundary> | 343 | </ErrorBoundary> |
321 | ); | 344 | ); |
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index da79ff5c9..febdd0d53 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json | |||
@@ -199,6 +199,76 @@ | |||
199 | { | 199 | { |
200 | "descriptors": [ | 200 | "descriptors": [ |
201 | { | 201 | { |
202 | "defaultMessage": "!!!Locked", | ||
203 | "end": { | ||
204 | "column": 3, | ||
205 | "line": 18 | ||
206 | }, | ||
207 | "file": "src/components/auth/Locked.js", | ||
208 | "id": "locked.headline", | ||
209 | "start": { | ||
210 | "column": 12, | ||
211 | "line": 15 | ||
212 | } | ||
213 | }, | ||
214 | { | ||
215 | "defaultMessage": "!!!Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.", | ||
216 | "end": { | ||
217 | "column": 3, | ||
218 | "line": 22 | ||
219 | }, | ||
220 | "file": "src/components/auth/Locked.js", | ||
221 | "id": "locked.info", | ||
222 | "start": { | ||
223 | "column": 8, | ||
224 | "line": 19 | ||
225 | } | ||
226 | }, | ||
227 | { | ||
228 | "defaultMessage": "!!!Password", | ||
229 | "end": { | ||
230 | "column": 3, | ||
231 | "line": 26 | ||
232 | }, | ||
233 | "file": "src/components/auth/Locked.js", | ||
234 | "id": "locked.password.label", | ||
235 | "start": { | ||
236 | "column": 17, | ||
237 | "line": 23 | ||
238 | } | ||
239 | }, | ||
240 | { | ||
241 | "defaultMessage": "!!!Unlock", | ||
242 | "end": { | ||
243 | "column": 3, | ||
244 | "line": 30 | ||
245 | }, | ||
246 | "file": "src/components/auth/Locked.js", | ||
247 | "id": "locked.submit.label", | ||
248 | "start": { | ||
249 | "column": 21, | ||
250 | "line": 27 | ||
251 | } | ||
252 | }, | ||
253 | { | ||
254 | "defaultMessage": "!!!Password invalid", | ||
255 | "end": { | ||
256 | "column": 3, | ||
257 | "line": 34 | ||
258 | }, | ||
259 | "file": "src/components/auth/Locked.js", | ||
260 | "id": "locked.invalidCredentials", | ||
261 | "start": { | ||
262 | "column": 22, | ||
263 | "line": 31 | ||
264 | } | ||
265 | } | ||
266 | ], | ||
267 | "path": "src/components/auth/Locked.json" | ||
268 | }, | ||
269 | { | ||
270 | "descriptors": [ | ||
271 | { | ||
202 | "defaultMessage": "!!!Sign in", | 272 | "defaultMessage": "!!!Sign in", |
203 | "end": { | 273 | "end": { |
204 | "column": 3, | 274 | "column": 3, |
@@ -903,6 +973,19 @@ | |||
903 | "column": 20, | 973 | "column": 20, |
904 | "line": 43 | 974 | "line": 43 |
905 | } | 975 | } |
976 | }, | ||
977 | { | ||
978 | "defaultMessage": "!!!Lock Ferdi", | ||
979 | "end": { | ||
980 | "column": 3, | ||
981 | "line": 50 | ||
982 | }, | ||
983 | "file": "src/components/layout/Sidebar.js", | ||
984 | "id": "sidebar.lockFerdi", | ||
985 | "start": { | ||
986 | "column": 13, | ||
987 | "line": 47 | ||
988 | } | ||
906 | } | 989 | } |
907 | ], | 990 | ], |
908 | "path": "src/components/layout/Sidebar.json" | 991 | "path": "src/components/layout/Sidebar.json" |
@@ -2431,211 +2514,237 @@ | |||
2431 | } | 2514 | } |
2432 | }, | 2515 | }, |
2433 | { | 2516 | { |
2434 | "defaultMessage": "!!!Language", | 2517 | "defaultMessage": "!!!Ferdi Lock Password", |
2435 | "end": { | 2518 | "end": { |
2436 | "column": 3, | 2519 | "column": 3, |
2437 | "line": 36 | 2520 | "line": 36 |
2438 | }, | 2521 | }, |
2439 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2522 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2523 | "id": "settings.app.lockedPassword", | ||
2524 | "start": { | ||
2525 | "column": 18, | ||
2526 | "line": 33 | ||
2527 | } | ||
2528 | }, | ||
2529 | { | ||
2530 | "defaultMessage": "!!!Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", | ||
2531 | "end": { | ||
2532 | "column": 3, | ||
2533 | "line": 40 | ||
2534 | }, | ||
2535 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
2536 | "id": "settings.app.lockedPasswordInfo", | ||
2537 | "start": { | ||
2538 | "column": 22, | ||
2539 | "line": 37 | ||
2540 | } | ||
2541 | }, | ||
2542 | { | ||
2543 | "defaultMessage": "!!!Language", | ||
2544 | "end": { | ||
2545 | "column": 3, | ||
2546 | "line": 44 | ||
2547 | }, | ||
2548 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
2440 | "id": "settings.app.headlineLanguage", | 2549 | "id": "settings.app.headlineLanguage", |
2441 | "start": { | 2550 | "start": { |
2442 | "column": 20, | 2551 | "column": 20, |
2443 | "line": 33 | 2552 | "line": 41 |
2444 | } | 2553 | } |
2445 | }, | 2554 | }, |
2446 | { | 2555 | { |
2447 | "defaultMessage": "!!!Updates", | 2556 | "defaultMessage": "!!!Updates", |
2448 | "end": { | 2557 | "end": { |
2449 | "column": 3, | 2558 | "column": 3, |
2450 | "line": 40 | 2559 | "line": 48 |
2451 | }, | 2560 | }, |
2452 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2561 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2453 | "id": "settings.app.headlineUpdates", | 2562 | "id": "settings.app.headlineUpdates", |
2454 | "start": { | 2563 | "start": { |
2455 | "column": 19, | 2564 | "column": 19, |
2456 | "line": 37 | 2565 | "line": 45 |
2457 | } | 2566 | } |
2458 | }, | 2567 | }, |
2459 | { | 2568 | { |
2460 | "defaultMessage": "!!!Appearance", | 2569 | "defaultMessage": "!!!Appearance", |
2461 | "end": { | 2570 | "end": { |
2462 | "column": 3, | 2571 | "column": 3, |
2463 | "line": 44 | 2572 | "line": 52 |
2464 | }, | 2573 | }, |
2465 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2574 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2466 | "id": "settings.app.headlineAppearance", | 2575 | "id": "settings.app.headlineAppearance", |
2467 | "start": { | 2576 | "start": { |
2468 | "column": 22, | 2577 | "column": 22, |
2469 | "line": 41 | 2578 | "line": 49 |
2470 | } | 2579 | } |
2471 | }, | 2580 | }, |
2472 | { | 2581 | { |
2473 | "defaultMessage": "!!!Advanced", | 2582 | "defaultMessage": "!!!Advanced", |
2474 | "end": { | 2583 | "end": { |
2475 | "column": 3, | 2584 | "column": 3, |
2476 | "line": 48 | 2585 | "line": 56 |
2477 | }, | 2586 | }, |
2478 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2587 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2479 | "id": "settings.app.headlineAdvanced", | 2588 | "id": "settings.app.headlineAdvanced", |
2480 | "start": { | 2589 | "start": { |
2481 | "column": 20, | 2590 | "column": 20, |
2482 | "line": 45 | 2591 | "line": 53 |
2483 | } | 2592 | } |
2484 | }, | 2593 | }, |
2485 | { | 2594 | { |
2486 | "defaultMessage": "!!!Help us to translate Ferdi into your language.", | 2595 | "defaultMessage": "!!!Help us to translate Ferdi into your language.", |
2487 | "end": { | 2596 | "end": { |
2488 | "column": 3, | 2597 | "column": 3, |
2489 | "line": 52 | 2598 | "line": 60 |
2490 | }, | 2599 | }, |
2491 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2600 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2492 | "id": "settings.app.translationHelp", | 2601 | "id": "settings.app.translationHelp", |
2493 | "start": { | 2602 | "start": { |
2494 | "column": 19, | 2603 | "column": 19, |
2495 | "line": 49 | 2604 | "line": 57 |
2496 | } | 2605 | } |
2497 | }, | 2606 | }, |
2498 | { | 2607 | { |
2499 | "defaultMessage": "!!!Cache", | 2608 | "defaultMessage": "!!!Cache", |
2500 | "end": { | 2609 | "end": { |
2501 | "column": 3, | 2610 | "column": 3, |
2502 | "line": 56 | 2611 | "line": 64 |
2503 | }, | 2612 | }, |
2504 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2613 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2505 | "id": "settings.app.subheadlineCache", | 2614 | "id": "settings.app.subheadlineCache", |
2506 | "start": { | 2615 | "start": { |
2507 | "column": 20, | 2616 | "column": 20, |
2508 | "line": 53 | 2617 | "line": 61 |
2509 | } | 2618 | } |
2510 | }, | 2619 | }, |
2511 | { | 2620 | { |
2512 | "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.", | 2621 | "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.", |
2513 | "end": { | 2622 | "end": { |
2514 | "column": 3, | 2623 | "column": 3, |
2515 | "line": 60 | 2624 | "line": 68 |
2516 | }, | 2625 | }, |
2517 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2626 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2518 | "id": "settings.app.cacheInfo", | 2627 | "id": "settings.app.cacheInfo", |
2519 | "start": { | 2628 | "start": { |
2520 | "column": 13, | 2629 | "column": 13, |
2521 | "line": 57 | 2630 | "line": 65 |
2522 | } | 2631 | } |
2523 | }, | 2632 | }, |
2524 | { | 2633 | { |
2525 | "defaultMessage": "!!!Clear cache", | 2634 | "defaultMessage": "!!!Clear cache", |
2526 | "end": { | 2635 | "end": { |
2527 | "column": 3, | 2636 | "column": 3, |
2528 | "line": 64 | 2637 | "line": 72 |
2529 | }, | 2638 | }, |
2530 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2639 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2531 | "id": "settings.app.buttonClearAllCache", | 2640 | "id": "settings.app.buttonClearAllCache", |
2532 | "start": { | 2641 | "start": { |
2533 | "column": 23, | 2642 | "column": 23, |
2534 | "line": 61 | 2643 | "line": 69 |
2535 | } | 2644 | } |
2536 | }, | 2645 | }, |
2537 | { | 2646 | { |
2538 | "defaultMessage": "!!!Check for updates", | 2647 | "defaultMessage": "!!!Check for updates", |
2539 | "end": { | 2648 | "end": { |
2540 | "column": 3, | 2649 | "column": 3, |
2541 | "line": 68 | 2650 | "line": 76 |
2542 | }, | 2651 | }, |
2543 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2652 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2544 | "id": "settings.app.buttonSearchForUpdate", | 2653 | "id": "settings.app.buttonSearchForUpdate", |
2545 | "start": { | 2654 | "start": { |
2546 | "column": 25, | 2655 | "column": 25, |
2547 | "line": 65 | 2656 | "line": 73 |
2548 | } | 2657 | } |
2549 | }, | 2658 | }, |
2550 | { | 2659 | { |
2551 | "defaultMessage": "!!!Restart & install update", | 2660 | "defaultMessage": "!!!Restart & install update", |
2552 | "end": { | 2661 | "end": { |
2553 | "column": 3, | 2662 | "column": 3, |
2554 | "line": 72 | 2663 | "line": 80 |
2555 | }, | 2664 | }, |
2556 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2665 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2557 | "id": "settings.app.buttonInstallUpdate", | 2666 | "id": "settings.app.buttonInstallUpdate", |
2558 | "start": { | 2667 | "start": { |
2559 | "column": 23, | 2668 | "column": 23, |
2560 | "line": 69 | 2669 | "line": 77 |
2561 | } | 2670 | } |
2562 | }, | 2671 | }, |
2563 | { | 2672 | { |
2564 | "defaultMessage": "!!!Is searching for update", | 2673 | "defaultMessage": "!!!Is searching for update", |
2565 | "end": { | 2674 | "end": { |
2566 | "column": 3, | 2675 | "column": 3, |
2567 | "line": 76 | 2676 | "line": 84 |
2568 | }, | 2677 | }, |
2569 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2678 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2570 | "id": "settings.app.updateStatusSearching", | 2679 | "id": "settings.app.updateStatusSearching", |
2571 | "start": { | 2680 | "start": { |
2572 | "column": 25, | 2681 | "column": 25, |
2573 | "line": 73 | 2682 | "line": 81 |
2574 | } | 2683 | } |
2575 | }, | 2684 | }, |
2576 | { | 2685 | { |
2577 | "defaultMessage": "!!!Update available, downloading...", | 2686 | "defaultMessage": "!!!Update available, downloading...", |
2578 | "end": { | 2687 | "end": { |
2579 | "column": 3, | 2688 | "column": 3, |
2580 | "line": 80 | 2689 | "line": 88 |
2581 | }, | 2690 | }, |
2582 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2691 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2583 | "id": "settings.app.updateStatusAvailable", | 2692 | "id": "settings.app.updateStatusAvailable", |
2584 | "start": { | 2693 | "start": { |
2585 | "column": 25, | 2694 | "column": 25, |
2586 | "line": 77 | 2695 | "line": 85 |
2587 | } | 2696 | } |
2588 | }, | 2697 | }, |
2589 | { | 2698 | { |
2590 | "defaultMessage": "!!!You are using the latest version of Ferdi", | 2699 | "defaultMessage": "!!!You are using the latest version of Ferdi", |
2591 | "end": { | 2700 | "end": { |
2592 | "column": 3, | 2701 | "column": 3, |
2593 | "line": 84 | 2702 | "line": 92 |
2594 | }, | 2703 | }, |
2595 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2704 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2596 | "id": "settings.app.updateStatusUpToDate", | 2705 | "id": "settings.app.updateStatusUpToDate", |
2597 | "start": { | 2706 | "start": { |
2598 | "column": 24, | 2707 | "column": 24, |
2599 | "line": 81 | 2708 | "line": 89 |
2600 | } | 2709 | } |
2601 | }, | 2710 | }, |
2602 | { | 2711 | { |
2603 | "defaultMessage": "!!!Current version:", | 2712 | "defaultMessage": "!!!Current version:", |
2604 | "end": { | 2713 | "end": { |
2605 | "column": 3, | 2714 | "column": 3, |
2606 | "line": 88 | 2715 | "line": 96 |
2607 | }, | 2716 | }, |
2608 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2717 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2609 | "id": "settings.app.currentVersion", | 2718 | "id": "settings.app.currentVersion", |
2610 | "start": { | 2719 | "start": { |
2611 | "column": 18, | 2720 | "column": 18, |
2612 | "line": 85 | 2721 | "line": 93 |
2613 | } | 2722 | } |
2614 | }, | 2723 | }, |
2615 | { | 2724 | { |
2616 | "defaultMessage": "!!!Changes require restart", | 2725 | "defaultMessage": "!!!Changes require restart", |
2617 | "end": { | 2726 | "end": { |
2618 | "column": 3, | 2727 | "column": 3, |
2619 | "line": 92 | 2728 | "line": 100 |
2620 | }, | 2729 | }, |
2621 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2730 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2622 | "id": "settings.app.restartRequired", | 2731 | "id": "settings.app.restartRequired", |
2623 | "start": { | 2732 | "start": { |
2624 | "column": 29, | 2733 | "column": 29, |
2625 | "line": 89 | 2734 | "line": 97 |
2626 | } | 2735 | } |
2627 | }, | 2736 | }, |
2628 | { | 2737 | { |
2629 | "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", | 2738 | "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", |
2630 | "end": { | 2739 | "end": { |
2631 | "column": 3, | 2740 | "column": 3, |
2632 | "line": 96 | 2741 | "line": 104 |
2633 | }, | 2742 | }, |
2634 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2743 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2635 | "id": "settings.app.languageDisclaimer", | 2744 | "id": "settings.app.languageDisclaimer", |
2636 | "start": { | 2745 | "start": { |
2637 | "column": 22, | 2746 | "column": 22, |
2638 | "line": 93 | 2747 | "line": 101 |
2639 | } | 2748 | } |
2640 | } | 2749 | } |
2641 | ], | 2750 | ], |
@@ -3632,120 +3741,146 @@ | |||
3632 | } | 3741 | } |
3633 | }, | 3742 | }, |
3634 | { | 3743 | { |
3635 | "defaultMessage": "!!!Language", | 3744 | "defaultMessage": "!!!Enable Ferdi password lock", |
3636 | "end": { | 3745 | "end": { |
3637 | "column": 3, | 3746 | "column": 3, |
3638 | "line": 63 | 3747 | "line": 63 |
3639 | }, | 3748 | }, |
3640 | "file": "src/containers/settings/EditSettingsScreen.js", | 3749 | "file": "src/containers/settings/EditSettingsScreen.js", |
3750 | "id": "settings.app.form.enableLock", | ||
3751 | "start": { | ||
3752 | "column": 14, | ||
3753 | "line": 60 | ||
3754 | } | ||
3755 | }, | ||
3756 | { | ||
3757 | "defaultMessage": "!!!Ferdi Lock password", | ||
3758 | "end": { | ||
3759 | "column": 3, | ||
3760 | "line": 67 | ||
3761 | }, | ||
3762 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
3763 | "id": "settings.app.form.lockPassword", | ||
3764 | "start": { | ||
3765 | "column": 16, | ||
3766 | "line": 64 | ||
3767 | } | ||
3768 | }, | ||
3769 | { | ||
3770 | "defaultMessage": "!!!Language", | ||
3771 | "end": { | ||
3772 | "column": 3, | ||
3773 | "line": 71 | ||
3774 | }, | ||
3775 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
3641 | "id": "settings.app.form.language", | 3776 | "id": "settings.app.form.language", |
3642 | "start": { | 3777 | "start": { |
3643 | "column": 12, | 3778 | "column": 12, |
3644 | "line": 60 | 3779 | "line": 68 |
3645 | } | 3780 | } |
3646 | }, | 3781 | }, |
3647 | { | 3782 | { |
3648 | "defaultMessage": "!!!Dark Mode", | 3783 | "defaultMessage": "!!!Dark Mode", |
3649 | "end": { | 3784 | "end": { |
3650 | "column": 3, | 3785 | "column": 3, |
3651 | "line": 67 | 3786 | "line": 75 |
3652 | }, | 3787 | }, |
3653 | "file": "src/containers/settings/EditSettingsScreen.js", | 3788 | "file": "src/containers/settings/EditSettingsScreen.js", |
3654 | "id": "settings.app.form.darkMode", | 3789 | "id": "settings.app.form.darkMode", |
3655 | "start": { | 3790 | "start": { |
3656 | "column": 12, | 3791 | "column": 12, |
3657 | "line": 64 | 3792 | "line": 72 |
3658 | } | 3793 | } |
3659 | }, | 3794 | }, |
3660 | { | 3795 | { |
3661 | "defaultMessage": "!!!Display disabled services tabs", | 3796 | "defaultMessage": "!!!Display disabled services tabs", |
3662 | "end": { | 3797 | "end": { |
3663 | "column": 3, | 3798 | "column": 3, |
3664 | "line": 71 | 3799 | "line": 79 |
3665 | }, | 3800 | }, |
3666 | "file": "src/containers/settings/EditSettingsScreen.js", | 3801 | "file": "src/containers/settings/EditSettingsScreen.js", |
3667 | "id": "settings.app.form.showDisabledServices", | 3802 | "id": "settings.app.form.showDisabledServices", |
3668 | "start": { | 3803 | "start": { |
3669 | "column": 24, | 3804 | "column": 24, |
3670 | "line": 68 | 3805 | "line": 76 |
3671 | } | 3806 | } |
3672 | }, | 3807 | }, |
3673 | { | 3808 | { |
3674 | "defaultMessage": "!!!Show unread message badge when notifications are disabled", | 3809 | "defaultMessage": "!!!Show unread message badge when notifications are disabled", |
3675 | "end": { | 3810 | "end": { |
3676 | "column": 3, | 3811 | "column": 3, |
3677 | "line": 75 | 3812 | "line": 83 |
3678 | }, | 3813 | }, |
3679 | "file": "src/containers/settings/EditSettingsScreen.js", | 3814 | "file": "src/containers/settings/EditSettingsScreen.js", |
3680 | "id": "settings.app.form.showMessagesBadgesWhenMuted", | 3815 | "id": "settings.app.form.showMessagesBadgesWhenMuted", |
3681 | "start": { | 3816 | "start": { |
3682 | "column": 29, | 3817 | "column": 29, |
3683 | "line": 72 | 3818 | "line": 80 |
3684 | } | 3819 | } |
3685 | }, | 3820 | }, |
3686 | { | 3821 | { |
3687 | "defaultMessage": "!!!Enable spell checking", | 3822 | "defaultMessage": "!!!Enable spell checking", |
3688 | "end": { | 3823 | "end": { |
3689 | "column": 3, | 3824 | "column": 3, |
3690 | "line": 79 | 3825 | "line": 87 |
3691 | }, | 3826 | }, |
3692 | "file": "src/containers/settings/EditSettingsScreen.js", | 3827 | "file": "src/containers/settings/EditSettingsScreen.js", |
3693 | "id": "settings.app.form.enableSpellchecking", | 3828 | "id": "settings.app.form.enableSpellchecking", |
3694 | "start": { | 3829 | "start": { |
3695 | "column": 23, | 3830 | "column": 23, |
3696 | "line": 76 | 3831 | "line": 84 |
3697 | } | 3832 | } |
3698 | }, | 3833 | }, |
3699 | { | 3834 | { |
3700 | "defaultMessage": "!!!Enable GPU Acceleration", | 3835 | "defaultMessage": "!!!Enable GPU Acceleration", |
3701 | "end": { | 3836 | "end": { |
3702 | "column": 3, | 3837 | "column": 3, |
3703 | "line": 83 | 3838 | "line": 91 |
3704 | }, | 3839 | }, |
3705 | "file": "src/containers/settings/EditSettingsScreen.js", | 3840 | "file": "src/containers/settings/EditSettingsScreen.js", |
3706 | "id": "settings.app.form.enableGPUAcceleration", | 3841 | "id": "settings.app.form.enableGPUAcceleration", |
3707 | "start": { | 3842 | "start": { |
3708 | "column": 25, | 3843 | "column": 25, |
3709 | "line": 80 | 3844 | "line": 88 |
3710 | } | 3845 | } |
3711 | }, | 3846 | }, |
3712 | { | 3847 | { |
3713 | "defaultMessage": "!!!Include beta versions", | 3848 | "defaultMessage": "!!!Include beta versions", |
3714 | "end": { | 3849 | "end": { |
3715 | "column": 3, | 3850 | "column": 3, |
3716 | "line": 87 | 3851 | "line": 95 |
3717 | }, | 3852 | }, |
3718 | "file": "src/containers/settings/EditSettingsScreen.js", | 3853 | "file": "src/containers/settings/EditSettingsScreen.js", |
3719 | "id": "settings.app.form.beta", | 3854 | "id": "settings.app.form.beta", |
3720 | "start": { | 3855 | "start": { |
3721 | "column": 8, | 3856 | "column": 8, |
3722 | "line": 84 | 3857 | "line": 92 |
3723 | } | 3858 | } |
3724 | }, | 3859 | }, |
3725 | { | 3860 | { |
3726 | "defaultMessage": "!!!Enable Franz Todos", | 3861 | "defaultMessage": "!!!Enable Franz Todos", |
3727 | "end": { | 3862 | "end": { |
3728 | "column": 3, | 3863 | "column": 3, |
3729 | "line": 91 | 3864 | "line": 99 |
3730 | }, | 3865 | }, |
3731 | "file": "src/containers/settings/EditSettingsScreen.js", | 3866 | "file": "src/containers/settings/EditSettingsScreen.js", |
3732 | "id": "settings.app.form.enableTodos", | 3867 | "id": "settings.app.form.enableTodos", |
3733 | "start": { | 3868 | "start": { |
3734 | "column": 15, | 3869 | "column": 15, |
3735 | "line": 88 | 3870 | "line": 96 |
3736 | } | 3871 | } |
3737 | }, | 3872 | }, |
3738 | { | 3873 | { |
3739 | "defaultMessage": "!!!Keep all workspaces loaded", | 3874 | "defaultMessage": "!!!Keep all workspaces loaded", |
3740 | "end": { | 3875 | "end": { |
3741 | "column": 3, | 3876 | "column": 3, |
3742 | "line": 95 | 3877 | "line": 103 |
3743 | }, | 3878 | }, |
3744 | "file": "src/containers/settings/EditSettingsScreen.js", | 3879 | "file": "src/containers/settings/EditSettingsScreen.js", |
3745 | "id": "settings.app.form.keepAllWorkspacesLoaded", | 3880 | "id": "settings.app.form.keepAllWorkspacesLoaded", |
3746 | "start": { | 3881 | "start": { |
3747 | "column": 27, | 3882 | "column": 27, |
3748 | "line": 92 | 3883 | "line": 100 |
3749 | } | 3884 | } |
3750 | } | 3885 | } |
3751 | ], | 3886 | ], |
@@ -5204,497 +5339,510 @@ | |||
5204 | } | 5339 | } |
5205 | }, | 5340 | }, |
5206 | { | 5341 | { |
5207 | "defaultMessage": "!!!Minimize", | 5342 | "defaultMessage": "!!!Lock Ferdi", |
5208 | "end": { | 5343 | "end": { |
5209 | "column": 3, | 5344 | "column": 3, |
5210 | "line": 127 | 5345 | "line": 127 |
5211 | }, | 5346 | }, |
5212 | "file": "src/lib/Menu.js", | 5347 | "file": "src/lib/Menu.js", |
5348 | "id": "menu.view.lockFerdi", | ||
5349 | "start": { | ||
5350 | "column": 13, | ||
5351 | "line": 124 | ||
5352 | } | ||
5353 | }, | ||
5354 | { | ||
5355 | "defaultMessage": "!!!Minimize", | ||
5356 | "end": { | ||
5357 | "column": 3, | ||
5358 | "line": 131 | ||
5359 | }, | ||
5360 | "file": "src/lib/Menu.js", | ||
5213 | "id": "menu.window.minimize", | 5361 | "id": "menu.window.minimize", |
5214 | "start": { | 5362 | "start": { |
5215 | "column": 12, | 5363 | "column": 12, |
5216 | "line": 124 | 5364 | "line": 128 |
5217 | } | 5365 | } |
5218 | }, | 5366 | }, |
5219 | { | 5367 | { |
5220 | "defaultMessage": "!!!Close", | 5368 | "defaultMessage": "!!!Close", |
5221 | "end": { | 5369 | "end": { |
5222 | "column": 3, | 5370 | "column": 3, |
5223 | "line": 131 | 5371 | "line": 135 |
5224 | }, | 5372 | }, |
5225 | "file": "src/lib/Menu.js", | 5373 | "file": "src/lib/Menu.js", |
5226 | "id": "menu.window.close", | 5374 | "id": "menu.window.close", |
5227 | "start": { | 5375 | "start": { |
5228 | "column": 9, | 5376 | "column": 9, |
5229 | "line": 128 | 5377 | "line": 132 |
5230 | } | 5378 | } |
5231 | }, | 5379 | }, |
5232 | { | 5380 | { |
5233 | "defaultMessage": "!!!Learn More", | 5381 | "defaultMessage": "!!!Learn More", |
5234 | "end": { | 5382 | "end": { |
5235 | "column": 3, | 5383 | "column": 3, |
5236 | "line": 135 | 5384 | "line": 139 |
5237 | }, | 5385 | }, |
5238 | "file": "src/lib/Menu.js", | 5386 | "file": "src/lib/Menu.js", |
5239 | "id": "menu.help.learnMore", | 5387 | "id": "menu.help.learnMore", |
5240 | "start": { | 5388 | "start": { |
5241 | "column": 13, | 5389 | "column": 13, |
5242 | "line": 132 | 5390 | "line": 136 |
5243 | } | 5391 | } |
5244 | }, | 5392 | }, |
5245 | { | 5393 | { |
5246 | "defaultMessage": "!!!Changelog", | 5394 | "defaultMessage": "!!!Changelog", |
5247 | "end": { | 5395 | "end": { |
5248 | "column": 3, | 5396 | "column": 3, |
5249 | "line": 139 | 5397 | "line": 143 |
5250 | }, | 5398 | }, |
5251 | "file": "src/lib/Menu.js", | 5399 | "file": "src/lib/Menu.js", |
5252 | "id": "menu.help.changelog", | 5400 | "id": "menu.help.changelog", |
5253 | "start": { | 5401 | "start": { |
5254 | "column": 13, | 5402 | "column": 13, |
5255 | "line": 136 | 5403 | "line": 140 |
5256 | } | 5404 | } |
5257 | }, | 5405 | }, |
5258 | { | 5406 | { |
5259 | "defaultMessage": "!!!Support", | 5407 | "defaultMessage": "!!!Support", |
5260 | "end": { | 5408 | "end": { |
5261 | "column": 3, | 5409 | "column": 3, |
5262 | "line": 143 | 5410 | "line": 147 |
5263 | }, | 5411 | }, |
5264 | "file": "src/lib/Menu.js", | 5412 | "file": "src/lib/Menu.js", |
5265 | "id": "menu.help.support", | 5413 | "id": "menu.help.support", |
5266 | "start": { | 5414 | "start": { |
5267 | "column": 11, | 5415 | "column": 11, |
5268 | "line": 140 | 5416 | "line": 144 |
5269 | } | 5417 | } |
5270 | }, | 5418 | }, |
5271 | { | 5419 | { |
5272 | "defaultMessage": "!!!Copy Debug Information", | 5420 | "defaultMessage": "!!!Copy Debug Information", |
5273 | "end": { | 5421 | "end": { |
5274 | "column": 3, | 5422 | "column": 3, |
5275 | "line": 147 | 5423 | "line": 151 |
5276 | }, | 5424 | }, |
5277 | "file": "src/lib/Menu.js", | 5425 | "file": "src/lib/Menu.js", |
5278 | "id": "menu.help.debugInfo", | 5426 | "id": "menu.help.debugInfo", |
5279 | "start": { | 5427 | "start": { |
5280 | "column": 13, | 5428 | "column": 13, |
5281 | "line": 144 | 5429 | "line": 148 |
5282 | } | 5430 | } |
5283 | }, | 5431 | }, |
5284 | { | 5432 | { |
5285 | "defaultMessage": "!!!Ferdi Debug Information", | 5433 | "defaultMessage": "!!!Ferdi Debug Information", |
5286 | "end": { | 5434 | "end": { |
5287 | "column": 3, | 5435 | "column": 3, |
5288 | "line": 151 | 5436 | "line": 155 |
5289 | }, | 5437 | }, |
5290 | "file": "src/lib/Menu.js", | 5438 | "file": "src/lib/Menu.js", |
5291 | "id": "menu.help.debugInfoCopiedHeadline", | 5439 | "id": "menu.help.debugInfoCopiedHeadline", |
5292 | "start": { | 5440 | "start": { |
5293 | "column": 27, | 5441 | "column": 27, |
5294 | "line": 148 | 5442 | "line": 152 |
5295 | } | 5443 | } |
5296 | }, | 5444 | }, |
5297 | { | 5445 | { |
5298 | "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", | 5446 | "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", |
5299 | "end": { | 5447 | "end": { |
5300 | "column": 3, | 5448 | "column": 3, |
5301 | "line": 155 | 5449 | "line": 159 |
5302 | }, | 5450 | }, |
5303 | "file": "src/lib/Menu.js", | 5451 | "file": "src/lib/Menu.js", |
5304 | "id": "menu.help.debugInfoCopiedBody", | 5452 | "id": "menu.help.debugInfoCopiedBody", |
5305 | "start": { | 5453 | "start": { |
5306 | "column": 23, | 5454 | "column": 23, |
5307 | "line": 152 | 5455 | "line": 156 |
5308 | } | 5456 | } |
5309 | }, | 5457 | }, |
5310 | { | 5458 | { |
5311 | "defaultMessage": "!!!Terms of Service", | 5459 | "defaultMessage": "!!!Terms of Service", |
5312 | "end": { | 5460 | "end": { |
5313 | "column": 3, | 5461 | "column": 3, |
5314 | "line": 159 | 5462 | "line": 163 |
5315 | }, | 5463 | }, |
5316 | "file": "src/lib/Menu.js", | 5464 | "file": "src/lib/Menu.js", |
5317 | "id": "menu.help.tos", | 5465 | "id": "menu.help.tos", |
5318 | "start": { | 5466 | "start": { |
5319 | "column": 7, | 5467 | "column": 7, |
5320 | "line": 156 | 5468 | "line": 160 |
5321 | } | 5469 | } |
5322 | }, | 5470 | }, |
5323 | { | 5471 | { |
5324 | "defaultMessage": "!!!Privacy Statement", | 5472 | "defaultMessage": "!!!Privacy Statement", |
5325 | "end": { | 5473 | "end": { |
5326 | "column": 3, | 5474 | "column": 3, |
5327 | "line": 163 | 5475 | "line": 167 |
5328 | }, | 5476 | }, |
5329 | "file": "src/lib/Menu.js", | 5477 | "file": "src/lib/Menu.js", |
5330 | "id": "menu.help.privacy", | 5478 | "id": "menu.help.privacy", |
5331 | "start": { | 5479 | "start": { |
5332 | "column": 11, | 5480 | "column": 11, |
5333 | "line": 160 | 5481 | "line": 164 |
5334 | } | 5482 | } |
5335 | }, | 5483 | }, |
5336 | { | 5484 | { |
5337 | "defaultMessage": "!!!File", | 5485 | "defaultMessage": "!!!File", |
5338 | "end": { | 5486 | "end": { |
5339 | "column": 3, | 5487 | "column": 3, |
5340 | "line": 167 | 5488 | "line": 171 |
5341 | }, | 5489 | }, |
5342 | "file": "src/lib/Menu.js", | 5490 | "file": "src/lib/Menu.js", |
5343 | "id": "menu.file", | 5491 | "id": "menu.file", |
5344 | "start": { | 5492 | "start": { |
5345 | "column": 8, | 5493 | "column": 8, |
5346 | "line": 164 | 5494 | "line": 168 |
5347 | } | 5495 | } |
5348 | }, | 5496 | }, |
5349 | { | 5497 | { |
5350 | "defaultMessage": "!!!View", | 5498 | "defaultMessage": "!!!View", |
5351 | "end": { | 5499 | "end": { |
5352 | "column": 3, | 5500 | "column": 3, |
5353 | "line": 171 | 5501 | "line": 175 |
5354 | }, | 5502 | }, |
5355 | "file": "src/lib/Menu.js", | 5503 | "file": "src/lib/Menu.js", |
5356 | "id": "menu.view", | 5504 | "id": "menu.view", |
5357 | "start": { | 5505 | "start": { |
5358 | "column": 8, | 5506 | "column": 8, |
5359 | "line": 168 | 5507 | "line": 172 |
5360 | } | 5508 | } |
5361 | }, | 5509 | }, |
5362 | { | 5510 | { |
5363 | "defaultMessage": "!!!Services", | 5511 | "defaultMessage": "!!!Services", |
5364 | "end": { | 5512 | "end": { |
5365 | "column": 3, | 5513 | "column": 3, |
5366 | "line": 175 | 5514 | "line": 179 |
5367 | }, | 5515 | }, |
5368 | "file": "src/lib/Menu.js", | 5516 | "file": "src/lib/Menu.js", |
5369 | "id": "menu.services", | 5517 | "id": "menu.services", |
5370 | "start": { | 5518 | "start": { |
5371 | "column": 12, | 5519 | "column": 12, |
5372 | "line": 172 | 5520 | "line": 176 |
5373 | } | 5521 | } |
5374 | }, | 5522 | }, |
5375 | { | 5523 | { |
5376 | "defaultMessage": "!!!Window", | 5524 | "defaultMessage": "!!!Window", |
5377 | "end": { | 5525 | "end": { |
5378 | "column": 3, | 5526 | "column": 3, |
5379 | "line": 179 | 5527 | "line": 183 |
5380 | }, | 5528 | }, |
5381 | "file": "src/lib/Menu.js", | 5529 | "file": "src/lib/Menu.js", |
5382 | "id": "menu.window", | 5530 | "id": "menu.window", |
5383 | "start": { | 5531 | "start": { |
5384 | "column": 10, | 5532 | "column": 10, |
5385 | "line": 176 | 5533 | "line": 180 |
5386 | } | 5534 | } |
5387 | }, | 5535 | }, |
5388 | { | 5536 | { |
5389 | "defaultMessage": "!!!Help", | 5537 | "defaultMessage": "!!!Help", |
5390 | "end": { | 5538 | "end": { |
5391 | "column": 3, | 5539 | "column": 3, |
5392 | "line": 183 | 5540 | "line": 187 |
5393 | }, | 5541 | }, |
5394 | "file": "src/lib/Menu.js", | 5542 | "file": "src/lib/Menu.js", |
5395 | "id": "menu.help", | 5543 | "id": "menu.help", |
5396 | "start": { | 5544 | "start": { |
5397 | "column": 8, | 5545 | "column": 8, |
5398 | "line": 180 | 5546 | "line": 184 |
5399 | } | 5547 | } |
5400 | }, | 5548 | }, |
5401 | { | 5549 | { |
5402 | "defaultMessage": "!!!About Ferdi", | 5550 | "defaultMessage": "!!!About Ferdi", |
5403 | "end": { | 5551 | "end": { |
5404 | "column": 3, | 5552 | "column": 3, |
5405 | "line": 187 | 5553 | "line": 191 |
5406 | }, | 5554 | }, |
5407 | "file": "src/lib/Menu.js", | 5555 | "file": "src/lib/Menu.js", |
5408 | "id": "menu.app.about", | 5556 | "id": "menu.app.about", |
5409 | "start": { | 5557 | "start": { |
5410 | "column": 9, | 5558 | "column": 9, |
5411 | "line": 184 | 5559 | "line": 188 |
5412 | } | 5560 | } |
5413 | }, | 5561 | }, |
5414 | { | 5562 | { |
5415 | "defaultMessage": "!!!What's new?", | 5563 | "defaultMessage": "!!!What's new?", |
5416 | "end": { | 5564 | "end": { |
5417 | "column": 3, | 5565 | "column": 3, |
5418 | "line": 191 | 5566 | "line": 195 |
5419 | }, | 5567 | }, |
5420 | "file": "src/lib/Menu.js", | 5568 | "file": "src/lib/Menu.js", |
5421 | "id": "menu.app.announcement", | 5569 | "id": "menu.app.announcement", |
5422 | "start": { | 5570 | "start": { |
5423 | "column": 16, | 5571 | "column": 16, |
5424 | "line": 188 | 5572 | "line": 192 |
5425 | } | 5573 | } |
5426 | }, | 5574 | }, |
5427 | { | 5575 | { |
5428 | "defaultMessage": "!!!Settings", | 5576 | "defaultMessage": "!!!Settings", |
5429 | "end": { | 5577 | "end": { |
5430 | "column": 3, | 5578 | "column": 3, |
5431 | "line": 195 | 5579 | "line": 199 |
5432 | }, | 5580 | }, |
5433 | "file": "src/lib/Menu.js", | 5581 | "file": "src/lib/Menu.js", |
5434 | "id": "menu.app.settings", | 5582 | "id": "menu.app.settings", |
5435 | "start": { | 5583 | "start": { |
5436 | "column": 12, | 5584 | "column": 12, |
5437 | "line": 192 | 5585 | "line": 196 |
5438 | } | 5586 | } |
5439 | }, | 5587 | }, |
5440 | { | 5588 | { |
5441 | "defaultMessage": "!!!Check for updates", | 5589 | "defaultMessage": "!!!Check for updates", |
5442 | "end": { | 5590 | "end": { |
5443 | "column": 3, | 5591 | "column": 3, |
5444 | "line": 199 | 5592 | "line": 203 |
5445 | }, | 5593 | }, |
5446 | "file": "src/lib/Menu.js", | 5594 | "file": "src/lib/Menu.js", |
5447 | "id": "menu.app.checkForUpdates", | 5595 | "id": "menu.app.checkForUpdates", |
5448 | "start": { | 5596 | "start": { |
5449 | "column": 19, | 5597 | "column": 19, |
5450 | "line": 196 | 5598 | "line": 200 |
5451 | } | 5599 | } |
5452 | }, | 5600 | }, |
5453 | { | 5601 | { |
5454 | "defaultMessage": "!!!Hide", | 5602 | "defaultMessage": "!!!Hide", |
5455 | "end": { | 5603 | "end": { |
5456 | "column": 3, | 5604 | "column": 3, |
5457 | "line": 203 | 5605 | "line": 207 |
5458 | }, | 5606 | }, |
5459 | "file": "src/lib/Menu.js", | 5607 | "file": "src/lib/Menu.js", |
5460 | "id": "menu.app.hide", | 5608 | "id": "menu.app.hide", |
5461 | "start": { | 5609 | "start": { |
5462 | "column": 8, | 5610 | "column": 8, |
5463 | "line": 200 | 5611 | "line": 204 |
5464 | } | 5612 | } |
5465 | }, | 5613 | }, |
5466 | { | 5614 | { |
5467 | "defaultMessage": "!!!Hide Others", | 5615 | "defaultMessage": "!!!Hide Others", |
5468 | "end": { | 5616 | "end": { |
5469 | "column": 3, | 5617 | "column": 3, |
5470 | "line": 207 | 5618 | "line": 211 |
5471 | }, | 5619 | }, |
5472 | "file": "src/lib/Menu.js", | 5620 | "file": "src/lib/Menu.js", |
5473 | "id": "menu.app.hideOthers", | 5621 | "id": "menu.app.hideOthers", |
5474 | "start": { | 5622 | "start": { |
5475 | "column": 14, | 5623 | "column": 14, |
5476 | "line": 204 | 5624 | "line": 208 |
5477 | } | 5625 | } |
5478 | }, | 5626 | }, |
5479 | { | 5627 | { |
5480 | "defaultMessage": "!!!Unhide", | 5628 | "defaultMessage": "!!!Unhide", |
5481 | "end": { | 5629 | "end": { |
5482 | "column": 3, | 5630 | "column": 3, |
5483 | "line": 211 | 5631 | "line": 215 |
5484 | }, | 5632 | }, |
5485 | "file": "src/lib/Menu.js", | 5633 | "file": "src/lib/Menu.js", |
5486 | "id": "menu.app.unhide", | 5634 | "id": "menu.app.unhide", |
5487 | "start": { | 5635 | "start": { |
5488 | "column": 10, | 5636 | "column": 10, |
5489 | "line": 208 | 5637 | "line": 212 |
5490 | } | 5638 | } |
5491 | }, | 5639 | }, |
5492 | { | 5640 | { |
5493 | "defaultMessage": "!!!Auto-hide menu bar", | 5641 | "defaultMessage": "!!!Auto-hide menu bar", |
5494 | "end": { | 5642 | "end": { |
5495 | "column": 3, | 5643 | "column": 3, |
5496 | "line": 215 | 5644 | "line": 219 |
5497 | }, | 5645 | }, |
5498 | "file": "src/lib/Menu.js", | 5646 | "file": "src/lib/Menu.js", |
5499 | "id": "menu.app.autohideMenuBar", | 5647 | "id": "menu.app.autohideMenuBar", |
5500 | "start": { | 5648 | "start": { |
5501 | "column": 19, | 5649 | "column": 19, |
5502 | "line": 212 | 5650 | "line": 216 |
5503 | } | 5651 | } |
5504 | }, | 5652 | }, |
5505 | { | 5653 | { |
5506 | "defaultMessage": "!!!Quit", | 5654 | "defaultMessage": "!!!Quit", |
5507 | "end": { | 5655 | "end": { |
5508 | "column": 3, | 5656 | "column": 3, |
5509 | "line": 219 | 5657 | "line": 223 |
5510 | }, | 5658 | }, |
5511 | "file": "src/lib/Menu.js", | 5659 | "file": "src/lib/Menu.js", |
5512 | "id": "menu.app.quit", | 5660 | "id": "menu.app.quit", |
5513 | "start": { | 5661 | "start": { |
5514 | "column": 8, | 5662 | "column": 8, |
5515 | "line": 216 | 5663 | "line": 220 |
5516 | } | 5664 | } |
5517 | }, | 5665 | }, |
5518 | { | 5666 | { |
5519 | "defaultMessage": "!!!Add New Service...", | 5667 | "defaultMessage": "!!!Add New Service...", |
5520 | "end": { | 5668 | "end": { |
5521 | "column": 3, | 5669 | "column": 3, |
5522 | "line": 223 | 5670 | "line": 227 |
5523 | }, | 5671 | }, |
5524 | "file": "src/lib/Menu.js", | 5672 | "file": "src/lib/Menu.js", |
5525 | "id": "menu.services.addNewService", | 5673 | "id": "menu.services.addNewService", |
5526 | "start": { | 5674 | "start": { |
5527 | "column": 17, | 5675 | "column": 17, |
5528 | "line": 220 | 5676 | "line": 224 |
5529 | } | 5677 | } |
5530 | }, | 5678 | }, |
5531 | { | 5679 | { |
5532 | "defaultMessage": "!!!Add New Workspace...", | 5680 | "defaultMessage": "!!!Add New Workspace...", |
5533 | "end": { | 5681 | "end": { |
5534 | "column": 3, | 5682 | "column": 3, |
5535 | "line": 227 | 5683 | "line": 231 |
5536 | }, | 5684 | }, |
5537 | "file": "src/lib/Menu.js", | 5685 | "file": "src/lib/Menu.js", |
5538 | "id": "menu.workspaces.addNewWorkspace", | 5686 | "id": "menu.workspaces.addNewWorkspace", |
5539 | "start": { | 5687 | "start": { |
5540 | "column": 19, | 5688 | "column": 19, |
5541 | "line": 224 | 5689 | "line": 228 |
5542 | } | 5690 | } |
5543 | }, | 5691 | }, |
5544 | { | 5692 | { |
5545 | "defaultMessage": "!!!Open workspace drawer", | 5693 | "defaultMessage": "!!!Open workspace drawer", |
5546 | "end": { | 5694 | "end": { |
5547 | "column": 3, | 5695 | "column": 3, |
5548 | "line": 231 | 5696 | "line": 235 |
5549 | }, | 5697 | }, |
5550 | "file": "src/lib/Menu.js", | 5698 | "file": "src/lib/Menu.js", |
5551 | "id": "menu.workspaces.openWorkspaceDrawer", | 5699 | "id": "menu.workspaces.openWorkspaceDrawer", |
5552 | "start": { | 5700 | "start": { |
5553 | "column": 23, | 5701 | "column": 23, |
5554 | "line": 228 | 5702 | "line": 232 |
5555 | } | 5703 | } |
5556 | }, | 5704 | }, |
5557 | { | 5705 | { |
5558 | "defaultMessage": "!!!Close workspace drawer", | 5706 | "defaultMessage": "!!!Close workspace drawer", |
5559 | "end": { | 5707 | "end": { |
5560 | "column": 3, | 5708 | "column": 3, |
5561 | "line": 235 | 5709 | "line": 239 |
5562 | }, | 5710 | }, |
5563 | "file": "src/lib/Menu.js", | 5711 | "file": "src/lib/Menu.js", |
5564 | "id": "menu.workspaces.closeWorkspaceDrawer", | 5712 | "id": "menu.workspaces.closeWorkspaceDrawer", |
5565 | "start": { | 5713 | "start": { |
5566 | "column": 24, | 5714 | "column": 24, |
5567 | "line": 232 | 5715 | "line": 236 |
5568 | } | 5716 | } |
5569 | }, | 5717 | }, |
5570 | { | 5718 | { |
5571 | "defaultMessage": "!!!Activate next service...", | 5719 | "defaultMessage": "!!!Activate next service...", |
5572 | "end": { | 5720 | "end": { |
5573 | "column": 3, | 5721 | "column": 3, |
5574 | "line": 239 | 5722 | "line": 243 |
5575 | }, | 5723 | }, |
5576 | "file": "src/lib/Menu.js", | 5724 | "file": "src/lib/Menu.js", |
5577 | "id": "menu.services.setNextServiceActive", | 5725 | "id": "menu.services.setNextServiceActive", |
5578 | "start": { | 5726 | "start": { |
5579 | "column": 23, | 5727 | "column": 23, |
5580 | "line": 236 | 5728 | "line": 240 |
5581 | } | 5729 | } |
5582 | }, | 5730 | }, |
5583 | { | 5731 | { |
5584 | "defaultMessage": "!!!Activate previous service...", | 5732 | "defaultMessage": "!!!Activate previous service...", |
5585 | "end": { | 5733 | "end": { |
5586 | "column": 3, | 5734 | "column": 3, |
5587 | "line": 243 | 5735 | "line": 247 |
5588 | }, | 5736 | }, |
5589 | "file": "src/lib/Menu.js", | 5737 | "file": "src/lib/Menu.js", |
5590 | "id": "menu.services.activatePreviousService", | 5738 | "id": "menu.services.activatePreviousService", |
5591 | "start": { | 5739 | "start": { |
5592 | "column": 27, | 5740 | "column": 27, |
5593 | "line": 240 | 5741 | "line": 244 |
5594 | } | 5742 | } |
5595 | }, | 5743 | }, |
5596 | { | 5744 | { |
5597 | "defaultMessage": "!!!Disable notifications & audio", | 5745 | "defaultMessage": "!!!Disable notifications & audio", |
5598 | "end": { | 5746 | "end": { |
5599 | "column": 3, | 5747 | "column": 3, |
5600 | "line": 247 | 5748 | "line": 251 |
5601 | }, | 5749 | }, |
5602 | "file": "src/lib/Menu.js", | 5750 | "file": "src/lib/Menu.js", |
5603 | "id": "sidebar.muteApp", | 5751 | "id": "sidebar.muteApp", |
5604 | "start": { | 5752 | "start": { |
5605 | "column": 11, | 5753 | "column": 11, |
5606 | "line": 244 | 5754 | "line": 248 |
5607 | } | 5755 | } |
5608 | }, | 5756 | }, |
5609 | { | 5757 | { |
5610 | "defaultMessage": "!!!Enable notifications & audio", | 5758 | "defaultMessage": "!!!Enable notifications & audio", |
5611 | "end": { | 5759 | "end": { |
5612 | "column": 3, | 5760 | "column": 3, |
5613 | "line": 251 | 5761 | "line": 255 |
5614 | }, | 5762 | }, |
5615 | "file": "src/lib/Menu.js", | 5763 | "file": "src/lib/Menu.js", |
5616 | "id": "sidebar.unmuteApp", | 5764 | "id": "sidebar.unmuteApp", |
5617 | "start": { | 5765 | "start": { |
5618 | "column": 13, | 5766 | "column": 13, |
5619 | "line": 248 | 5767 | "line": 252 |
5620 | } | 5768 | } |
5621 | }, | 5769 | }, |
5622 | { | 5770 | { |
5623 | "defaultMessage": "!!!Workspaces", | 5771 | "defaultMessage": "!!!Workspaces", |
5624 | "end": { | 5772 | "end": { |
5625 | "column": 3, | 5773 | "column": 3, |
5626 | "line": 255 | 5774 | "line": 259 |
5627 | }, | 5775 | }, |
5628 | "file": "src/lib/Menu.js", | 5776 | "file": "src/lib/Menu.js", |
5629 | "id": "menu.workspaces", | 5777 | "id": "menu.workspaces", |
5630 | "start": { | 5778 | "start": { |
5631 | "column": 14, | 5779 | "column": 14, |
5632 | "line": 252 | 5780 | "line": 256 |
5633 | } | 5781 | } |
5634 | }, | 5782 | }, |
5635 | { | 5783 | { |
5636 | "defaultMessage": "!!!Default", | 5784 | "defaultMessage": "!!!Default", |
5637 | "end": { | 5785 | "end": { |
5638 | "column": 3, | 5786 | "column": 3, |
5639 | "line": 259 | 5787 | "line": 263 |
5640 | }, | 5788 | }, |
5641 | "file": "src/lib/Menu.js", | 5789 | "file": "src/lib/Menu.js", |
5642 | "id": "menu.workspaces.defaultWorkspace", | 5790 | "id": "menu.workspaces.defaultWorkspace", |
5643 | "start": { | 5791 | "start": { |
5644 | "column": 20, | 5792 | "column": 20, |
5645 | "line": 256 | 5793 | "line": 260 |
5646 | } | 5794 | } |
5647 | }, | 5795 | }, |
5648 | { | 5796 | { |
5649 | "defaultMessage": "!!!Todos", | 5797 | "defaultMessage": "!!!Todos", |
5650 | "end": { | 5798 | "end": { |
5651 | "column": 3, | 5799 | "column": 3, |
5652 | "line": 263 | 5800 | "line": 267 |
5653 | }, | 5801 | }, |
5654 | "file": "src/lib/Menu.js", | 5802 | "file": "src/lib/Menu.js", |
5655 | "id": "menu.todos", | 5803 | "id": "menu.todos", |
5656 | "start": { | 5804 | "start": { |
5657 | "column": 9, | 5805 | "column": 9, |
5658 | "line": 260 | 5806 | "line": 264 |
5659 | } | 5807 | } |
5660 | }, | 5808 | }, |
5661 | { | 5809 | { |
5662 | "defaultMessage": "!!!Open Todos drawer", | 5810 | "defaultMessage": "!!!Open Todos drawer", |
5663 | "end": { | 5811 | "end": { |
5664 | "column": 3, | 5812 | "column": 3, |
5665 | "line": 267 | 5813 | "line": 271 |
5666 | }, | 5814 | }, |
5667 | "file": "src/lib/Menu.js", | 5815 | "file": "src/lib/Menu.js", |
5668 | "id": "menu.Todoss.openTodosDrawer", | 5816 | "id": "menu.Todoss.openTodosDrawer", |
5669 | "start": { | 5817 | "start": { |
5670 | "column": 19, | 5818 | "column": 19, |
5671 | "line": 264 | 5819 | "line": 268 |
5672 | } | 5820 | } |
5673 | }, | 5821 | }, |
5674 | { | 5822 | { |
5675 | "defaultMessage": "!!!Close Todos drawer", | 5823 | "defaultMessage": "!!!Close Todos drawer", |
5676 | "end": { | 5824 | "end": { |
5677 | "column": 3, | 5825 | "column": 3, |
5678 | "line": 271 | 5826 | "line": 275 |
5679 | }, | 5827 | }, |
5680 | "file": "src/lib/Menu.js", | 5828 | "file": "src/lib/Menu.js", |
5681 | "id": "menu.Todoss.closeTodosDrawer", | 5829 | "id": "menu.Todoss.closeTodosDrawer", |
5682 | "start": { | 5830 | "start": { |
5683 | "column": 20, | 5831 | "column": 20, |
5684 | "line": 268 | 5832 | "line": 272 |
5685 | } | 5833 | } |
5686 | }, | 5834 | }, |
5687 | { | 5835 | { |
5688 | "defaultMessage": "!!!Enable Todos", | 5836 | "defaultMessage": "!!!Enable Todos", |
5689 | "end": { | 5837 | "end": { |
5690 | "column": 3, | 5838 | "column": 3, |
5691 | "line": 275 | 5839 | "line": 279 |
5692 | }, | 5840 | }, |
5693 | "file": "src/lib/Menu.js", | 5841 | "file": "src/lib/Menu.js", |
5694 | "id": "menu.todos.enableTodos", | 5842 | "id": "menu.todos.enableTodos", |
5695 | "start": { | 5843 | "start": { |
5696 | "column": 15, | 5844 | "column": 15, |
5697 | "line": 272 | 5845 | "line": 276 |
5698 | } | 5846 | } |
5699 | } | 5847 | } |
5700 | ], | 5848 | ], |
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 4b008a717..fb1d84cb6 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json | |||
@@ -46,6 +46,11 @@ | |||
46 | "invite.skip.label": "I want to do this later", | 46 | "invite.skip.label": "I want to do this later", |
47 | "invite.submit.label": "Send invites", | 47 | "invite.submit.label": "Send invites", |
48 | "invite.successInfo": "Invitations sent successfully", | 48 | "invite.successInfo": "Invitations sent successfully", |
49 | "locked.headline": "Locked", | ||
50 | "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.", | ||
51 | "locked.invalidCredentials": "Password invalid", | ||
52 | "locked.password.label": "Password", | ||
53 | "locked.submit.label": "Unlock", | ||
49 | "login.customServerQuestion": "Using a custom Ferdi server?", | 54 | "login.customServerQuestion": "Using a custom Ferdi server?", |
50 | "login.customServerSuggestion": "Try importing your Franz account", | 55 | "login.customServerSuggestion": "Try importing your Franz account", |
51 | "login.email.label": "Email address", | 56 | "login.email.label": "Email address", |
@@ -103,6 +108,7 @@ | |||
103 | "menu.view.enterFullScreen": "Enter Full Screen", | 108 | "menu.view.enterFullScreen": "Enter Full Screen", |
104 | "menu.view.exitFullScreen": "Exit Full Screen", | 109 | "menu.view.exitFullScreen": "Exit Full Screen", |
105 | "menu.view.forward": "Forward", | 110 | "menu.view.forward": "Forward", |
111 | "menu.view.lockFerdi": "Lock Ferdi", | ||
106 | "menu.view.reloadFranz": "Reload Ferdi", | 112 | "menu.view.reloadFranz": "Reload Ferdi", |
107 | "menu.view.reloadService": "Reload Service", | 113 | "menu.view.reloadService": "Reload Service", |
108 | "menu.view.resetZoom": "Actual Size", | 114 | "menu.view.resetZoom": "Actual Size", |
@@ -213,11 +219,13 @@ | |||
213 | "settings.app.form.beta": "Include beta versions", | 219 | "settings.app.form.beta": "Include beta versions", |
214 | "settings.app.form.darkMode": "Join the Dark Side", | 220 | "settings.app.form.darkMode": "Join the Dark Side", |
215 | "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", | 221 | "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", |
222 | "settings.app.form.enableLock": "Enable Ferdi password lock", | ||
216 | "settings.app.form.enableSpellchecking": "Enable spell checking", | 223 | "settings.app.form.enableSpellchecking": "Enable spell checking", |
217 | "settings.app.form.enableSystemTray": "Show Ferdi in system tray", | 224 | "settings.app.form.enableSystemTray": "Show Ferdi in system tray", |
218 | "settings.app.form.enableTodos": "Enable Ferdi Todos", | 225 | "settings.app.form.enableTodos": "Enable Ferdi Todos", |
219 | "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded", | 226 | "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded", |
220 | "settings.app.form.language": "Language", | 227 | "settings.app.form.language": "Language", |
228 | "settings.app.form.lockPassword": "Ferdi Lock password", | ||
221 | "settings.app.form.minimizeToSystemTray": "Minimize Ferdi to system tray", | 229 | "settings.app.form.minimizeToSystemTray": "Minimize Ferdi to system tray", |
222 | "settings.app.form.privateNotifications": "Don't show message content in notifications", | 230 | "settings.app.form.privateNotifications": "Don't show message content in notifications", |
223 | "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window", | 231 | "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window", |
@@ -232,6 +240,8 @@ | |||
232 | "settings.app.headlineLanguage": "Language", | 240 | "settings.app.headlineLanguage": "Language", |
233 | "settings.app.headlineUpdates": "Updates", | 241 | "settings.app.headlineUpdates": "Updates", |
234 | "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.", | 242 | "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.", |
243 | "settings.app.lockedPassword": "Ferdi Lock Password", | ||
244 | "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", | ||
235 | "settings.app.restartRequired": "Changes require restart", | 245 | "settings.app.restartRequired": "Changes require restart", |
236 | "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", | 246 | "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", |
237 | "settings.app.subheadlineCache": "Cache", | 247 | "settings.app.subheadlineCache": "Cache", |
@@ -345,6 +355,7 @@ | |||
345 | "sidebar.addNewService": "Add new service", | 355 | "sidebar.addNewService": "Add new service", |
346 | "sidebar.closeTodosDrawer": "Close Ferdi Todos", | 356 | "sidebar.closeTodosDrawer": "Close Ferdi Todos", |
347 | "sidebar.closeWorkspaceDrawer": "Close workspace drawer", | 357 | "sidebar.closeWorkspaceDrawer": "Close workspace drawer", |
358 | "sidebar.lockFerdi": "Lock Ferdi", | ||
348 | "sidebar.muteApp": "Disable notifications & audio", | 359 | "sidebar.muteApp": "Disable notifications & audio", |
349 | "sidebar.openTodosDrawer": "Open Ferdi Todos", | 360 | "sidebar.openTodosDrawer": "Open Ferdi Todos", |
350 | "sidebar.openWorkspaceDrawer": "Open workspace drawer", | 361 | "sidebar.openWorkspaceDrawer": "Open workspace drawer", |
diff --git a/src/i18n/messages/src/components/auth/Locked.json b/src/i18n/messages/src/components/auth/Locked.json new file mode 100644 index 000000000..86b1cae90 --- /dev/null +++ b/src/i18n/messages/src/components/auth/Locked.json | |||
@@ -0,0 +1,67 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "locked.headline", | ||
4 | "defaultMessage": "!!!Locked", | ||
5 | "file": "src/components/auth/Locked.js", | ||
6 | "start": { | ||
7 | "line": 15, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 18, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "locked.info", | ||
17 | "defaultMessage": "!!!Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.", | ||
18 | "file": "src/components/auth/Locked.js", | ||
19 | "start": { | ||
20 | "line": 19, | ||
21 | "column": 8 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 22, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "locked.password.label", | ||
30 | "defaultMessage": "!!!Password", | ||
31 | "file": "src/components/auth/Locked.js", | ||
32 | "start": { | ||
33 | "line": 23, | ||
34 | "column": 17 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 26, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "locked.submit.label", | ||
43 | "defaultMessage": "!!!Unlock", | ||
44 | "file": "src/components/auth/Locked.js", | ||
45 | "start": { | ||
46 | "line": 27, | ||
47 | "column": 21 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 30, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "locked.invalidCredentials", | ||
56 | "defaultMessage": "!!!Password invalid", | ||
57 | "file": "src/components/auth/Locked.js", | ||
58 | "start": { | ||
59 | "line": 31, | ||
60 | "column": 22 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 34, | ||
64 | "column": 3 | ||
65 | } | ||
66 | } | ||
67 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/layout/Sidebar.json b/src/i18n/messages/src/components/layout/Sidebar.json index 837dc54bc..ddd9cd094 100644 --- a/src/i18n/messages/src/components/layout/Sidebar.json +++ b/src/i18n/messages/src/components/layout/Sidebar.json | |||
@@ -102,5 +102,18 @@ | |||
102 | "line": 46, | 102 | "line": 46, |
103 | "column": 3 | 103 | "column": 3 |
104 | } | 104 | } |
105 | }, | ||
106 | { | ||
107 | "id": "sidebar.lockFerdi", | ||
108 | "defaultMessage": "!!!Lock Ferdi", | ||
109 | "file": "src/components/layout/Sidebar.js", | ||
110 | "start": { | ||
111 | "line": 47, | ||
112 | "column": 13 | ||
113 | }, | ||
114 | "end": { | ||
115 | "line": 50, | ||
116 | "column": 3 | ||
117 | } | ||
105 | } | 118 | } |
106 | ] \ No newline at end of file | 119 | ] \ No newline at end of file |
diff --git a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json index 2aebc79e3..125fcf0b9 100644 --- a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json +++ b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json | |||
@@ -52,15 +52,41 @@ | |||
52 | } | 52 | } |
53 | }, | 53 | }, |
54 | { | 54 | { |
55 | "id": "settings.app.lockedPassword", | ||
56 | "defaultMessage": "!!!Ferdi Lock Password", | ||
57 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
58 | "start": { | ||
59 | "line": 33, | ||
60 | "column": 18 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 36, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "settings.app.lockedPasswordInfo", | ||
69 | "defaultMessage": "!!!Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", | ||
70 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
71 | "start": { | ||
72 | "line": 37, | ||
73 | "column": 22 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 40, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
55 | "id": "settings.app.headlineLanguage", | 81 | "id": "settings.app.headlineLanguage", |
56 | "defaultMessage": "!!!Language", | 82 | "defaultMessage": "!!!Language", |
57 | "file": "src/components/settings/settings/EditSettingsForm.js", | 83 | "file": "src/components/settings/settings/EditSettingsForm.js", |
58 | "start": { | 84 | "start": { |
59 | "line": 33, | 85 | "line": 41, |
60 | "column": 20 | 86 | "column": 20 |
61 | }, | 87 | }, |
62 | "end": { | 88 | "end": { |
63 | "line": 36, | 89 | "line": 44, |
64 | "column": 3 | 90 | "column": 3 |
65 | } | 91 | } |
66 | }, | 92 | }, |
@@ -69,11 +95,11 @@ | |||
69 | "defaultMessage": "!!!Updates", | 95 | "defaultMessage": "!!!Updates", |
70 | "file": "src/components/settings/settings/EditSettingsForm.js", | 96 | "file": "src/components/settings/settings/EditSettingsForm.js", |
71 | "start": { | 97 | "start": { |
72 | "line": 37, | 98 | "line": 45, |
73 | "column": 19 | 99 | "column": 19 |
74 | }, | 100 | }, |
75 | "end": { | 101 | "end": { |
76 | "line": 40, | 102 | "line": 48, |
77 | "column": 3 | 103 | "column": 3 |
78 | } | 104 | } |
79 | }, | 105 | }, |
@@ -82,11 +108,11 @@ | |||
82 | "defaultMessage": "!!!Appearance", | 108 | "defaultMessage": "!!!Appearance", |
83 | "file": "src/components/settings/settings/EditSettingsForm.js", | 109 | "file": "src/components/settings/settings/EditSettingsForm.js", |
84 | "start": { | 110 | "start": { |
85 | "line": 41, | 111 | "line": 49, |
86 | "column": 22 | 112 | "column": 22 |
87 | }, | 113 | }, |
88 | "end": { | 114 | "end": { |
89 | "line": 44, | 115 | "line": 52, |
90 | "column": 3 | 116 | "column": 3 |
91 | } | 117 | } |
92 | }, | 118 | }, |
@@ -95,11 +121,11 @@ | |||
95 | "defaultMessage": "!!!Advanced", | 121 | "defaultMessage": "!!!Advanced", |
96 | "file": "src/components/settings/settings/EditSettingsForm.js", | 122 | "file": "src/components/settings/settings/EditSettingsForm.js", |
97 | "start": { | 123 | "start": { |
98 | "line": 45, | 124 | "line": 53, |
99 | "column": 20 | 125 | "column": 20 |
100 | }, | 126 | }, |
101 | "end": { | 127 | "end": { |
102 | "line": 48, | 128 | "line": 56, |
103 | "column": 3 | 129 | "column": 3 |
104 | } | 130 | } |
105 | }, | 131 | }, |
@@ -108,11 +134,11 @@ | |||
108 | "defaultMessage": "!!!Help us to translate Ferdi into your language.", | 134 | "defaultMessage": "!!!Help us to translate Ferdi into your language.", |
109 | "file": "src/components/settings/settings/EditSettingsForm.js", | 135 | "file": "src/components/settings/settings/EditSettingsForm.js", |
110 | "start": { | 136 | "start": { |
111 | "line": 49, | 137 | "line": 57, |
112 | "column": 19 | 138 | "column": 19 |
113 | }, | 139 | }, |
114 | "end": { | 140 | "end": { |
115 | "line": 52, | 141 | "line": 60, |
116 | "column": 3 | 142 | "column": 3 |
117 | } | 143 | } |
118 | }, | 144 | }, |
@@ -121,11 +147,11 @@ | |||
121 | "defaultMessage": "!!!Cache", | 147 | "defaultMessage": "!!!Cache", |
122 | "file": "src/components/settings/settings/EditSettingsForm.js", | 148 | "file": "src/components/settings/settings/EditSettingsForm.js", |
123 | "start": { | 149 | "start": { |
124 | "line": 53, | 150 | "line": 61, |
125 | "column": 20 | 151 | "column": 20 |
126 | }, | 152 | }, |
127 | "end": { | 153 | "end": { |
128 | "line": 56, | 154 | "line": 64, |
129 | "column": 3 | 155 | "column": 3 |
130 | } | 156 | } |
131 | }, | 157 | }, |
@@ -134,11 +160,11 @@ | |||
134 | "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.", | 160 | "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.", |
135 | "file": "src/components/settings/settings/EditSettingsForm.js", | 161 | "file": "src/components/settings/settings/EditSettingsForm.js", |
136 | "start": { | 162 | "start": { |
137 | "line": 57, | 163 | "line": 65, |
138 | "column": 13 | 164 | "column": 13 |
139 | }, | 165 | }, |
140 | "end": { | 166 | "end": { |
141 | "line": 60, | 167 | "line": 68, |
142 | "column": 3 | 168 | "column": 3 |
143 | } | 169 | } |
144 | }, | 170 | }, |
@@ -147,11 +173,11 @@ | |||
147 | "defaultMessage": "!!!Clear cache", | 173 | "defaultMessage": "!!!Clear cache", |
148 | "file": "src/components/settings/settings/EditSettingsForm.js", | 174 | "file": "src/components/settings/settings/EditSettingsForm.js", |
149 | "start": { | 175 | "start": { |
150 | "line": 61, | 176 | "line": 69, |
151 | "column": 23 | 177 | "column": 23 |
152 | }, | 178 | }, |
153 | "end": { | 179 | "end": { |
154 | "line": 64, | 180 | "line": 72, |
155 | "column": 3 | 181 | "column": 3 |
156 | } | 182 | } |
157 | }, | 183 | }, |
@@ -160,11 +186,11 @@ | |||
160 | "defaultMessage": "!!!Check for updates", | 186 | "defaultMessage": "!!!Check for updates", |
161 | "file": "src/components/settings/settings/EditSettingsForm.js", | 187 | "file": "src/components/settings/settings/EditSettingsForm.js", |
162 | "start": { | 188 | "start": { |
163 | "line": 65, | 189 | "line": 73, |
164 | "column": 25 | 190 | "column": 25 |
165 | }, | 191 | }, |
166 | "end": { | 192 | "end": { |
167 | "line": 68, | 193 | "line": 76, |
168 | "column": 3 | 194 | "column": 3 |
169 | } | 195 | } |
170 | }, | 196 | }, |
@@ -173,11 +199,11 @@ | |||
173 | "defaultMessage": "!!!Restart & install update", | 199 | "defaultMessage": "!!!Restart & install update", |
174 | "file": "src/components/settings/settings/EditSettingsForm.js", | 200 | "file": "src/components/settings/settings/EditSettingsForm.js", |
175 | "start": { | 201 | "start": { |
176 | "line": 69, | 202 | "line": 77, |
177 | "column": 23 | 203 | "column": 23 |
178 | }, | 204 | }, |
179 | "end": { | 205 | "end": { |
180 | "line": 72, | 206 | "line": 80, |
181 | "column": 3 | 207 | "column": 3 |
182 | } | 208 | } |
183 | }, | 209 | }, |
@@ -186,11 +212,11 @@ | |||
186 | "defaultMessage": "!!!Is searching for update", | 212 | "defaultMessage": "!!!Is searching for update", |
187 | "file": "src/components/settings/settings/EditSettingsForm.js", | 213 | "file": "src/components/settings/settings/EditSettingsForm.js", |
188 | "start": { | 214 | "start": { |
189 | "line": 73, | 215 | "line": 81, |
190 | "column": 25 | 216 | "column": 25 |
191 | }, | 217 | }, |
192 | "end": { | 218 | "end": { |
193 | "line": 76, | 219 | "line": 84, |
194 | "column": 3 | 220 | "column": 3 |
195 | } | 221 | } |
196 | }, | 222 | }, |
@@ -199,11 +225,11 @@ | |||
199 | "defaultMessage": "!!!Update available, downloading...", | 225 | "defaultMessage": "!!!Update available, downloading...", |
200 | "file": "src/components/settings/settings/EditSettingsForm.js", | 226 | "file": "src/components/settings/settings/EditSettingsForm.js", |
201 | "start": { | 227 | "start": { |
202 | "line": 77, | 228 | "line": 85, |
203 | "column": 25 | 229 | "column": 25 |
204 | }, | 230 | }, |
205 | "end": { | 231 | "end": { |
206 | "line": 80, | 232 | "line": 88, |
207 | "column": 3 | 233 | "column": 3 |
208 | } | 234 | } |
209 | }, | 235 | }, |
@@ -212,11 +238,11 @@ | |||
212 | "defaultMessage": "!!!You are using the latest version of Ferdi", | 238 | "defaultMessage": "!!!You are using the latest version of Ferdi", |
213 | "file": "src/components/settings/settings/EditSettingsForm.js", | 239 | "file": "src/components/settings/settings/EditSettingsForm.js", |
214 | "start": { | 240 | "start": { |
215 | "line": 81, | 241 | "line": 89, |
216 | "column": 24 | 242 | "column": 24 |
217 | }, | 243 | }, |
218 | "end": { | 244 | "end": { |
219 | "line": 84, | 245 | "line": 92, |
220 | "column": 3 | 246 | "column": 3 |
221 | } | 247 | } |
222 | }, | 248 | }, |
@@ -225,11 +251,11 @@ | |||
225 | "defaultMessage": "!!!Current version:", | 251 | "defaultMessage": "!!!Current version:", |
226 | "file": "src/components/settings/settings/EditSettingsForm.js", | 252 | "file": "src/components/settings/settings/EditSettingsForm.js", |
227 | "start": { | 253 | "start": { |
228 | "line": 85, | 254 | "line": 93, |
229 | "column": 18 | 255 | "column": 18 |
230 | }, | 256 | }, |
231 | "end": { | 257 | "end": { |
232 | "line": 88, | 258 | "line": 96, |
233 | "column": 3 | 259 | "column": 3 |
234 | } | 260 | } |
235 | }, | 261 | }, |
@@ -238,11 +264,11 @@ | |||
238 | "defaultMessage": "!!!Changes require restart", | 264 | "defaultMessage": "!!!Changes require restart", |
239 | "file": "src/components/settings/settings/EditSettingsForm.js", | 265 | "file": "src/components/settings/settings/EditSettingsForm.js", |
240 | "start": { | 266 | "start": { |
241 | "line": 89, | 267 | "line": 97, |
242 | "column": 29 | 268 | "column": 29 |
243 | }, | 269 | }, |
244 | "end": { | 270 | "end": { |
245 | "line": 92, | 271 | "line": 100, |
246 | "column": 3 | 272 | "column": 3 |
247 | } | 273 | } |
248 | }, | 274 | }, |
@@ -251,11 +277,11 @@ | |||
251 | "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", | 277 | "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", |
252 | "file": "src/components/settings/settings/EditSettingsForm.js", | 278 | "file": "src/components/settings/settings/EditSettingsForm.js", |
253 | "start": { | 279 | "start": { |
254 | "line": 93, | 280 | "line": 101, |
255 | "column": 22 | 281 | "column": 22 |
256 | }, | 282 | }, |
257 | "end": { | 283 | "end": { |
258 | "line": 96, | 284 | "line": 104, |
259 | "column": 3 | 285 | "column": 3 |
260 | } | 286 | } |
261 | } | 287 | } |
diff --git a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json index 83902a8a2..83d9cefe8 100644 --- a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json +++ b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json | |||
@@ -104,15 +104,41 @@ | |||
104 | } | 104 | } |
105 | }, | 105 | }, |
106 | { | 106 | { |
107 | "id": "settings.app.form.enableLock", | ||
108 | "defaultMessage": "!!!Enable Ferdi password lock", | ||
109 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
110 | "start": { | ||
111 | "line": 60, | ||
112 | "column": 14 | ||
113 | }, | ||
114 | "end": { | ||
115 | "line": 63, | ||
116 | "column": 3 | ||
117 | } | ||
118 | }, | ||
119 | { | ||
120 | "id": "settings.app.form.lockPassword", | ||
121 | "defaultMessage": "!!!Ferdi Lock password", | ||
122 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
123 | "start": { | ||
124 | "line": 64, | ||
125 | "column": 16 | ||
126 | }, | ||
127 | "end": { | ||
128 | "line": 67, | ||
129 | "column": 3 | ||
130 | } | ||
131 | }, | ||
132 | { | ||
107 | "id": "settings.app.form.language", | 133 | "id": "settings.app.form.language", |
108 | "defaultMessage": "!!!Language", | 134 | "defaultMessage": "!!!Language", |
109 | "file": "src/containers/settings/EditSettingsScreen.js", | 135 | "file": "src/containers/settings/EditSettingsScreen.js", |
110 | "start": { | 136 | "start": { |
111 | "line": 60, | 137 | "line": 68, |
112 | "column": 12 | 138 | "column": 12 |
113 | }, | 139 | }, |
114 | "end": { | 140 | "end": { |
115 | "line": 63, | 141 | "line": 71, |
116 | "column": 3 | 142 | "column": 3 |
117 | } | 143 | } |
118 | }, | 144 | }, |
@@ -121,11 +147,11 @@ | |||
121 | "defaultMessage": "!!!Dark Mode", | 147 | "defaultMessage": "!!!Dark Mode", |
122 | "file": "src/containers/settings/EditSettingsScreen.js", | 148 | "file": "src/containers/settings/EditSettingsScreen.js", |
123 | "start": { | 149 | "start": { |
124 | "line": 64, | 150 | "line": 72, |
125 | "column": 12 | 151 | "column": 12 |
126 | }, | 152 | }, |
127 | "end": { | 153 | "end": { |
128 | "line": 67, | 154 | "line": 75, |
129 | "column": 3 | 155 | "column": 3 |
130 | } | 156 | } |
131 | }, | 157 | }, |
@@ -134,11 +160,11 @@ | |||
134 | "defaultMessage": "!!!Display disabled services tabs", | 160 | "defaultMessage": "!!!Display disabled services tabs", |
135 | "file": "src/containers/settings/EditSettingsScreen.js", | 161 | "file": "src/containers/settings/EditSettingsScreen.js", |
136 | "start": { | 162 | "start": { |
137 | "line": 68, | 163 | "line": 76, |
138 | "column": 24 | 164 | "column": 24 |
139 | }, | 165 | }, |
140 | "end": { | 166 | "end": { |
141 | "line": 71, | 167 | "line": 79, |
142 | "column": 3 | 168 | "column": 3 |
143 | } | 169 | } |
144 | }, | 170 | }, |
@@ -147,11 +173,11 @@ | |||
147 | "defaultMessage": "!!!Show unread message badge when notifications are disabled", | 173 | "defaultMessage": "!!!Show unread message badge when notifications are disabled", |
148 | "file": "src/containers/settings/EditSettingsScreen.js", | 174 | "file": "src/containers/settings/EditSettingsScreen.js", |
149 | "start": { | 175 | "start": { |
150 | "line": 72, | 176 | "line": 80, |
151 | "column": 29 | 177 | "column": 29 |
152 | }, | 178 | }, |
153 | "end": { | 179 | "end": { |
154 | "line": 75, | 180 | "line": 83, |
155 | "column": 3 | 181 | "column": 3 |
156 | } | 182 | } |
157 | }, | 183 | }, |
@@ -160,11 +186,11 @@ | |||
160 | "defaultMessage": "!!!Enable spell checking", | 186 | "defaultMessage": "!!!Enable spell checking", |
161 | "file": "src/containers/settings/EditSettingsScreen.js", | 187 | "file": "src/containers/settings/EditSettingsScreen.js", |
162 | "start": { | 188 | "start": { |
163 | "line": 76, | 189 | "line": 84, |
164 | "column": 23 | 190 | "column": 23 |
165 | }, | 191 | }, |
166 | "end": { | 192 | "end": { |
167 | "line": 79, | 193 | "line": 87, |
168 | "column": 3 | 194 | "column": 3 |
169 | } | 195 | } |
170 | }, | 196 | }, |
@@ -173,11 +199,11 @@ | |||
173 | "defaultMessage": "!!!Enable GPU Acceleration", | 199 | "defaultMessage": "!!!Enable GPU Acceleration", |
174 | "file": "src/containers/settings/EditSettingsScreen.js", | 200 | "file": "src/containers/settings/EditSettingsScreen.js", |
175 | "start": { | 201 | "start": { |
176 | "line": 80, | 202 | "line": 88, |
177 | "column": 25 | 203 | "column": 25 |
178 | }, | 204 | }, |
179 | "end": { | 205 | "end": { |
180 | "line": 83, | 206 | "line": 91, |
181 | "column": 3 | 207 | "column": 3 |
182 | } | 208 | } |
183 | }, | 209 | }, |
@@ -186,11 +212,11 @@ | |||
186 | "defaultMessage": "!!!Include beta versions", | 212 | "defaultMessage": "!!!Include beta versions", |
187 | "file": "src/containers/settings/EditSettingsScreen.js", | 213 | "file": "src/containers/settings/EditSettingsScreen.js", |
188 | "start": { | 214 | "start": { |
189 | "line": 84, | 215 | "line": 92, |
190 | "column": 8 | 216 | "column": 8 |
191 | }, | 217 | }, |
192 | "end": { | 218 | "end": { |
193 | "line": 87, | 219 | "line": 95, |
194 | "column": 3 | 220 | "column": 3 |
195 | } | 221 | } |
196 | }, | 222 | }, |
@@ -199,11 +225,11 @@ | |||
199 | "defaultMessage": "!!!Enable Franz Todos", | 225 | "defaultMessage": "!!!Enable Franz Todos", |
200 | "file": "src/containers/settings/EditSettingsScreen.js", | 226 | "file": "src/containers/settings/EditSettingsScreen.js", |
201 | "start": { | 227 | "start": { |
202 | "line": 88, | 228 | "line": 96, |
203 | "column": 15 | 229 | "column": 15 |
204 | }, | 230 | }, |
205 | "end": { | 231 | "end": { |
206 | "line": 91, | 232 | "line": 99, |
207 | "column": 3 | 233 | "column": 3 |
208 | } | 234 | } |
209 | }, | 235 | }, |
@@ -212,11 +238,11 @@ | |||
212 | "defaultMessage": "!!!Keep all workspaces loaded", | 238 | "defaultMessage": "!!!Keep all workspaces loaded", |
213 | "file": "src/containers/settings/EditSettingsScreen.js", | 239 | "file": "src/containers/settings/EditSettingsScreen.js", |
214 | "start": { | 240 | "start": { |
215 | "line": 92, | 241 | "line": 100, |
216 | "column": 27 | 242 | "column": 27 |
217 | }, | 243 | }, |
218 | "end": { | 244 | "end": { |
219 | "line": 95, | 245 | "line": 103, |
220 | "column": 3 | 246 | "column": 3 |
221 | } | 247 | } |
222 | } | 248 | } |
diff --git a/src/i18n/messages/src/lib/Menu.json b/src/i18n/messages/src/lib/Menu.json index 311ed5362..521022edd 100644 --- a/src/i18n/messages/src/lib/Menu.json +++ b/src/i18n/messages/src/lib/Menu.json | |||
@@ -351,15 +351,28 @@ | |||
351 | } | 351 | } |
352 | }, | 352 | }, |
353 | { | 353 | { |
354 | "id": "menu.view.lockFerdi", | ||
355 | "defaultMessage": "!!!Lock Ferdi", | ||
356 | "file": "src/lib/Menu.js", | ||
357 | "start": { | ||
358 | "line": 124, | ||
359 | "column": 13 | ||
360 | }, | ||
361 | "end": { | ||
362 | "line": 127, | ||
363 | "column": 3 | ||
364 | } | ||
365 | }, | ||
366 | { | ||
354 | "id": "menu.window.minimize", | 367 | "id": "menu.window.minimize", |
355 | "defaultMessage": "!!!Minimize", | 368 | "defaultMessage": "!!!Minimize", |
356 | "file": "src/lib/Menu.js", | 369 | "file": "src/lib/Menu.js", |
357 | "start": { | 370 | "start": { |
358 | "line": 124, | 371 | "line": 128, |
359 | "column": 12 | 372 | "column": 12 |
360 | }, | 373 | }, |
361 | "end": { | 374 | "end": { |
362 | "line": 127, | 375 | "line": 131, |
363 | "column": 3 | 376 | "column": 3 |
364 | } | 377 | } |
365 | }, | 378 | }, |
@@ -368,11 +381,11 @@ | |||
368 | "defaultMessage": "!!!Close", | 381 | "defaultMessage": "!!!Close", |
369 | "file": "src/lib/Menu.js", | 382 | "file": "src/lib/Menu.js", |
370 | "start": { | 383 | "start": { |
371 | "line": 128, | 384 | "line": 132, |
372 | "column": 9 | 385 | "column": 9 |
373 | }, | 386 | }, |
374 | "end": { | 387 | "end": { |
375 | "line": 131, | 388 | "line": 135, |
376 | "column": 3 | 389 | "column": 3 |
377 | } | 390 | } |
378 | }, | 391 | }, |
@@ -381,11 +394,11 @@ | |||
381 | "defaultMessage": "!!!Learn More", | 394 | "defaultMessage": "!!!Learn More", |
382 | "file": "src/lib/Menu.js", | 395 | "file": "src/lib/Menu.js", |
383 | "start": { | 396 | "start": { |
384 | "line": 132, | 397 | "line": 136, |
385 | "column": 13 | 398 | "column": 13 |
386 | }, | 399 | }, |
387 | "end": { | 400 | "end": { |
388 | "line": 135, | 401 | "line": 139, |
389 | "column": 3 | 402 | "column": 3 |
390 | } | 403 | } |
391 | }, | 404 | }, |
@@ -394,11 +407,11 @@ | |||
394 | "defaultMessage": "!!!Changelog", | 407 | "defaultMessage": "!!!Changelog", |
395 | "file": "src/lib/Menu.js", | 408 | "file": "src/lib/Menu.js", |
396 | "start": { | 409 | "start": { |
397 | "line": 136, | 410 | "line": 140, |
398 | "column": 13 | 411 | "column": 13 |
399 | }, | 412 | }, |
400 | "end": { | 413 | "end": { |
401 | "line": 139, | 414 | "line": 143, |
402 | "column": 3 | 415 | "column": 3 |
403 | } | 416 | } |
404 | }, | 417 | }, |
@@ -407,11 +420,11 @@ | |||
407 | "defaultMessage": "!!!Support", | 420 | "defaultMessage": "!!!Support", |
408 | "file": "src/lib/Menu.js", | 421 | "file": "src/lib/Menu.js", |
409 | "start": { | 422 | "start": { |
410 | "line": 140, | 423 | "line": 144, |
411 | "column": 11 | 424 | "column": 11 |
412 | }, | 425 | }, |
413 | "end": { | 426 | "end": { |
414 | "line": 143, | 427 | "line": 147, |
415 | "column": 3 | 428 | "column": 3 |
416 | } | 429 | } |
417 | }, | 430 | }, |
@@ -420,11 +433,11 @@ | |||
420 | "defaultMessage": "!!!Copy Debug Information", | 433 | "defaultMessage": "!!!Copy Debug Information", |
421 | "file": "src/lib/Menu.js", | 434 | "file": "src/lib/Menu.js", |
422 | "start": { | 435 | "start": { |
423 | "line": 144, | 436 | "line": 148, |
424 | "column": 13 | 437 | "column": 13 |
425 | }, | 438 | }, |
426 | "end": { | 439 | "end": { |
427 | "line": 147, | 440 | "line": 151, |
428 | "column": 3 | 441 | "column": 3 |
429 | } | 442 | } |
430 | }, | 443 | }, |
@@ -433,11 +446,11 @@ | |||
433 | "defaultMessage": "!!!Ferdi Debug Information", | 446 | "defaultMessage": "!!!Ferdi Debug Information", |
434 | "file": "src/lib/Menu.js", | 447 | "file": "src/lib/Menu.js", |
435 | "start": { | 448 | "start": { |
436 | "line": 148, | 449 | "line": 152, |
437 | "column": 27 | 450 | "column": 27 |
438 | }, | 451 | }, |
439 | "end": { | 452 | "end": { |
440 | "line": 151, | 453 | "line": 155, |
441 | "column": 3 | 454 | "column": 3 |
442 | } | 455 | } |
443 | }, | 456 | }, |
@@ -446,11 +459,11 @@ | |||
446 | "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", | 459 | "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", |
447 | "file": "src/lib/Menu.js", | 460 | "file": "src/lib/Menu.js", |
448 | "start": { | 461 | "start": { |
449 | "line": 152, | 462 | "line": 156, |
450 | "column": 23 | 463 | "column": 23 |
451 | }, | 464 | }, |
452 | "end": { | 465 | "end": { |
453 | "line": 155, | 466 | "line": 159, |
454 | "column": 3 | 467 | "column": 3 |
455 | } | 468 | } |
456 | }, | 469 | }, |
@@ -459,11 +472,11 @@ | |||
459 | "defaultMessage": "!!!Terms of Service", | 472 | "defaultMessage": "!!!Terms of Service", |
460 | "file": "src/lib/Menu.js", | 473 | "file": "src/lib/Menu.js", |
461 | "start": { | 474 | "start": { |
462 | "line": 156, | 475 | "line": 160, |
463 | "column": 7 | 476 | "column": 7 |
464 | }, | 477 | }, |
465 | "end": { | 478 | "end": { |
466 | "line": 159, | 479 | "line": 163, |
467 | "column": 3 | 480 | "column": 3 |
468 | } | 481 | } |
469 | }, | 482 | }, |
@@ -472,11 +485,11 @@ | |||
472 | "defaultMessage": "!!!Privacy Statement", | 485 | "defaultMessage": "!!!Privacy Statement", |
473 | "file": "src/lib/Menu.js", | 486 | "file": "src/lib/Menu.js", |
474 | "start": { | 487 | "start": { |
475 | "line": 160, | 488 | "line": 164, |
476 | "column": 11 | 489 | "column": 11 |
477 | }, | 490 | }, |
478 | "end": { | 491 | "end": { |
479 | "line": 163, | 492 | "line": 167, |
480 | "column": 3 | 493 | "column": 3 |
481 | } | 494 | } |
482 | }, | 495 | }, |
@@ -485,11 +498,11 @@ | |||
485 | "defaultMessage": "!!!File", | 498 | "defaultMessage": "!!!File", |
486 | "file": "src/lib/Menu.js", | 499 | "file": "src/lib/Menu.js", |
487 | "start": { | 500 | "start": { |
488 | "line": 164, | 501 | "line": 168, |
489 | "column": 8 | 502 | "column": 8 |
490 | }, | 503 | }, |
491 | "end": { | 504 | "end": { |
492 | "line": 167, | 505 | "line": 171, |
493 | "column": 3 | 506 | "column": 3 |
494 | } | 507 | } |
495 | }, | 508 | }, |
@@ -498,11 +511,11 @@ | |||
498 | "defaultMessage": "!!!View", | 511 | "defaultMessage": "!!!View", |
499 | "file": "src/lib/Menu.js", | 512 | "file": "src/lib/Menu.js", |
500 | "start": { | 513 | "start": { |
501 | "line": 168, | 514 | "line": 172, |
502 | "column": 8 | 515 | "column": 8 |
503 | }, | 516 | }, |
504 | "end": { | 517 | "end": { |
505 | "line": 171, | 518 | "line": 175, |
506 | "column": 3 | 519 | "column": 3 |
507 | } | 520 | } |
508 | }, | 521 | }, |
@@ -511,11 +524,11 @@ | |||
511 | "defaultMessage": "!!!Services", | 524 | "defaultMessage": "!!!Services", |
512 | "file": "src/lib/Menu.js", | 525 | "file": "src/lib/Menu.js", |
513 | "start": { | 526 | "start": { |
514 | "line": 172, | 527 | "line": 176, |
515 | "column": 12 | 528 | "column": 12 |
516 | }, | 529 | }, |
517 | "end": { | 530 | "end": { |
518 | "line": 175, | 531 | "line": 179, |
519 | "column": 3 | 532 | "column": 3 |
520 | } | 533 | } |
521 | }, | 534 | }, |
@@ -524,11 +537,11 @@ | |||
524 | "defaultMessage": "!!!Window", | 537 | "defaultMessage": "!!!Window", |
525 | "file": "src/lib/Menu.js", | 538 | "file": "src/lib/Menu.js", |
526 | "start": { | 539 | "start": { |
527 | "line": 176, | 540 | "line": 180, |
528 | "column": 10 | 541 | "column": 10 |
529 | }, | 542 | }, |
530 | "end": { | 543 | "end": { |
531 | "line": 179, | 544 | "line": 183, |
532 | "column": 3 | 545 | "column": 3 |
533 | } | 546 | } |
534 | }, | 547 | }, |
@@ -537,11 +550,11 @@ | |||
537 | "defaultMessage": "!!!Help", | 550 | "defaultMessage": "!!!Help", |
538 | "file": "src/lib/Menu.js", | 551 | "file": "src/lib/Menu.js", |
539 | "start": { | 552 | "start": { |
540 | "line": 180, | 553 | "line": 184, |
541 | "column": 8 | 554 | "column": 8 |
542 | }, | 555 | }, |
543 | "end": { | 556 | "end": { |
544 | "line": 183, | 557 | "line": 187, |
545 | "column": 3 | 558 | "column": 3 |
546 | } | 559 | } |
547 | }, | 560 | }, |
@@ -550,11 +563,11 @@ | |||
550 | "defaultMessage": "!!!About Ferdi", | 563 | "defaultMessage": "!!!About Ferdi", |
551 | "file": "src/lib/Menu.js", | 564 | "file": "src/lib/Menu.js", |
552 | "start": { | 565 | "start": { |
553 | "line": 184, | 566 | "line": 188, |
554 | "column": 9 | 567 | "column": 9 |
555 | }, | 568 | }, |
556 | "end": { | 569 | "end": { |
557 | "line": 187, | 570 | "line": 191, |
558 | "column": 3 | 571 | "column": 3 |
559 | } | 572 | } |
560 | }, | 573 | }, |
@@ -563,11 +576,11 @@ | |||
563 | "defaultMessage": "!!!What's new?", | 576 | "defaultMessage": "!!!What's new?", |
564 | "file": "src/lib/Menu.js", | 577 | "file": "src/lib/Menu.js", |
565 | "start": { | 578 | "start": { |
566 | "line": 188, | 579 | "line": 192, |
567 | "column": 16 | 580 | "column": 16 |
568 | }, | 581 | }, |
569 | "end": { | 582 | "end": { |
570 | "line": 191, | 583 | "line": 195, |
571 | "column": 3 | 584 | "column": 3 |
572 | } | 585 | } |
573 | }, | 586 | }, |
@@ -576,11 +589,11 @@ | |||
576 | "defaultMessage": "!!!Settings", | 589 | "defaultMessage": "!!!Settings", |
577 | "file": "src/lib/Menu.js", | 590 | "file": "src/lib/Menu.js", |
578 | "start": { | 591 | "start": { |
579 | "line": 192, | 592 | "line": 196, |
580 | "column": 12 | 593 | "column": 12 |
581 | }, | 594 | }, |
582 | "end": { | 595 | "end": { |
583 | "line": 195, | 596 | "line": 199, |
584 | "column": 3 | 597 | "column": 3 |
585 | } | 598 | } |
586 | }, | 599 | }, |
@@ -589,11 +602,11 @@ | |||
589 | "defaultMessage": "!!!Check for updates", | 602 | "defaultMessage": "!!!Check for updates", |
590 | "file": "src/lib/Menu.js", | 603 | "file": "src/lib/Menu.js", |
591 | "start": { | 604 | "start": { |
592 | "line": 196, | 605 | "line": 200, |
593 | "column": 19 | 606 | "column": 19 |
594 | }, | 607 | }, |
595 | "end": { | 608 | "end": { |
596 | "line": 199, | 609 | "line": 203, |
597 | "column": 3 | 610 | "column": 3 |
598 | } | 611 | } |
599 | }, | 612 | }, |
@@ -602,11 +615,11 @@ | |||
602 | "defaultMessage": "!!!Hide", | 615 | "defaultMessage": "!!!Hide", |
603 | "file": "src/lib/Menu.js", | 616 | "file": "src/lib/Menu.js", |
604 | "start": { | 617 | "start": { |
605 | "line": 200, | 618 | "line": 204, |
606 | "column": 8 | 619 | "column": 8 |
607 | }, | 620 | }, |
608 | "end": { | 621 | "end": { |
609 | "line": 203, | 622 | "line": 207, |
610 | "column": 3 | 623 | "column": 3 |
611 | } | 624 | } |
612 | }, | 625 | }, |
@@ -615,11 +628,11 @@ | |||
615 | "defaultMessage": "!!!Hide Others", | 628 | "defaultMessage": "!!!Hide Others", |
616 | "file": "src/lib/Menu.js", | 629 | "file": "src/lib/Menu.js", |
617 | "start": { | 630 | "start": { |
618 | "line": 204, | 631 | "line": 208, |
619 | "column": 14 | 632 | "column": 14 |
620 | }, | 633 | }, |
621 | "end": { | 634 | "end": { |
622 | "line": 207, | 635 | "line": 211, |
623 | "column": 3 | 636 | "column": 3 |
624 | } | 637 | } |
625 | }, | 638 | }, |
@@ -628,11 +641,11 @@ | |||
628 | "defaultMessage": "!!!Unhide", | 641 | "defaultMessage": "!!!Unhide", |
629 | "file": "src/lib/Menu.js", | 642 | "file": "src/lib/Menu.js", |
630 | "start": { | 643 | "start": { |
631 | "line": 208, | 644 | "line": 212, |
632 | "column": 10 | 645 | "column": 10 |
633 | }, | 646 | }, |
634 | "end": { | 647 | "end": { |
635 | "line": 211, | 648 | "line": 215, |
636 | "column": 3 | 649 | "column": 3 |
637 | } | 650 | } |
638 | }, | 651 | }, |
@@ -641,11 +654,11 @@ | |||
641 | "defaultMessage": "!!!Auto-hide menu bar", | 654 | "defaultMessage": "!!!Auto-hide menu bar", |
642 | "file": "src/lib/Menu.js", | 655 | "file": "src/lib/Menu.js", |
643 | "start": { | 656 | "start": { |
644 | "line": 212, | 657 | "line": 216, |
645 | "column": 19 | 658 | "column": 19 |
646 | }, | 659 | }, |
647 | "end": { | 660 | "end": { |
648 | "line": 215, | 661 | "line": 219, |
649 | "column": 3 | 662 | "column": 3 |
650 | } | 663 | } |
651 | }, | 664 | }, |
@@ -654,11 +667,11 @@ | |||
654 | "defaultMessage": "!!!Quit", | 667 | "defaultMessage": "!!!Quit", |
655 | "file": "src/lib/Menu.js", | 668 | "file": "src/lib/Menu.js", |
656 | "start": { | 669 | "start": { |
657 | "line": 216, | 670 | "line": 220, |
658 | "column": 8 | 671 | "column": 8 |
659 | }, | 672 | }, |
660 | "end": { | 673 | "end": { |
661 | "line": 219, | 674 | "line": 223, |
662 | "column": 3 | 675 | "column": 3 |
663 | } | 676 | } |
664 | }, | 677 | }, |
@@ -667,11 +680,11 @@ | |||
667 | "defaultMessage": "!!!Add New Service...", | 680 | "defaultMessage": "!!!Add New Service...", |
668 | "file": "src/lib/Menu.js", | 681 | "file": "src/lib/Menu.js", |
669 | "start": { | 682 | "start": { |
670 | "line": 220, | 683 | "line": 224, |
671 | "column": 17 | 684 | "column": 17 |
672 | }, | 685 | }, |
673 | "end": { | 686 | "end": { |
674 | "line": 223, | 687 | "line": 227, |
675 | "column": 3 | 688 | "column": 3 |
676 | } | 689 | } |
677 | }, | 690 | }, |
@@ -680,11 +693,11 @@ | |||
680 | "defaultMessage": "!!!Add New Workspace...", | 693 | "defaultMessage": "!!!Add New Workspace...", |
681 | "file": "src/lib/Menu.js", | 694 | "file": "src/lib/Menu.js", |
682 | "start": { | 695 | "start": { |
683 | "line": 224, | 696 | "line": 228, |
684 | "column": 19 | 697 | "column": 19 |
685 | }, | 698 | }, |
686 | "end": { | 699 | "end": { |
687 | "line": 227, | 700 | "line": 231, |
688 | "column": 3 | 701 | "column": 3 |
689 | } | 702 | } |
690 | }, | 703 | }, |
@@ -693,11 +706,11 @@ | |||
693 | "defaultMessage": "!!!Open workspace drawer", | 706 | "defaultMessage": "!!!Open workspace drawer", |
694 | "file": "src/lib/Menu.js", | 707 | "file": "src/lib/Menu.js", |
695 | "start": { | 708 | "start": { |
696 | "line": 228, | 709 | "line": 232, |
697 | "column": 23 | 710 | "column": 23 |
698 | }, | 711 | }, |
699 | "end": { | 712 | "end": { |
700 | "line": 231, | 713 | "line": 235, |
701 | "column": 3 | 714 | "column": 3 |
702 | } | 715 | } |
703 | }, | 716 | }, |
@@ -706,11 +719,11 @@ | |||
706 | "defaultMessage": "!!!Close workspace drawer", | 719 | "defaultMessage": "!!!Close workspace drawer", |
707 | "file": "src/lib/Menu.js", | 720 | "file": "src/lib/Menu.js", |
708 | "start": { | 721 | "start": { |
709 | "line": 232, | 722 | "line": 236, |
710 | "column": 24 | 723 | "column": 24 |
711 | }, | 724 | }, |
712 | "end": { | 725 | "end": { |
713 | "line": 235, | 726 | "line": 239, |
714 | "column": 3 | 727 | "column": 3 |
715 | } | 728 | } |
716 | }, | 729 | }, |
@@ -719,11 +732,11 @@ | |||
719 | "defaultMessage": "!!!Activate next service...", | 732 | "defaultMessage": "!!!Activate next service...", |
720 | "file": "src/lib/Menu.js", | 733 | "file": "src/lib/Menu.js", |
721 | "start": { | 734 | "start": { |
722 | "line": 236, | 735 | "line": 240, |
723 | "column": 23 | 736 | "column": 23 |
724 | }, | 737 | }, |
725 | "end": { | 738 | "end": { |
726 | "line": 239, | 739 | "line": 243, |
727 | "column": 3 | 740 | "column": 3 |
728 | } | 741 | } |
729 | }, | 742 | }, |
@@ -732,11 +745,11 @@ | |||
732 | "defaultMessage": "!!!Activate previous service...", | 745 | "defaultMessage": "!!!Activate previous service...", |
733 | "file": "src/lib/Menu.js", | 746 | "file": "src/lib/Menu.js", |
734 | "start": { | 747 | "start": { |
735 | "line": 240, | 748 | "line": 244, |
736 | "column": 27 | 749 | "column": 27 |
737 | }, | 750 | }, |
738 | "end": { | 751 | "end": { |
739 | "line": 243, | 752 | "line": 247, |
740 | "column": 3 | 753 | "column": 3 |
741 | } | 754 | } |
742 | }, | 755 | }, |
@@ -745,11 +758,11 @@ | |||
745 | "defaultMessage": "!!!Disable notifications & audio", | 758 | "defaultMessage": "!!!Disable notifications & audio", |
746 | "file": "src/lib/Menu.js", | 759 | "file": "src/lib/Menu.js", |
747 | "start": { | 760 | "start": { |
748 | "line": 244, | 761 | "line": 248, |
749 | "column": 11 | 762 | "column": 11 |
750 | }, | 763 | }, |
751 | "end": { | 764 | "end": { |
752 | "line": 247, | 765 | "line": 251, |
753 | "column": 3 | 766 | "column": 3 |
754 | } | 767 | } |
755 | }, | 768 | }, |
@@ -758,11 +771,11 @@ | |||
758 | "defaultMessage": "!!!Enable notifications & audio", | 771 | "defaultMessage": "!!!Enable notifications & audio", |
759 | "file": "src/lib/Menu.js", | 772 | "file": "src/lib/Menu.js", |
760 | "start": { | 773 | "start": { |
761 | "line": 248, | 774 | "line": 252, |
762 | "column": 13 | 775 | "column": 13 |
763 | }, | 776 | }, |
764 | "end": { | 777 | "end": { |
765 | "line": 251, | 778 | "line": 255, |
766 | "column": 3 | 779 | "column": 3 |
767 | } | 780 | } |
768 | }, | 781 | }, |
@@ -771,11 +784,11 @@ | |||
771 | "defaultMessage": "!!!Workspaces", | 784 | "defaultMessage": "!!!Workspaces", |
772 | "file": "src/lib/Menu.js", | 785 | "file": "src/lib/Menu.js", |
773 | "start": { | 786 | "start": { |
774 | "line": 252, | 787 | "line": 256, |
775 | "column": 14 | 788 | "column": 14 |
776 | }, | 789 | }, |
777 | "end": { | 790 | "end": { |
778 | "line": 255, | 791 | "line": 259, |
779 | "column": 3 | 792 | "column": 3 |
780 | } | 793 | } |
781 | }, | 794 | }, |
@@ -784,11 +797,11 @@ | |||
784 | "defaultMessage": "!!!Default", | 797 | "defaultMessage": "!!!Default", |
785 | "file": "src/lib/Menu.js", | 798 | "file": "src/lib/Menu.js", |
786 | "start": { | 799 | "start": { |
787 | "line": 256, | 800 | "line": 260, |
788 | "column": 20 | 801 | "column": 20 |
789 | }, | 802 | }, |
790 | "end": { | 803 | "end": { |
791 | "line": 259, | 804 | "line": 263, |
792 | "column": 3 | 805 | "column": 3 |
793 | } | 806 | } |
794 | }, | 807 | }, |
@@ -797,11 +810,11 @@ | |||
797 | "defaultMessage": "!!!Todos", | 810 | "defaultMessage": "!!!Todos", |
798 | "file": "src/lib/Menu.js", | 811 | "file": "src/lib/Menu.js", |
799 | "start": { | 812 | "start": { |
800 | "line": 260, | 813 | "line": 264, |
801 | "column": 9 | 814 | "column": 9 |
802 | }, | 815 | }, |
803 | "end": { | 816 | "end": { |
804 | "line": 263, | 817 | "line": 267, |
805 | "column": 3 | 818 | "column": 3 |
806 | } | 819 | } |
807 | }, | 820 | }, |
@@ -810,11 +823,11 @@ | |||
810 | "defaultMessage": "!!!Open Todos drawer", | 823 | "defaultMessage": "!!!Open Todos drawer", |
811 | "file": "src/lib/Menu.js", | 824 | "file": "src/lib/Menu.js", |
812 | "start": { | 825 | "start": { |
813 | "line": 264, | 826 | "line": 268, |
814 | "column": 19 | 827 | "column": 19 |
815 | }, | 828 | }, |
816 | "end": { | 829 | "end": { |
817 | "line": 267, | 830 | "line": 271, |
818 | "column": 3 | 831 | "column": 3 |
819 | } | 832 | } |
820 | }, | 833 | }, |
@@ -823,11 +836,11 @@ | |||
823 | "defaultMessage": "!!!Close Todos drawer", | 836 | "defaultMessage": "!!!Close Todos drawer", |
824 | "file": "src/lib/Menu.js", | 837 | "file": "src/lib/Menu.js", |
825 | "start": { | 838 | "start": { |
826 | "line": 268, | 839 | "line": 272, |
827 | "column": 20 | 840 | "column": 20 |
828 | }, | 841 | }, |
829 | "end": { | 842 | "end": { |
830 | "line": 271, | 843 | "line": 275, |
831 | "column": 3 | 844 | "column": 3 |
832 | } | 845 | } |
833 | }, | 846 | }, |
@@ -836,11 +849,11 @@ | |||
836 | "defaultMessage": "!!!Enable Todos", | 849 | "defaultMessage": "!!!Enable Todos", |
837 | "file": "src/lib/Menu.js", | 850 | "file": "src/lib/Menu.js", |
838 | "start": { | 851 | "start": { |
839 | "line": 272, | 852 | "line": 276, |
840 | "column": 15 | 853 | "column": 15 |
841 | }, | 854 | }, |
842 | "end": { | 855 | "end": { |
843 | "line": 275, | 856 | "line": 279, |
844 | "column": 3 | 857 | "column": 3 |
845 | } | 858 | } |
846 | } | 859 | } |
diff --git a/src/lib/Menu.js b/src/lib/Menu.js index f5d24951c..9d8f1ba81 100644 --- a/src/lib/Menu.js +++ b/src/lib/Menu.js | |||
@@ -121,6 +121,10 @@ const menuItems = defineMessages({ | |||
121 | id: 'menu.view.reloadFranz', | 121 | id: 'menu.view.reloadFranz', |
122 | defaultMessage: '!!!Reload Ferdi', | 122 | defaultMessage: '!!!Reload Ferdi', |
123 | }, | 123 | }, |
124 | lockFerdi: { | ||
125 | id: 'menu.view.lockFerdi', | ||
126 | defaultMessage: '!!!Lock Ferdi', | ||
127 | }, | ||
124 | minimize: { | 128 | minimize: { |
125 | id: 'menu.window.minimize', | 129 | id: 'menu.window.minimize', |
126 | defaultMessage: '!!!Minimize', | 130 | defaultMessage: '!!!Minimize', |
@@ -659,6 +663,7 @@ export default class FranzMenu { | |||
659 | 663 | ||
660 | const { intl } = window.ferdi; | 664 | const { intl } = window.ferdi; |
661 | const tpl = isMac ? _templateFactory(intl) : _titleBarTemplateFactory(intl); | 665 | const tpl = isMac ? _templateFactory(intl) : _titleBarTemplateFactory(intl); |
666 | const { actions } = this; | ||
662 | 667 | ||
663 | tpl[1].submenu.push({ | 668 | tpl[1].submenu.push({ |
664 | type: 'separator', | 669 | type: 'separator', |
@@ -706,6 +711,20 @@ export default class FranzMenu { | |||
706 | click: () => { | 711 | click: () => { |
707 | window.location.reload(); | 712 | window.location.reload(); |
708 | }, | 713 | }, |
714 | }, { | ||
715 | type: 'separator', | ||
716 | }, { | ||
717 | label: intl.formatMessage(menuItems.lockFerdi), | ||
718 | accelerator: 'CmdOrCtrl+Shift+L', | ||
719 | enabled: this.stores.settings.app.lockingFeatureEnabled, | ||
720 | click() { | ||
721 | actions.settings.update({ | ||
722 | type: 'app', | ||
723 | data: { | ||
724 | locked: true, | ||
725 | }, | ||
726 | }); | ||
727 | }, | ||
709 | }); | 728 | }); |
710 | 729 | ||
711 | tpl.unshift({ | 730 | tpl.unshift({ |
diff --git a/src/stores/SettingsStore.js b/src/stores/SettingsStore.js index 2975499b3..f6a53f147 100644 --- a/src/stores/SettingsStore.js +++ b/src/stores/SettingsStore.js | |||
@@ -62,6 +62,34 @@ export default class SettingsStore extends Store { | |||
62 | this.all.app.autohideMenuBar, | 62 | this.all.app.autohideMenuBar, |
63 | ), | 63 | ), |
64 | ); | 64 | ); |
65 | |||
66 | reaction( | ||
67 | () => this.all.app.locked, | ||
68 | () => { | ||
69 | const { router } = window.ferdi.stores; | ||
70 | |||
71 | if (this.all.app.locked && this.all.app.lockingFeatureEnabled) { | ||
72 | // App just got locked, redirect to unlock screen | ||
73 | router.push('/auth/locked'); | ||
74 | } else if (router.location.pathname.includes('/auth/locked')) { | ||
75 | // App is unlocked but user is still on locked screen | ||
76 | // Redirect to homepage | ||
77 | router.push('/'); | ||
78 | } | ||
79 | }, | ||
80 | ); | ||
81 | |||
82 | // Make sure to lock app on launch if locking feature is enabled | ||
83 | setTimeout(() => { | ||
84 | if (this.all.app.lockingFeatureEnabled) { | ||
85 | this.actions.settings.update({ | ||
86 | type: 'app', | ||
87 | data: { | ||
88 | locked: true, | ||
89 | }, | ||
90 | }); | ||
91 | } | ||
92 | }, 1000); | ||
65 | } | 93 | } |
66 | 94 | ||
67 | @computed get app() { | 95 | @computed get app() { |