aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Vijay Raghavan Aravamudhan <vraravam@users.noreply.github.com>2021-06-17 14:17:37 +0000
committerLibravatar GitHub <noreply@github.com>2021-06-17 19:47:37 +0530
commita8253a9f6e5cd30760c3fcbf05767e7276b191c1 (patch)
tree32bd59f5ce3df73b91ed50728cf6a3d339e9b2e2
parentRun ALL builds if no OSes were chosen (manual trigger) (#1529) (diff)
downloadferdi-a8253a9f6e5cd30760c3fcbf05767e7276b191c1.tar.gz
ferdi-a8253a9f6e5cd30760c3fcbf05767e7276b191c1.tar.zst
ferdi-a8253a9f6e5cd30760c3fcbf05767e7276b191c1.zip
User agent as a user-preference (#1535)
Introduced a global and a service-specific 'user-agent' value that can be set by the user from the preference section. The global override is in Advanced, while the service override was moved to the bottom of the service editor form (and now occupies the full width of the form). Show 'restart reqd' prompt for user-agent setting. The order of the user-agent is the following: 1. Any request header overrides in the recipe will still override the user agent string. 2. If the user has set a user agent override for the service, use that. 3. If the recipe has a predefined user agent, use that. 4. If the user has set a global user agent override, use that. 5. Otherwise, use the user agent string corresponding to the underlying Electron version. If the current webpage is the Google login form, we still remove the Chrome version number from the user agent string. The value that would be used if no custom override is set (recipe-provided value or global override for the service, current Electron instance for the global override) is shown as a placeholder in the input box on the corresponding setting screen. Co-authored-by: Kristóf Marussy <kristof@marussy.com>
-rw-r--r--src/components/settings/services/EditServiceForm.js4
-rw-r--r--src/components/settings/settings/EditSettingsForm.js16
-rw-r--r--src/config.js1
-rw-r--r--src/containers/settings/EditServiceScreen.js5
-rw-r--r--src/containers/settings/EditSettingsScreen.js8
-rw-r--r--src/i18n/globalMessages.js4
-rw-r--r--src/i18n/locales/defaultMessages.json197
-rw-r--r--src/i18n/locales/en-US.json1
-rw-r--r--src/i18n/messages/src/components/settings/settings/EditSettingsForm.json2
-rw-r--r--src/i18n/messages/src/containers/settings/EditSettingsScreen.json180
-rw-r--r--src/i18n/messages/src/i18n/globalMessages.json17
-rw-r--r--src/models/Service.js18
-rw-r--r--src/models/UserAgent.js35
-rw-r--r--src/stores/ServicesStore.js1
-rw-r--r--src/stores/SettingsStore.js16
-rw-r--r--src/styles/settings.scss3
16 files changed, 316 insertions, 192 deletions
diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js
index 025a667d..1bbc1f1d 100644
--- a/src/components/settings/services/EditServiceForm.js
+++ b/src/components/settings/services/EditServiceForm.js
@@ -454,6 +454,10 @@ export default @observer class EditServiceForm extends Component {
454 </div> 454 </div>
455 </PremiumFeatureContainer> 455 </PremiumFeatureContainer>
456 )} 456 )}
457
458 <div className="user-agent">
459 <Input field={form.$('userAgentPref')} />
460 </div>
457 </form> 461 </form>
458 462
459 {action === 'edit' && ( 463 {action === 'edit' && (
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js
index b7e00718..d31bb893 100644
--- a/src/components/settings/settings/EditSettingsForm.js
+++ b/src/components/settings/settings/EditSettingsForm.js
@@ -141,7 +141,7 @@ const messages = defineMessages({
141 id: 'settings.app.currentVersion', 141 id: 'settings.app.currentVersion',
142 defaultMessage: '!!!Current version:', 142 defaultMessage: '!!!Current version:',
143 }, 143 },
144 enableGPUAccelerationInfo: { 144 appRestartRequired: {
145 id: 'settings.app.restartRequired', 145 id: 'settings.app.restartRequired',
146 defaultMessage: '!!!Changes require restart', 146 defaultMessage: '!!!Changes require restart',
147 }, 147 },
@@ -596,7 +596,19 @@ export default @observer class EditSettingsForm extends Component {
596 { this.state.activeSetttingsTab === 'advanced' && ( 596 { this.state.activeSetttingsTab === 'advanced' && (
597 <div> 597 <div>
598 <Toggle field={form.$('enableGPUAcceleration')} /> 598 <Toggle field={form.$('enableGPUAcceleration')} />
599 <p className="settings__help">{intl.formatMessage(messages.enableGPUAccelerationInfo)}</p> 599 <p className="settings__help">{intl.formatMessage(messages.appRestartRequired)}</p>
600
601 <Hr />
602
603 <Input
604 placeholder="User Agent"
605 onChange={e => this.submit(e)}
606 field={form.$('userAgentPref')}
607 />
608 <p className="settings__help">{intl.formatMessage(messages.appRestartRequired)}</p>
609
610 <Hr />
611
600 <div className="settings__settings-group"> 612 <div className="settings__settings-group">
601 <h3> 613 <h3>
602 {intl.formatMessage(messages.subheadlineCache)} 614 {intl.formatMessage(messages.subheadlineCache)}
diff --git a/src/config.js b/src/config.js
index c85228d0..27ac6be0 100644
--- a/src/config.js
+++ b/src/config.js
@@ -164,6 +164,7 @@ export const DEFAULT_APP_SETTINGS = {
164 automaticUpdates: true, 164 automaticUpdates: true,
165 showServiceNavigationBar: false, 165 showServiceNavigationBar: false,
166 universalDarkMode: true, 166 universalDarkMode: true,
167 userAgentPref: '',
167 adaptableDarkMode: true, 168 adaptableDarkMode: true,
168 accentColor: DEFAULT_ACCENT_COLOR, 169 accentColor: DEFAULT_ACCENT_COLOR,
169 serviceRibbonWidth: 68, 170 serviceRibbonWidth: 68,
diff --git a/src/containers/settings/EditServiceScreen.js b/src/containers/settings/EditServiceScreen.js
index 9a200d73..77548bdc 100644
--- a/src/containers/settings/EditServiceScreen.js
+++ b/src/containers/settings/EditServiceScreen.js
@@ -219,6 +219,11 @@ export default @inject('stores', 'actions') @observer class EditServiceScreen ex
219 options: spellcheckerLanguage, 219 options: spellcheckerLanguage,
220 disabled: !stores.settings.app.enableSpellchecking, 220 disabled: !stores.settings.app.enableSpellchecking,
221 }, 221 },
222 userAgentPref: {
223 label: intl.formatMessage(globalMessages.userAgentPref),
224 placeholder: service.defaultUserAgent,
225 value: service.userAgentPref ? service.userAgentPref : '',
226 },
222 }, 227 },
223 }; 228 };
224 229
diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js
index a5dc427b..2b2d7277 100644
--- a/src/containers/settings/EditSettingsScreen.js
+++ b/src/containers/settings/EditSettingsScreen.js
@@ -18,6 +18,7 @@ import { config as spellcheckerConfig } from '../../features/spellchecker';
18 18
19import { getSelectOptions } from '../../helpers/i18n-helpers'; 19import { getSelectOptions } from '../../helpers/i18n-helpers';
20import { hash } from '../../helpers/password-helpers'; 20import { hash } from '../../helpers/password-helpers';
21import defaultUserAgent from '../../helpers/userAgent-helpers';
21 22
22import EditSettingsForm from '../../components/settings/settings/EditSettingsForm'; 23import EditSettingsForm from '../../components/settings/settings/EditSettingsForm';
23import ErrorBoundary from '../../components/util/ErrorBoundary'; 24import ErrorBoundary from '../../components/util/ErrorBoundary';
@@ -283,6 +284,7 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e
283 showDragArea: settingsData.showDragArea, 284 showDragArea: settingsData.showDragArea,
284 enableSpellchecking: settingsData.enableSpellchecking, 285 enableSpellchecking: settingsData.enableSpellchecking,
285 spellcheckerLanguage: settingsData.spellcheckerLanguage, 286 spellcheckerLanguage: settingsData.spellcheckerLanguage,
287 userAgentPref: settingsData.userAgentPref,
286 beta: settingsData.beta, // we need this info in the main process as well 288 beta: settingsData.beta, // we need this info in the main process as well
287 automaticUpdates: settingsData.automaticUpdates, // we need this info in the main process as well 289 automaticUpdates: settingsData.automaticUpdates, // we need this info in the main process as well
288 locale: settingsData.locale, // we need this info in the main process as well 290 locale: settingsData.locale, // we need this info in the main process as well
@@ -524,6 +526,12 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e
524 options: spellcheckingLanguages, 526 options: spellcheckingLanguages,
525 default: DEFAULT_APP_SETTINGS.spellcheckerLanguage, 527 default: DEFAULT_APP_SETTINGS.spellcheckerLanguage,
526 }, 528 },
529 userAgentPref: {
530 label: intl.formatMessage(globalMessages.userAgentPref),
531 value: settings.all.app.userAgentPref,
532 default: DEFAULT_APP_SETTINGS.userAgentPref,
533 placeholder: defaultUserAgent(),
534 },
527 darkMode: { 535 darkMode: {
528 label: intl.formatMessage(messages.darkMode), 536 label: intl.formatMessage(messages.darkMode),
529 value: settings.all.app.darkMode, 537 value: settings.all.app.darkMode,
diff --git a/src/i18n/globalMessages.js b/src/i18n/globalMessages.js
index 86fb9e18..cc123919 100644
--- a/src/i18n/globalMessages.js
+++ b/src/i18n/globalMessages.js
@@ -25,6 +25,10 @@ export default defineMessages({
25 id: 'global.spellchecking.autodetect.short', 25 id: 'global.spellchecking.autodetect.short',
26 defaultMessage: '!!!Automatic', 26 defaultMessage: '!!!Automatic',
27 }, 27 },
28 userAgentPref: {
29 id: 'global.userAgentPref',
30 defaultMessage: '!!!User Agent',
31 },
28 proRequired: { 32 proRequired: {
29 id: 'global.franzProRequired', 33 id: 'global.franzProRequired',
30 defaultMessage: '!!!Franz Professional Required', 34 defaultMessage: '!!!Franz Professional Required',
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json
index b8ea986c..5fd5d6ff 100644
--- a/src/i18n/locales/defaultMessages.json
+++ b/src/i18n/locales/defaultMessages.json
@@ -4902,585 +4902,585 @@
4902 "defaultMessage": "!!!Launch Ferdi on start", 4902 "defaultMessage": "!!!Launch Ferdi on start",
4903 "end": { 4903 "end": {
4904 "column": 3, 4904 "column": 3,
4905 "line": 34 4905 "line": 35
4906 }, 4906 },
4907 "file": "src/containers/settings/EditSettingsScreen.js", 4907 "file": "src/containers/settings/EditSettingsScreen.js",
4908 "id": "settings.app.form.autoLaunchOnStart", 4908 "id": "settings.app.form.autoLaunchOnStart",
4909 "start": { 4909 "start": {
4910 "column": 21, 4910 "column": 21,
4911 "line": 31 4911 "line": 32
4912 } 4912 }
4913 }, 4913 },
4914 { 4914 {
4915 "defaultMessage": "!!!Open in background", 4915 "defaultMessage": "!!!Open in background",
4916 "end": { 4916 "end": {
4917 "column": 3, 4917 "column": 3,
4918 "line": 38 4918 "line": 39
4919 }, 4919 },
4920 "file": "src/containers/settings/EditSettingsScreen.js", 4920 "file": "src/containers/settings/EditSettingsScreen.js",
4921 "id": "settings.app.form.autoLaunchInBackground", 4921 "id": "settings.app.form.autoLaunchInBackground",
4922 "start": { 4922 "start": {
4923 "column": 26, 4923 "column": 26,
4924 "line": 35 4924 "line": 36
4925 } 4925 }
4926 }, 4926 },
4927 { 4927 {
4928 "defaultMessage": "!!!Keep Ferdi in background when closing the window", 4928 "defaultMessage": "!!!Keep Ferdi in background when closing the window",
4929 "end": { 4929 "end": {
4930 "column": 3, 4930 "column": 3,
4931 "line": 42 4931 "line": 43
4932 }, 4932 },
4933 "file": "src/containers/settings/EditSettingsScreen.js", 4933 "file": "src/containers/settings/EditSettingsScreen.js",
4934 "id": "settings.app.form.runInBackground", 4934 "id": "settings.app.form.runInBackground",
4935 "start": { 4935 "start": {
4936 "column": 19, 4936 "column": 19,
4937 "line": 39 4937 "line": 40
4938 } 4938 }
4939 }, 4939 },
4940 { 4940 {
4941 "defaultMessage": "!!!Start minimized", 4941 "defaultMessage": "!!!Start minimized",
4942 "end": { 4942 "end": {
4943 "column": 3, 4943 "column": 3,
4944 "line": 46 4944 "line": 47
4945 }, 4945 },
4946 "file": "src/containers/settings/EditSettingsScreen.js", 4946 "file": "src/containers/settings/EditSettingsScreen.js",
4947 "id": "settings.app.form.startMinimized", 4947 "id": "settings.app.form.startMinimized",
4948 "start": { 4948 "start": {
4949 "column": 18, 4949 "column": 18,
4950 "line": 43 4950 "line": 44
4951 } 4951 }
4952 }, 4952 },
4953 { 4953 {
4954 "defaultMessage": "!!!Always show Ferdi in System Tray", 4954 "defaultMessage": "!!!Always show Ferdi in System Tray",
4955 "end": { 4955 "end": {
4956 "column": 3, 4956 "column": 3,
4957 "line": 50 4957 "line": 51
4958 }, 4958 },
4959 "file": "src/containers/settings/EditSettingsScreen.js", 4959 "file": "src/containers/settings/EditSettingsScreen.js",
4960 "id": "settings.app.form.enableSystemTray", 4960 "id": "settings.app.form.enableSystemTray",
4961 "start": { 4961 "start": {
4962 "column": 20, 4962 "column": 20,
4963 "line": 47 4963 "line": 48
4964 } 4964 }
4965 }, 4965 },
4966 { 4966 {
4967 "defaultMessage": "!!!Always show Ferdi in Menu Bar", 4967 "defaultMessage": "!!!Always show Ferdi in Menu Bar",
4968 "end": { 4968 "end": {
4969 "column": 3, 4969 "column": 3,
4970 "line": 54 4970 "line": 55
4971 }, 4971 },
4972 "file": "src/containers/settings/EditSettingsScreen.js", 4972 "file": "src/containers/settings/EditSettingsScreen.js",
4973 "id": "settings.app.form.enableMenuBar", 4973 "id": "settings.app.form.enableMenuBar",
4974 "start": { 4974 "start": {
4975 "column": 17, 4975 "column": 17,
4976 "line": 51 4976 "line": 52
4977 } 4977 }
4978 }, 4978 },
4979 { 4979 {
4980 "defaultMessage": "!!!Reload Ferdi after system resume", 4980 "defaultMessage": "!!!Reload Ferdi after system resume",
4981 "end": { 4981 "end": {
4982 "column": 3, 4982 "column": 3,
4983 "line": 58 4983 "line": 59
4984 }, 4984 },
4985 "file": "src/containers/settings/EditSettingsScreen.js", 4985 "file": "src/containers/settings/EditSettingsScreen.js",
4986 "id": "settings.app.form.reloadAfterResume", 4986 "id": "settings.app.form.reloadAfterResume",
4987 "start": { 4987 "start": {
4988 "column": 21, 4988 "column": 21,
4989 "line": 55 4989 "line": 56
4990 } 4990 }
4991 }, 4991 },
4992 { 4992 {
4993 "defaultMessage": "!!!Minimize Ferdi to system tray", 4993 "defaultMessage": "!!!Minimize Ferdi to system tray",
4994 "end": { 4994 "end": {
4995 "column": 3, 4995 "column": 3,
4996 "line": 62 4996 "line": 63
4997 }, 4997 },
4998 "file": "src/containers/settings/EditSettingsScreen.js", 4998 "file": "src/containers/settings/EditSettingsScreen.js",
4999 "id": "settings.app.form.minimizeToSystemTray", 4999 "id": "settings.app.form.minimizeToSystemTray",
5000 "start": { 5000 "start": {
5001 "column": 24, 5001 "column": 24,
5002 "line": 59 5002 "line": 60
5003 } 5003 }
5004 }, 5004 },
5005 { 5005 {
5006 "defaultMessage": "!!!Close Ferdi to system tray", 5006 "defaultMessage": "!!!Close Ferdi to system tray",
5007 "end": { 5007 "end": {
5008 "column": 3, 5008 "column": 3,
5009 "line": 66 5009 "line": 67
5010 }, 5010 },
5011 "file": "src/containers/settings/EditSettingsScreen.js", 5011 "file": "src/containers/settings/EditSettingsScreen.js",
5012 "id": "settings.app.form.closeToSystemTray", 5012 "id": "settings.app.form.closeToSystemTray",
5013 "start": { 5013 "start": {
5014 "column": 21, 5014 "column": 21,
5015 "line": 63 5015 "line": 64
5016 } 5016 }
5017 }, 5017 },
5018 { 5018 {
5019 "defaultMessage": "!!!Don't show message content in notifications", 5019 "defaultMessage": "!!!Don't show message content in notifications",
5020 "end": { 5020 "end": {
5021 "column": 3, 5021 "column": 3,
5022 "line": 70 5022 "line": 71
5023 }, 5023 },
5024 "file": "src/containers/settings/EditSettingsScreen.js", 5024 "file": "src/containers/settings/EditSettingsScreen.js",
5025 "id": "settings.app.form.privateNotifications", 5025 "id": "settings.app.form.privateNotifications",
5026 "start": { 5026 "start": {
5027 "column": 24, 5027 "column": 24,
5028 "line": 67 5028 "line": 68
5029 } 5029 }
5030 }, 5030 },
5031 { 5031 {
5032 "defaultMessage": "!!!Don't show notifications for clipboard events", 5032 "defaultMessage": "!!!Don't show notifications for clipboard events",
5033 "end": { 5033 "end": {
5034 "column": 3, 5034 "column": 3,
5035 "line": 74 5035 "line": 75
5036 }, 5036 },
5037 "file": "src/containers/settings/EditSettingsScreen.js", 5037 "file": "src/containers/settings/EditSettingsScreen.js",
5038 "id": "settings.app.form.clipboardNotifications", 5038 "id": "settings.app.form.clipboardNotifications",
5039 "start": { 5039 "start": {
5040 "column": 26, 5040 "column": 26,
5041 "line": 71 5041 "line": 72
5042 } 5042 }
5043 }, 5043 },
5044 { 5044 {
5045 "defaultMessage": "!!!Notify TaskBar/Dock on new message", 5045 "defaultMessage": "!!!Notify TaskBar/Dock on new message",
5046 "end": { 5046 "end": {
5047 "column": 3, 5047 "column": 3,
5048 "line": 78 5048 "line": 79
5049 }, 5049 },
5050 "file": "src/containers/settings/EditSettingsScreen.js", 5050 "file": "src/containers/settings/EditSettingsScreen.js",
5051 "id": "settings.app.form.notifyTaskBarOnMessage", 5051 "id": "settings.app.form.notifyTaskBarOnMessage",
5052 "start": { 5052 "start": {
5053 "column": 26, 5053 "column": 26,
5054 "line": 75 5054 "line": 76
5055 } 5055 }
5056 }, 5056 },
5057 { 5057 {
5058 "defaultMessage": "!!!Navigation bar behaviour", 5058 "defaultMessage": "!!!Navigation bar behaviour",
5059 "end": { 5059 "end": {
5060 "column": 3, 5060 "column": 3,
5061 "line": 82 5061 "line": 83
5062 }, 5062 },
5063 "file": "src/containers/settings/EditSettingsScreen.js", 5063 "file": "src/containers/settings/EditSettingsScreen.js",
5064 "id": "settings.app.form.navigationBarBehaviour", 5064 "id": "settings.app.form.navigationBarBehaviour",
5065 "start": { 5065 "start": {
5066 "column": 26, 5066 "column": 26,
5067 "line": 79 5067 "line": 80
5068 } 5068 }
5069 }, 5069 },
5070 { 5070 {
5071 "defaultMessage": "!!!Search engine", 5071 "defaultMessage": "!!!Search engine",
5072 "end": { 5072 "end": {
5073 "column": 3, 5073 "column": 3,
5074 "line": 86 5074 "line": 87
5075 }, 5075 },
5076 "file": "src/containers/settings/EditSettingsScreen.js", 5076 "file": "src/containers/settings/EditSettingsScreen.js",
5077 "id": "settings.app.form.searchEngine", 5077 "id": "settings.app.form.searchEngine",
5078 "start": { 5078 "start": {
5079 "column": 16, 5079 "column": 16,
5080 "line": 83 5080 "line": 84
5081 } 5081 }
5082 }, 5082 },
5083 { 5083 {
5084 "defaultMessage": "!!!Send telemetry data", 5084 "defaultMessage": "!!!Send telemetry data",
5085 "end": { 5085 "end": {
5086 "column": 3, 5086 "column": 3,
5087 "line": 90 5087 "line": 91
5088 }, 5088 },
5089 "file": "src/containers/settings/EditSettingsScreen.js", 5089 "file": "src/containers/settings/EditSettingsScreen.js",
5090 "id": "settings.app.form.sentry", 5090 "id": "settings.app.form.sentry",
5091 "start": { 5091 "start": {
5092 "column": 10, 5092 "column": 10,
5093 "line": 87 5093 "line": 88
5094 } 5094 }
5095 }, 5095 },
5096 { 5096 {
5097 "defaultMessage": "!!!Enable service hibernation", 5097 "defaultMessage": "!!!Enable service hibernation",
5098 "end": { 5098 "end": {
5099 "column": 3, 5099 "column": 3,
5100 "line": 94 5100 "line": 95
5101 }, 5101 },
5102 "file": "src/containers/settings/EditSettingsScreen.js", 5102 "file": "src/containers/settings/EditSettingsScreen.js",
5103 "id": "settings.app.form.hibernate", 5103 "id": "settings.app.form.hibernate",
5104 "start": { 5104 "start": {
5105 "column": 13, 5105 "column": 13,
5106 "line": 91 5106 "line": 92
5107 } 5107 }
5108 }, 5108 },
5109 { 5109 {
5110 "defaultMessage": "!!!Keep services in hibernation on startup", 5110 "defaultMessage": "!!!Keep services in hibernation on startup",
5111 "end": { 5111 "end": {
5112 "column": 3, 5112 "column": 3,
5113 "line": 98 5113 "line": 99
5114 }, 5114 },
5115 "file": "src/containers/settings/EditSettingsScreen.js", 5115 "file": "src/containers/settings/EditSettingsScreen.js",
5116 "id": "settings.app.form.hibernateOnStartup", 5116 "id": "settings.app.form.hibernateOnStartup",
5117 "start": { 5117 "start": {
5118 "column": 22, 5118 "column": 22,
5119 "line": 95 5119 "line": 96
5120 } 5120 }
5121 }, 5121 },
5122 { 5122 {
5123 "defaultMessage": "!!!Hibernation strategy", 5123 "defaultMessage": "!!!Hibernation strategy",
5124 "end": { 5124 "end": {
5125 "column": 3, 5125 "column": 3,
5126 "line": 102 5126 "line": 103
5127 }, 5127 },
5128 "file": "src/containers/settings/EditSettingsScreen.js", 5128 "file": "src/containers/settings/EditSettingsScreen.js",
5129 "id": "settings.app.form.hibernationStrategy", 5129 "id": "settings.app.form.hibernationStrategy",
5130 "start": { 5130 "start": {
5131 "column": 23, 5131 "column": 23,
5132 "line": 99 5132 "line": 100
5133 } 5133 }
5134 }, 5134 },
5135 { 5135 {
5136 "defaultMessage": "!!!Todo Server", 5136 "defaultMessage": "!!!Todo Server",
5137 "end": { 5137 "end": {
5138 "column": 3, 5138 "column": 3,
5139 "line": 106 5139 "line": 107
5140 }, 5140 },
5141 "file": "src/containers/settings/EditSettingsScreen.js", 5141 "file": "src/containers/settings/EditSettingsScreen.js",
5142 "id": "settings.app.form.predefinedTodoServer", 5142 "id": "settings.app.form.predefinedTodoServer",
5143 "start": { 5143 "start": {
5144 "column": 24, 5144 "column": 24,
5145 "line": 103 5145 "line": 104
5146 } 5146 }
5147 }, 5147 },
5148 { 5148 {
5149 "defaultMessage": "!!!Custom TodoServer", 5149 "defaultMessage": "!!!Custom TodoServer",
5150 "end": { 5150 "end": {
5151 "column": 3, 5151 "column": 3,
5152 "line": 110 5152 "line": 111
5153 }, 5153 },
5154 "file": "src/containers/settings/EditSettingsScreen.js", 5154 "file": "src/containers/settings/EditSettingsScreen.js",
5155 "id": "settings.app.form.customTodoServer", 5155 "id": "settings.app.form.customTodoServer",
5156 "start": { 5156 "start": {
5157 "column": 20, 5157 "column": 20,
5158 "line": 107 5158 "line": 108
5159 } 5159 }
5160 }, 5160 },
5161 { 5161 {
5162 "defaultMessage": "!!!Enable Password Lock", 5162 "defaultMessage": "!!!Enable Password Lock",
5163 "end": { 5163 "end": {
5164 "column": 3, 5164 "column": 3,
5165 "line": 114 5165 "line": 115
5166 }, 5166 },
5167 "file": "src/containers/settings/EditSettingsScreen.js", 5167 "file": "src/containers/settings/EditSettingsScreen.js",
5168 "id": "settings.app.form.enableLock", 5168 "id": "settings.app.form.enableLock",
5169 "start": { 5169 "start": {
5170 "column": 14, 5170 "column": 14,
5171 "line": 111 5171 "line": 112
5172 } 5172 }
5173 }, 5173 },
5174 { 5174 {
5175 "defaultMessage": "!!!Password", 5175 "defaultMessage": "!!!Password",
5176 "end": { 5176 "end": {
5177 "column": 3, 5177 "column": 3,
5178 "line": 118 5178 "line": 119
5179 }, 5179 },
5180 "file": "src/containers/settings/EditSettingsScreen.js", 5180 "file": "src/containers/settings/EditSettingsScreen.js",
5181 "id": "settings.app.form.lockPassword", 5181 "id": "settings.app.form.lockPassword",
5182 "start": { 5182 "start": {
5183 "column": 16, 5183 "column": 16,
5184 "line": 115 5184 "line": 116
5185 } 5185 }
5186 }, 5186 },
5187 { 5187 {
5188 "defaultMessage": "!!!Allow using Touch ID to unlock", 5188 "defaultMessage": "!!!Allow using Touch ID to unlock",
5189 "end": { 5189 "end": {
5190 "column": 3, 5190 "column": 3,
5191 "line": 122 5191 "line": 123
5192 }, 5192 },
5193 "file": "src/containers/settings/EditSettingsScreen.js", 5193 "file": "src/containers/settings/EditSettingsScreen.js",
5194 "id": "settings.app.form.useTouchIdToUnlock", 5194 "id": "settings.app.form.useTouchIdToUnlock",
5195 "start": { 5195 "start": {
5196 "column": 22, 5196 "column": 22,
5197 "line": 119 5197 "line": 120
5198 } 5198 }
5199 }, 5199 },
5200 { 5200 {
5201 "defaultMessage": "!!!Lock after inactivity", 5201 "defaultMessage": "!!!Lock after inactivity",
5202 "end": { 5202 "end": {
5203 "column": 3, 5203 "column": 3,
5204 "line": 126 5204 "line": 127
5205 }, 5205 },
5206 "file": "src/containers/settings/EditSettingsScreen.js", 5206 "file": "src/containers/settings/EditSettingsScreen.js",
5207 "id": "settings.app.form.inactivityLock", 5207 "id": "settings.app.form.inactivityLock",
5208 "start": { 5208 "start": {
5209 "column": 18, 5209 "column": 18,
5210 "line": 123 5210 "line": 124
5211 } 5211 }
5212 }, 5212 },
5213 { 5213 {
5214 "defaultMessage": "!!!Enable scheduled Do-not-Disturb", 5214 "defaultMessage": "!!!Enable scheduled Do-not-Disturb",
5215 "end": { 5215 "end": {
5216 "column": 3, 5216 "column": 3,
5217 "line": 130 5217 "line": 131
5218 }, 5218 },
5219 "file": "src/containers/settings/EditSettingsScreen.js", 5219 "file": "src/containers/settings/EditSettingsScreen.js",
5220 "id": "settings.app.form.scheduledDNDEnabled", 5220 "id": "settings.app.form.scheduledDNDEnabled",
5221 "start": { 5221 "start": {
5222 "column": 23, 5222 "column": 23,
5223 "line": 127 5223 "line": 128
5224 } 5224 }
5225 }, 5225 },
5226 { 5226 {
5227 "defaultMessage": "!!!From", 5227 "defaultMessage": "!!!From",
5228 "end": { 5228 "end": {
5229 "column": 3, 5229 "column": 3,
5230 "line": 134 5230 "line": 135
5231 }, 5231 },
5232 "file": "src/containers/settings/EditSettingsScreen.js", 5232 "file": "src/containers/settings/EditSettingsScreen.js",
5233 "id": "settings.app.form.scheduledDNDStart", 5233 "id": "settings.app.form.scheduledDNDStart",
5234 "start": { 5234 "start": {
5235 "column": 21, 5235 "column": 21,
5236 "line": 131 5236 "line": 132
5237 } 5237 }
5238 }, 5238 },
5239 { 5239 {
5240 "defaultMessage": "!!!To", 5240 "defaultMessage": "!!!To",
5241 "end": { 5241 "end": {
5242 "column": 3, 5242 "column": 3,
5243 "line": 138 5243 "line": 139
5244 }, 5244 },
5245 "file": "src/containers/settings/EditSettingsScreen.js", 5245 "file": "src/containers/settings/EditSettingsScreen.js",
5246 "id": "settings.app.form.scheduledDNDEnd", 5246 "id": "settings.app.form.scheduledDNDEnd",
5247 "start": { 5247 "start": {
5248 "column": 19, 5248 "column": 19,
5249 "line": 135 5249 "line": 136
5250 } 5250 }
5251 }, 5251 },
5252 { 5252 {
5253 "defaultMessage": "!!!Language", 5253 "defaultMessage": "!!!Language",
5254 "end": { 5254 "end": {
5255 "column": 3, 5255 "column": 3,
5256 "line": 142 5256 "line": 143
5257 }, 5257 },
5258 "file": "src/containers/settings/EditSettingsScreen.js", 5258 "file": "src/containers/settings/EditSettingsScreen.js",
5259 "id": "settings.app.form.language", 5259 "id": "settings.app.form.language",
5260 "start": { 5260 "start": {
5261 "column": 12, 5261 "column": 12,
5262 "line": 139 5262 "line": 140
5263 } 5263 }
5264 }, 5264 },
5265 { 5265 {
5266 "defaultMessage": "!!!Dark Mode", 5266 "defaultMessage": "!!!Dark Mode",
5267 "end": { 5267 "end": {
5268 "column": 3, 5268 "column": 3,
5269 "line": 146 5269 "line": 147
5270 }, 5270 },
5271 "file": "src/containers/settings/EditSettingsScreen.js", 5271 "file": "src/containers/settings/EditSettingsScreen.js",
5272 "id": "settings.app.form.darkMode", 5272 "id": "settings.app.form.darkMode",
5273 "start": { 5273 "start": {
5274 "column": 12, 5274 "column": 12,
5275 "line": 143 5275 "line": 144
5276 } 5276 }
5277 }, 5277 },
5278 { 5278 {
5279 "defaultMessage": "!!!Synchronize dark mode with my OS's dark mode setting", 5279 "defaultMessage": "!!!Synchronize dark mode with my OS's dark mode setting",
5280 "end": { 5280 "end": {
5281 "column": 3, 5281 "column": 3,
5282 "line": 150 5282 "line": 151
5283 }, 5283 },
5284 "file": "src/containers/settings/EditSettingsScreen.js", 5284 "file": "src/containers/settings/EditSettingsScreen.js",
5285 "id": "settings.app.form.adaptableDarkMode", 5285 "id": "settings.app.form.adaptableDarkMode",
5286 "start": { 5286 "start": {
5287 "column": 21, 5287 "column": 21,
5288 "line": 147 5288 "line": 148
5289 } 5289 }
5290 }, 5290 },
5291 { 5291 {
5292 "defaultMessage": "!!!Enable universal Dark Mode", 5292 "defaultMessage": "!!!Enable universal Dark Mode",
5293 "end": { 5293 "end": {
5294 "column": 3, 5294 "column": 3,
5295 "line": 154 5295 "line": 155
5296 }, 5296 },
5297 "file": "src/containers/settings/EditSettingsScreen.js", 5297 "file": "src/containers/settings/EditSettingsScreen.js",
5298 "id": "settings.app.form.universalDarkMode", 5298 "id": "settings.app.form.universalDarkMode",
5299 "start": { 5299 "start": {
5300 "column": 21, 5300 "column": 21,
5301 "line": 151 5301 "line": 152
5302 } 5302 }
5303 }, 5303 },
5304 { 5304 {
5305 "defaultMessage": "!!!Sidebar width", 5305 "defaultMessage": "!!!Sidebar width",
5306 "end": { 5306 "end": {
5307 "column": 3, 5307 "column": 3,
5308 "line": 158 5308 "line": 159
5309 }, 5309 },
5310 "file": "src/containers/settings/EditSettingsScreen.js", 5310 "file": "src/containers/settings/EditSettingsScreen.js",
5311 "id": "settings.app.form.serviceRibbonWidth", 5311 "id": "settings.app.form.serviceRibbonWidth",
5312 "start": { 5312 "start": {
5313 "column": 22, 5313 "column": 22,
5314 "line": 155 5314 "line": 156
5315 } 5315 }
5316 }, 5316 },
5317 { 5317 {
5318 "defaultMessage": "!!!Service icon size", 5318 "defaultMessage": "!!!Service icon size",
5319 "end": { 5319 "end": {
5320 "column": 3, 5320 "column": 3,
5321 "line": 162 5321 "line": 163
5322 }, 5322 },
5323 "file": "src/containers/settings/EditSettingsScreen.js", 5323 "file": "src/containers/settings/EditSettingsScreen.js",
5324 "id": "settings.app.form.iconSize", 5324 "id": "settings.app.form.iconSize",
5325 "start": { 5325 "start": {
5326 "column": 12, 5326 "column": 12,
5327 "line": 159 5327 "line": 160
5328 } 5328 }
5329 }, 5329 },
5330 { 5330 {
5331 "defaultMessage": "!!!Use vertical style", 5331 "defaultMessage": "!!!Use vertical style",
5332 "end": { 5332 "end": {
5333 "column": 3, 5333 "column": 3,
5334 "line": 166 5334 "line": 167
5335 }, 5335 },
5336 "file": "src/containers/settings/EditSettingsScreen.js", 5336 "file": "src/containers/settings/EditSettingsScreen.js",
5337 "id": "settings.app.form.useVerticalStyle", 5337 "id": "settings.app.form.useVerticalStyle",
5338 "start": { 5338 "start": {
5339 "column": 20, 5339 "column": 20,
5340 "line": 163 5340 "line": 164
5341 } 5341 }
5342 }, 5342 },
5343 { 5343 {
5344 "defaultMessage": "!!!Always show workspace drawer", 5344 "defaultMessage": "!!!Always show workspace drawer",
5345 "end": { 5345 "end": {
5346 "column": 3, 5346 "column": 3,
5347 "line": 170 5347 "line": 171
5348 }, 5348 },
5349 "file": "src/containers/settings/EditSettingsScreen.js", 5349 "file": "src/containers/settings/EditSettingsScreen.js",
5350 "id": "settings.app.form.alwaysShowWorkspaces", 5350 "id": "settings.app.form.alwaysShowWorkspaces",
5351 "start": { 5351 "start": {
5352 "column": 24, 5352 "column": 24,
5353 "line": 167 5353 "line": 168
5354 } 5354 }
5355 }, 5355 },
5356 { 5356 {
5357 "defaultMessage": "!!!Accent color", 5357 "defaultMessage": "!!!Accent color",
5358 "end": { 5358 "end": {
5359 "column": 3, 5359 "column": 3,
5360 "line": 174 5360 "line": 175
5361 }, 5361 },
5362 "file": "src/containers/settings/EditSettingsScreen.js", 5362 "file": "src/containers/settings/EditSettingsScreen.js",
5363 "id": "settings.app.form.accentColor", 5363 "id": "settings.app.form.accentColor",
5364 "start": { 5364 "start": {
5365 "column": 15, 5365 "column": 15,
5366 "line": 171 5366 "line": 172
5367 } 5367 }
5368 }, 5368 },
5369 { 5369 {
5370 "defaultMessage": "!!!Display disabled services tabs", 5370 "defaultMessage": "!!!Display disabled services tabs",
5371 "end": { 5371 "end": {
5372 "column": 3, 5372 "column": 3,
5373 "line": 178 5373 "line": 179
5374 }, 5374 },
5375 "file": "src/containers/settings/EditSettingsScreen.js", 5375 "file": "src/containers/settings/EditSettingsScreen.js",
5376 "id": "settings.app.form.showDisabledServices", 5376 "id": "settings.app.form.showDisabledServices",
5377 "start": { 5377 "start": {
5378 "column": 24, 5378 "column": 24,
5379 "line": 175 5379 "line": 176
5380 } 5380 }
5381 }, 5381 },
5382 { 5382 {
5383 "defaultMessage": "!!!Show unread message badge when notifications are disabled", 5383 "defaultMessage": "!!!Show unread message badge when notifications are disabled",
5384 "end": { 5384 "end": {
5385 "column": 3, 5385 "column": 3,
5386 "line": 182 5386 "line": 183
5387 }, 5387 },
5388 "file": "src/containers/settings/EditSettingsScreen.js", 5388 "file": "src/containers/settings/EditSettingsScreen.js",
5389 "id": "settings.app.form.showMessagesBadgesWhenMuted", 5389 "id": "settings.app.form.showMessagesBadgesWhenMuted",
5390 "start": { 5390 "start": {
5391 "column": 29, 5391 "column": 29,
5392 "line": 179 5392 "line": 180
5393 } 5393 }
5394 }, 5394 },
5395 { 5395 {
5396 "defaultMessage": "!!!Show draggable area on window", 5396 "defaultMessage": "!!!Show draggable area on window",
5397 "end": { 5397 "end": {
5398 "column": 3, 5398 "column": 3,
5399 "line": 186 5399 "line": 187
5400 }, 5400 },
5401 "file": "src/containers/settings/EditSettingsScreen.js", 5401 "file": "src/containers/settings/EditSettingsScreen.js",
5402 "id": "settings.app.form.showDragArea", 5402 "id": "settings.app.form.showDragArea",
5403 "start": { 5403 "start": {
5404 "column": 16, 5404 "column": 16,
5405 "line": 183 5405 "line": 184
5406 } 5406 }
5407 }, 5407 },
5408 { 5408 {
5409 "defaultMessage": "!!!Enable spell checking", 5409 "defaultMessage": "!!!Enable spell checking",
5410 "end": { 5410 "end": {
5411 "column": 3, 5411 "column": 3,
5412 "line": 190 5412 "line": 191
5413 }, 5413 },
5414 "file": "src/containers/settings/EditSettingsScreen.js", 5414 "file": "src/containers/settings/EditSettingsScreen.js",
5415 "id": "settings.app.form.enableSpellchecking", 5415 "id": "settings.app.form.enableSpellchecking",
5416 "start": { 5416 "start": {
5417 "column": 23, 5417 "column": 23,
5418 "line": 187 5418 "line": 188
5419 } 5419 }
5420 }, 5420 },
5421 { 5421 {
5422 "defaultMessage": "!!!Enable GPU Acceleration", 5422 "defaultMessage": "!!!Enable GPU Acceleration",
5423 "end": { 5423 "end": {
5424 "column": 3, 5424 "column": 3,
5425 "line": 194 5425 "line": 195
5426 }, 5426 },
5427 "file": "src/containers/settings/EditSettingsScreen.js", 5427 "file": "src/containers/settings/EditSettingsScreen.js",
5428 "id": "settings.app.form.enableGPUAcceleration", 5428 "id": "settings.app.form.enableGPUAcceleration",
5429 "start": { 5429 "start": {
5430 "column": 25, 5430 "column": 25,
5431 "line": 191 5431 "line": 192
5432 } 5432 }
5433 }, 5433 },
5434 { 5434 {
5435 "defaultMessage": "!!!Include beta versions", 5435 "defaultMessage": "!!!Include beta versions",
5436 "end": { 5436 "end": {
5437 "column": 3, 5437 "column": 3,
5438 "line": 198 5438 "line": 199
5439 }, 5439 },
5440 "file": "src/containers/settings/EditSettingsScreen.js", 5440 "file": "src/containers/settings/EditSettingsScreen.js",
5441 "id": "settings.app.form.beta", 5441 "id": "settings.app.form.beta",
5442 "start": { 5442 "start": {
5443 "column": 8, 5443 "column": 8,
5444 "line": 195 5444 "line": 196
5445 } 5445 }
5446 }, 5446 },
5447 { 5447 {
5448 "defaultMessage": "!!!Enable updates", 5448 "defaultMessage": "!!!Enable updates",
5449 "end": { 5449 "end": {
5450 "column": 3, 5450 "column": 3,
5451 "line": 202 5451 "line": 203
5452 }, 5452 },
5453 "file": "src/containers/settings/EditSettingsScreen.js", 5453 "file": "src/containers/settings/EditSettingsScreen.js",
5454 "id": "settings.app.form.automaticUpdates", 5454 "id": "settings.app.form.automaticUpdates",
5455 "start": { 5455 "start": {
5456 "column": 20, 5456 "column": 20,
5457 "line": 199 5457 "line": 200
5458 } 5458 }
5459 }, 5459 },
5460 { 5460 {
5461 "defaultMessage": "!!!Enable Franz Todos", 5461 "defaultMessage": "!!!Enable Franz Todos",
5462 "end": { 5462 "end": {
5463 "column": 3, 5463 "column": 3,
5464 "line": 206 5464 "line": 207
5465 }, 5465 },
5466 "file": "src/containers/settings/EditSettingsScreen.js", 5466 "file": "src/containers/settings/EditSettingsScreen.js",
5467 "id": "settings.app.form.enableTodos", 5467 "id": "settings.app.form.enableTodos",
5468 "start": { 5468 "start": {
5469 "column": 15, 5469 "column": 15,
5470 "line": 203 5470 "line": 204
5471 } 5471 }
5472 }, 5472 },
5473 { 5473 {
5474 "defaultMessage": "!!!Keep all workspaces loaded", 5474 "defaultMessage": "!!!Keep all workspaces loaded",
5475 "end": { 5475 "end": {
5476 "column": 3, 5476 "column": 3,
5477 "line": 210 5477 "line": 211
5478 }, 5478 },
5479 "file": "src/containers/settings/EditSettingsScreen.js", 5479 "file": "src/containers/settings/EditSettingsScreen.js",
5480 "id": "settings.app.form.keepAllWorkspacesLoaded", 5480 "id": "settings.app.form.keepAllWorkspacesLoaded",
5481 "start": { 5481 "start": {
5482 "column": 27, 5482 "column": 27,
5483 "line": 207 5483 "line": 208
5484 } 5484 }
5485 } 5485 }
5486 ], 5486 ],
@@ -7345,16 +7345,29 @@
7345 } 7345 }
7346 }, 7346 },
7347 { 7347 {
7348 "defaultMessage": "!!!Franz Professional Required", 7348 "defaultMessage": "!!!User Agent",
7349 "end": { 7349 "end": {
7350 "column": 3, 7350 "column": 3,
7351 "line": 31 7351 "line": 31
7352 }, 7352 },
7353 "file": "src/i18n/globalMessages.js", 7353 "file": "src/i18n/globalMessages.js",
7354 "id": "global.userAgentPref",
7355 "start": {
7356 "column": 17,
7357 "line": 28
7358 }
7359 },
7360 {
7361 "defaultMessage": "!!!Franz Professional Required",
7362 "end": {
7363 "column": 3,
7364 "line": 35
7365 },
7366 "file": "src/i18n/globalMessages.js",
7354 "id": "global.franzProRequired", 7367 "id": "global.franzProRequired",
7355 "start": { 7368 "start": {
7356 "column": 15, 7369 "column": 15,
7357 "line": 28 7370 "line": 32
7358 } 7371 }
7359 } 7372 }
7360 ], 7373 ],
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index 415af9a7..14b2f5f4 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -75,6 +75,7 @@
75 "global.spellchecking.autodetect.short": "Automatic", 75 "global.spellchecking.autodetect.short": "Automatic",
76 "global.spellchecking.language": "Spell checking language", 76 "global.spellchecking.language": "Spell checking language",
77 "global.upgradeButton.upgradeToPro": "Upgrade to Ferdi Professional", 77 "global.upgradeButton.upgradeToPro": "Upgrade to Ferdi Professional",
78 "global.userAgentPref": "User Agent",
78 "import.headline": "Import your Ferdi 4 services", 79 "import.headline": "Import your Ferdi 4 services",
79 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5", 80 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5",
80 "import.skip.label": "I want to add services manually", 81 "import.skip.label": "I want to add services manually",
diff --git a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json
index 50c73d9b..a1e8c714 100644
--- a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json
+++ b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json
@@ -395,7 +395,7 @@
395 "file": "src/components/settings/settings/EditSettingsForm.js", 395 "file": "src/components/settings/settings/EditSettingsForm.js",
396 "start": { 396 "start": {
397 "line": 144, 397 "line": 144,
398 "column": 29 398 "column": 22
399 }, 399 },
400 "end": { 400 "end": {
401 "line": 147, 401 "line": 147,
diff --git a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json
index cd5462b5..d56f8cbb 100644
--- a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json
+++ b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json
@@ -4,11 +4,11 @@
4 "defaultMessage": "!!!Launch Ferdi on start", 4 "defaultMessage": "!!!Launch Ferdi on start",
5 "file": "src/containers/settings/EditSettingsScreen.js", 5 "file": "src/containers/settings/EditSettingsScreen.js",
6 "start": { 6 "start": {
7 "line": 31, 7 "line": 32,
8 "column": 21 8 "column": 21
9 }, 9 },
10 "end": { 10 "end": {
11 "line": 34, 11 "line": 35,
12 "column": 3 12 "column": 3
13 } 13 }
14 }, 14 },
@@ -17,11 +17,11 @@
17 "defaultMessage": "!!!Open in background", 17 "defaultMessage": "!!!Open in background",
18 "file": "src/containers/settings/EditSettingsScreen.js", 18 "file": "src/containers/settings/EditSettingsScreen.js",
19 "start": { 19 "start": {
20 "line": 35, 20 "line": 36,
21 "column": 26 21 "column": 26
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 38, 24 "line": 39,
25 "column": 3 25 "column": 3
26 } 26 }
27 }, 27 },
@@ -30,11 +30,11 @@
30 "defaultMessage": "!!!Keep Ferdi in background when closing the window", 30 "defaultMessage": "!!!Keep Ferdi in background when closing the window",
31 "file": "src/containers/settings/EditSettingsScreen.js", 31 "file": "src/containers/settings/EditSettingsScreen.js",
32 "start": { 32 "start": {
33 "line": 39, 33 "line": 40,
34 "column": 19 34 "column": 19
35 }, 35 },
36 "end": { 36 "end": {
37 "line": 42, 37 "line": 43,
38 "column": 3 38 "column": 3
39 } 39 }
40 }, 40 },
@@ -43,11 +43,11 @@
43 "defaultMessage": "!!!Start minimized", 43 "defaultMessage": "!!!Start minimized",
44 "file": "src/containers/settings/EditSettingsScreen.js", 44 "file": "src/containers/settings/EditSettingsScreen.js",
45 "start": { 45 "start": {
46 "line": 43, 46 "line": 44,
47 "column": 18 47 "column": 18
48 }, 48 },
49 "end": { 49 "end": {
50 "line": 46, 50 "line": 47,
51 "column": 3 51 "column": 3
52 } 52 }
53 }, 53 },
@@ -56,11 +56,11 @@
56 "defaultMessage": "!!!Always show Ferdi in System Tray", 56 "defaultMessage": "!!!Always show Ferdi in System Tray",
57 "file": "src/containers/settings/EditSettingsScreen.js", 57 "file": "src/containers/settings/EditSettingsScreen.js",
58 "start": { 58 "start": {
59 "line": 47, 59 "line": 48,
60 "column": 20 60 "column": 20
61 }, 61 },
62 "end": { 62 "end": {
63 "line": 50, 63 "line": 51,
64 "column": 3 64 "column": 3
65 } 65 }
66 }, 66 },
@@ -69,11 +69,11 @@
69 "defaultMessage": "!!!Always show Ferdi in Menu Bar", 69 "defaultMessage": "!!!Always show Ferdi in Menu Bar",
70 "file": "src/containers/settings/EditSettingsScreen.js", 70 "file": "src/containers/settings/EditSettingsScreen.js",
71 "start": { 71 "start": {
72 "line": 51, 72 "line": 52,
73 "column": 17 73 "column": 17
74 }, 74 },
75 "end": { 75 "end": {
76 "line": 54, 76 "line": 55,
77 "column": 3 77 "column": 3
78 } 78 }
79 }, 79 },
@@ -82,11 +82,11 @@
82 "defaultMessage": "!!!Reload Ferdi after system resume", 82 "defaultMessage": "!!!Reload Ferdi after system resume",
83 "file": "src/containers/settings/EditSettingsScreen.js", 83 "file": "src/containers/settings/EditSettingsScreen.js",
84 "start": { 84 "start": {
85 "line": 55, 85 "line": 56,
86 "column": 21 86 "column": 21
87 }, 87 },
88 "end": { 88 "end": {
89 "line": 58, 89 "line": 59,
90 "column": 3 90 "column": 3
91 } 91 }
92 }, 92 },
@@ -95,11 +95,11 @@
95 "defaultMessage": "!!!Minimize Ferdi to system tray", 95 "defaultMessage": "!!!Minimize Ferdi to system tray",
96 "file": "src/containers/settings/EditSettingsScreen.js", 96 "file": "src/containers/settings/EditSettingsScreen.js",
97 "start": { 97 "start": {
98 "line": 59, 98 "line": 60,
99 "column": 24 99 "column": 24
100 }, 100 },
101 "end": { 101 "end": {
102 "line": 62, 102 "line": 63,
103 "column": 3 103 "column": 3
104 } 104 }
105 }, 105 },
@@ -108,11 +108,11 @@
108 "defaultMessage": "!!!Close Ferdi to system tray", 108 "defaultMessage": "!!!Close Ferdi to system tray",
109 "file": "src/containers/settings/EditSettingsScreen.js", 109 "file": "src/containers/settings/EditSettingsScreen.js",
110 "start": { 110 "start": {
111 "line": 63, 111 "line": 64,
112 "column": 21 112 "column": 21
113 }, 113 },
114 "end": { 114 "end": {
115 "line": 66, 115 "line": 67,
116 "column": 3 116 "column": 3
117 } 117 }
118 }, 118 },
@@ -121,11 +121,11 @@
121 "defaultMessage": "!!!Don't show message content in notifications", 121 "defaultMessage": "!!!Don't show message content in notifications",
122 "file": "src/containers/settings/EditSettingsScreen.js", 122 "file": "src/containers/settings/EditSettingsScreen.js",
123 "start": { 123 "start": {
124 "line": 67, 124 "line": 68,
125 "column": 24 125 "column": 24
126 }, 126 },
127 "end": { 127 "end": {
128 "line": 70, 128 "line": 71,
129 "column": 3 129 "column": 3
130 } 130 }
131 }, 131 },
@@ -134,11 +134,11 @@
134 "defaultMessage": "!!!Don't show notifications for clipboard events", 134 "defaultMessage": "!!!Don't show notifications for clipboard events",
135 "file": "src/containers/settings/EditSettingsScreen.js", 135 "file": "src/containers/settings/EditSettingsScreen.js",
136 "start": { 136 "start": {
137 "line": 71, 137 "line": 72,
138 "column": 26 138 "column": 26
139 }, 139 },
140 "end": { 140 "end": {
141 "line": 74, 141 "line": 75,
142 "column": 3 142 "column": 3
143 } 143 }
144 }, 144 },
@@ -147,11 +147,11 @@
147 "defaultMessage": "!!!Notify TaskBar/Dock on new message", 147 "defaultMessage": "!!!Notify TaskBar/Dock on new message",
148 "file": "src/containers/settings/EditSettingsScreen.js", 148 "file": "src/containers/settings/EditSettingsScreen.js",
149 "start": { 149 "start": {
150 "line": 75, 150 "line": 76,
151 "column": 26 151 "column": 26
152 }, 152 },
153 "end": { 153 "end": {
154 "line": 78, 154 "line": 79,
155 "column": 3 155 "column": 3
156 } 156 }
157 }, 157 },
@@ -160,11 +160,11 @@
160 "defaultMessage": "!!!Navigation bar behaviour", 160 "defaultMessage": "!!!Navigation bar behaviour",
161 "file": "src/containers/settings/EditSettingsScreen.js", 161 "file": "src/containers/settings/EditSettingsScreen.js",
162 "start": { 162 "start": {
163 "line": 79, 163 "line": 80,
164 "column": 26 164 "column": 26
165 }, 165 },
166 "end": { 166 "end": {
167 "line": 82, 167 "line": 83,
168 "column": 3 168 "column": 3
169 } 169 }
170 }, 170 },
@@ -173,11 +173,11 @@
173 "defaultMessage": "!!!Search engine", 173 "defaultMessage": "!!!Search engine",
174 "file": "src/containers/settings/EditSettingsScreen.js", 174 "file": "src/containers/settings/EditSettingsScreen.js",
175 "start": { 175 "start": {
176 "line": 83, 176 "line": 84,
177 "column": 16 177 "column": 16
178 }, 178 },
179 "end": { 179 "end": {
180 "line": 86, 180 "line": 87,
181 "column": 3 181 "column": 3
182 } 182 }
183 }, 183 },
@@ -186,11 +186,11 @@
186 "defaultMessage": "!!!Send telemetry data", 186 "defaultMessage": "!!!Send telemetry data",
187 "file": "src/containers/settings/EditSettingsScreen.js", 187 "file": "src/containers/settings/EditSettingsScreen.js",
188 "start": { 188 "start": {
189 "line": 87, 189 "line": 88,
190 "column": 10 190 "column": 10
191 }, 191 },
192 "end": { 192 "end": {
193 "line": 90, 193 "line": 91,
194 "column": 3 194 "column": 3
195 } 195 }
196 }, 196 },
@@ -199,11 +199,11 @@
199 "defaultMessage": "!!!Enable service hibernation", 199 "defaultMessage": "!!!Enable service hibernation",
200 "file": "src/containers/settings/EditSettingsScreen.js", 200 "file": "src/containers/settings/EditSettingsScreen.js",
201 "start": { 201 "start": {
202 "line": 91, 202 "line": 92,
203 "column": 13 203 "column": 13
204 }, 204 },
205 "end": { 205 "end": {
206 "line": 94, 206 "line": 95,
207 "column": 3 207 "column": 3
208 } 208 }
209 }, 209 },
@@ -212,11 +212,11 @@
212 "defaultMessage": "!!!Keep services in hibernation on startup", 212 "defaultMessage": "!!!Keep services in hibernation on startup",
213 "file": "src/containers/settings/EditSettingsScreen.js", 213 "file": "src/containers/settings/EditSettingsScreen.js",
214 "start": { 214 "start": {
215 "line": 95, 215 "line": 96,
216 "column": 22 216 "column": 22
217 }, 217 },
218 "end": { 218 "end": {
219 "line": 98, 219 "line": 99,
220 "column": 3 220 "column": 3
221 } 221 }
222 }, 222 },
@@ -225,11 +225,11 @@
225 "defaultMessage": "!!!Hibernation strategy", 225 "defaultMessage": "!!!Hibernation strategy",
226 "file": "src/containers/settings/EditSettingsScreen.js", 226 "file": "src/containers/settings/EditSettingsScreen.js",
227 "start": { 227 "start": {
228 "line": 99, 228 "line": 100,
229 "column": 23 229 "column": 23
230 }, 230 },
231 "end": { 231 "end": {
232 "line": 102, 232 "line": 103,
233 "column": 3 233 "column": 3
234 } 234 }
235 }, 235 },
@@ -238,11 +238,11 @@
238 "defaultMessage": "!!!Todo Server", 238 "defaultMessage": "!!!Todo Server",
239 "file": "src/containers/settings/EditSettingsScreen.js", 239 "file": "src/containers/settings/EditSettingsScreen.js",
240 "start": { 240 "start": {
241 "line": 103, 241 "line": 104,
242 "column": 24 242 "column": 24
243 }, 243 },
244 "end": { 244 "end": {
245 "line": 106, 245 "line": 107,
246 "column": 3 246 "column": 3
247 } 247 }
248 }, 248 },
@@ -251,11 +251,11 @@
251 "defaultMessage": "!!!Custom TodoServer", 251 "defaultMessage": "!!!Custom TodoServer",
252 "file": "src/containers/settings/EditSettingsScreen.js", 252 "file": "src/containers/settings/EditSettingsScreen.js",
253 "start": { 253 "start": {
254 "line": 107, 254 "line": 108,
255 "column": 20 255 "column": 20
256 }, 256 },
257 "end": { 257 "end": {
258 "line": 110, 258 "line": 111,
259 "column": 3 259 "column": 3
260 } 260 }
261 }, 261 },
@@ -264,11 +264,11 @@
264 "defaultMessage": "!!!Enable Password Lock", 264 "defaultMessage": "!!!Enable Password Lock",
265 "file": "src/containers/settings/EditSettingsScreen.js", 265 "file": "src/containers/settings/EditSettingsScreen.js",
266 "start": { 266 "start": {
267 "line": 111, 267 "line": 112,
268 "column": 14 268 "column": 14
269 }, 269 },
270 "end": { 270 "end": {
271 "line": 114, 271 "line": 115,
272 "column": 3 272 "column": 3
273 } 273 }
274 }, 274 },
@@ -277,11 +277,11 @@
277 "defaultMessage": "!!!Password", 277 "defaultMessage": "!!!Password",
278 "file": "src/containers/settings/EditSettingsScreen.js", 278 "file": "src/containers/settings/EditSettingsScreen.js",
279 "start": { 279 "start": {
280 "line": 115, 280 "line": 116,
281 "column": 16 281 "column": 16
282 }, 282 },
283 "end": { 283 "end": {
284 "line": 118, 284 "line": 119,
285 "column": 3 285 "column": 3
286 } 286 }
287 }, 287 },
@@ -290,11 +290,11 @@
290 "defaultMessage": "!!!Allow using Touch ID to unlock", 290 "defaultMessage": "!!!Allow using Touch ID to unlock",
291 "file": "src/containers/settings/EditSettingsScreen.js", 291 "file": "src/containers/settings/EditSettingsScreen.js",
292 "start": { 292 "start": {
293 "line": 119, 293 "line": 120,
294 "column": 22 294 "column": 22
295 }, 295 },
296 "end": { 296 "end": {
297 "line": 122, 297 "line": 123,
298 "column": 3 298 "column": 3
299 } 299 }
300 }, 300 },
@@ -303,11 +303,11 @@
303 "defaultMessage": "!!!Lock after inactivity", 303 "defaultMessage": "!!!Lock after inactivity",
304 "file": "src/containers/settings/EditSettingsScreen.js", 304 "file": "src/containers/settings/EditSettingsScreen.js",
305 "start": { 305 "start": {
306 "line": 123, 306 "line": 124,
307 "column": 18 307 "column": 18
308 }, 308 },
309 "end": { 309 "end": {
310 "line": 126, 310 "line": 127,
311 "column": 3 311 "column": 3
312 } 312 }
313 }, 313 },
@@ -316,11 +316,11 @@
316 "defaultMessage": "!!!Enable scheduled Do-not-Disturb", 316 "defaultMessage": "!!!Enable scheduled Do-not-Disturb",
317 "file": "src/containers/settings/EditSettingsScreen.js", 317 "file": "src/containers/settings/EditSettingsScreen.js",
318 "start": { 318 "start": {
319 "line": 127, 319 "line": 128,
320 "column": 23 320 "column": 23
321 }, 321 },
322 "end": { 322 "end": {
323 "line": 130, 323 "line": 131,
324 "column": 3 324 "column": 3
325 } 325 }
326 }, 326 },
@@ -329,11 +329,11 @@
329 "defaultMessage": "!!!From", 329 "defaultMessage": "!!!From",
330 "file": "src/containers/settings/EditSettingsScreen.js", 330 "file": "src/containers/settings/EditSettingsScreen.js",
331 "start": { 331 "start": {
332 "line": 131, 332 "line": 132,
333 "column": 21 333 "column": 21
334 }, 334 },
335 "end": { 335 "end": {
336 "line": 134, 336 "line": 135,
337 "column": 3 337 "column": 3
338 } 338 }
339 }, 339 },
@@ -342,11 +342,11 @@
342 "defaultMessage": "!!!To", 342 "defaultMessage": "!!!To",
343 "file": "src/containers/settings/EditSettingsScreen.js", 343 "file": "src/containers/settings/EditSettingsScreen.js",
344 "start": { 344 "start": {
345 "line": 135, 345 "line": 136,
346 "column": 19 346 "column": 19
347 }, 347 },
348 "end": { 348 "end": {
349 "line": 138, 349 "line": 139,
350 "column": 3 350 "column": 3
351 } 351 }
352 }, 352 },
@@ -355,11 +355,11 @@
355 "defaultMessage": "!!!Language", 355 "defaultMessage": "!!!Language",
356 "file": "src/containers/settings/EditSettingsScreen.js", 356 "file": "src/containers/settings/EditSettingsScreen.js",
357 "start": { 357 "start": {
358 "line": 139, 358 "line": 140,
359 "column": 12 359 "column": 12
360 }, 360 },
361 "end": { 361 "end": {
362 "line": 142, 362 "line": 143,
363 "column": 3 363 "column": 3
364 } 364 }
365 }, 365 },
@@ -368,11 +368,11 @@
368 "defaultMessage": "!!!Dark Mode", 368 "defaultMessage": "!!!Dark Mode",
369 "file": "src/containers/settings/EditSettingsScreen.js", 369 "file": "src/containers/settings/EditSettingsScreen.js",
370 "start": { 370 "start": {
371 "line": 143, 371 "line": 144,
372 "column": 12 372 "column": 12
373 }, 373 },
374 "end": { 374 "end": {
375 "line": 146, 375 "line": 147,
376 "column": 3 376 "column": 3
377 } 377 }
378 }, 378 },
@@ -381,11 +381,11 @@
381 "defaultMessage": "!!!Synchronize dark mode with my OS's dark mode setting", 381 "defaultMessage": "!!!Synchronize dark mode with my OS's dark mode setting",
382 "file": "src/containers/settings/EditSettingsScreen.js", 382 "file": "src/containers/settings/EditSettingsScreen.js",
383 "start": { 383 "start": {
384 "line": 147, 384 "line": 148,
385 "column": 21 385 "column": 21
386 }, 386 },
387 "end": { 387 "end": {
388 "line": 150, 388 "line": 151,
389 "column": 3 389 "column": 3
390 } 390 }
391 }, 391 },
@@ -394,11 +394,11 @@
394 "defaultMessage": "!!!Enable universal Dark Mode", 394 "defaultMessage": "!!!Enable universal Dark Mode",
395 "file": "src/containers/settings/EditSettingsScreen.js", 395 "file": "src/containers/settings/EditSettingsScreen.js",
396 "start": { 396 "start": {
397 "line": 151, 397 "line": 152,
398 "column": 21 398 "column": 21
399 }, 399 },
400 "end": { 400 "end": {
401 "line": 154, 401 "line": 155,
402 "column": 3 402 "column": 3
403 } 403 }
404 }, 404 },
@@ -407,11 +407,11 @@
407 "defaultMessage": "!!!Sidebar width", 407 "defaultMessage": "!!!Sidebar width",
408 "file": "src/containers/settings/EditSettingsScreen.js", 408 "file": "src/containers/settings/EditSettingsScreen.js",
409 "start": { 409 "start": {
410 "line": 155, 410 "line": 156,
411 "column": 22 411 "column": 22
412 }, 412 },
413 "end": { 413 "end": {
414 "line": 158, 414 "line": 159,
415 "column": 3 415 "column": 3
416 } 416 }
417 }, 417 },
@@ -420,11 +420,11 @@
420 "defaultMessage": "!!!Service icon size", 420 "defaultMessage": "!!!Service icon size",
421 "file": "src/containers/settings/EditSettingsScreen.js", 421 "file": "src/containers/settings/EditSettingsScreen.js",
422 "start": { 422 "start": {
423 "line": 159, 423 "line": 160,
424 "column": 12 424 "column": 12
425 }, 425 },
426 "end": { 426 "end": {
427 "line": 162, 427 "line": 163,
428 "column": 3 428 "column": 3
429 } 429 }
430 }, 430 },
@@ -433,11 +433,11 @@
433 "defaultMessage": "!!!Use vertical style", 433 "defaultMessage": "!!!Use vertical style",
434 "file": "src/containers/settings/EditSettingsScreen.js", 434 "file": "src/containers/settings/EditSettingsScreen.js",
435 "start": { 435 "start": {
436 "line": 163, 436 "line": 164,
437 "column": 20 437 "column": 20
438 }, 438 },
439 "end": { 439 "end": {
440 "line": 166, 440 "line": 167,
441 "column": 3 441 "column": 3
442 } 442 }
443 }, 443 },
@@ -446,11 +446,11 @@
446 "defaultMessage": "!!!Always show workspace drawer", 446 "defaultMessage": "!!!Always show workspace drawer",
447 "file": "src/containers/settings/EditSettingsScreen.js", 447 "file": "src/containers/settings/EditSettingsScreen.js",
448 "start": { 448 "start": {
449 "line": 167, 449 "line": 168,
450 "column": 24 450 "column": 24
451 }, 451 },
452 "end": { 452 "end": {
453 "line": 170, 453 "line": 171,
454 "column": 3 454 "column": 3
455 } 455 }
456 }, 456 },
@@ -459,11 +459,11 @@
459 "defaultMessage": "!!!Accent color", 459 "defaultMessage": "!!!Accent color",
460 "file": "src/containers/settings/EditSettingsScreen.js", 460 "file": "src/containers/settings/EditSettingsScreen.js",
461 "start": { 461 "start": {
462 "line": 171, 462 "line": 172,
463 "column": 15 463 "column": 15
464 }, 464 },
465 "end": { 465 "end": {
466 "line": 174, 466 "line": 175,
467 "column": 3 467 "column": 3
468 } 468 }
469 }, 469 },
@@ -472,11 +472,11 @@
472 "defaultMessage": "!!!Display disabled services tabs", 472 "defaultMessage": "!!!Display disabled services tabs",
473 "file": "src/containers/settings/EditSettingsScreen.js", 473 "file": "src/containers/settings/EditSettingsScreen.js",
474 "start": { 474 "start": {
475 "line": 175, 475 "line": 176,
476 "column": 24 476 "column": 24
477 }, 477 },
478 "end": { 478 "end": {
479 "line": 178, 479 "line": 179,
480 "column": 3 480 "column": 3
481 } 481 }
482 }, 482 },
@@ -485,11 +485,11 @@
485 "defaultMessage": "!!!Show unread message badge when notifications are disabled", 485 "defaultMessage": "!!!Show unread message badge when notifications are disabled",
486 "file": "src/containers/settings/EditSettingsScreen.js", 486 "file": "src/containers/settings/EditSettingsScreen.js",
487 "start": { 487 "start": {
488 "line": 179, 488 "line": 180,
489 "column": 29 489 "column": 29
490 }, 490 },
491 "end": { 491 "end": {
492 "line": 182, 492 "line": 183,
493 "column": 3 493 "column": 3
494 } 494 }
495 }, 495 },
@@ -498,11 +498,11 @@
498 "defaultMessage": "!!!Show draggable area on window", 498 "defaultMessage": "!!!Show draggable area on window",
499 "file": "src/containers/settings/EditSettingsScreen.js", 499 "file": "src/containers/settings/EditSettingsScreen.js",
500 "start": { 500 "start": {
501 "line": 183, 501 "line": 184,
502 "column": 16 502 "column": 16
503 }, 503 },
504 "end": { 504 "end": {
505 "line": 186, 505 "line": 187,
506 "column": 3 506 "column": 3
507 } 507 }
508 }, 508 },
@@ -511,11 +511,11 @@
511 "defaultMessage": "!!!Enable spell checking", 511 "defaultMessage": "!!!Enable spell checking",
512 "file": "src/containers/settings/EditSettingsScreen.js", 512 "file": "src/containers/settings/EditSettingsScreen.js",
513 "start": { 513 "start": {
514 "line": 187, 514 "line": 188,
515 "column": 23 515 "column": 23
516 }, 516 },
517 "end": { 517 "end": {
518 "line": 190, 518 "line": 191,
519 "column": 3 519 "column": 3
520 } 520 }
521 }, 521 },
@@ -524,11 +524,11 @@
524 "defaultMessage": "!!!Enable GPU Acceleration", 524 "defaultMessage": "!!!Enable GPU Acceleration",
525 "file": "src/containers/settings/EditSettingsScreen.js", 525 "file": "src/containers/settings/EditSettingsScreen.js",
526 "start": { 526 "start": {
527 "line": 191, 527 "line": 192,
528 "column": 25 528 "column": 25
529 }, 529 },
530 "end": { 530 "end": {
531 "line": 194, 531 "line": 195,
532 "column": 3 532 "column": 3
533 } 533 }
534 }, 534 },
@@ -537,11 +537,11 @@
537 "defaultMessage": "!!!Include beta versions", 537 "defaultMessage": "!!!Include beta versions",
538 "file": "src/containers/settings/EditSettingsScreen.js", 538 "file": "src/containers/settings/EditSettingsScreen.js",
539 "start": { 539 "start": {
540 "line": 195, 540 "line": 196,
541 "column": 8 541 "column": 8
542 }, 542 },
543 "end": { 543 "end": {
544 "line": 198, 544 "line": 199,
545 "column": 3 545 "column": 3
546 } 546 }
547 }, 547 },
@@ -550,11 +550,11 @@
550 "defaultMessage": "!!!Enable updates", 550 "defaultMessage": "!!!Enable updates",
551 "file": "src/containers/settings/EditSettingsScreen.js", 551 "file": "src/containers/settings/EditSettingsScreen.js",
552 "start": { 552 "start": {
553 "line": 199, 553 "line": 200,
554 "column": 20 554 "column": 20
555 }, 555 },
556 "end": { 556 "end": {
557 "line": 202, 557 "line": 203,
558 "column": 3 558 "column": 3
559 } 559 }
560 }, 560 },
@@ -563,11 +563,11 @@
563 "defaultMessage": "!!!Enable Franz Todos", 563 "defaultMessage": "!!!Enable Franz Todos",
564 "file": "src/containers/settings/EditSettingsScreen.js", 564 "file": "src/containers/settings/EditSettingsScreen.js",
565 "start": { 565 "start": {
566 "line": 203, 566 "line": 204,
567 "column": 15 567 "column": 15
568 }, 568 },
569 "end": { 569 "end": {
570 "line": 206, 570 "line": 207,
571 "column": 3 571 "column": 3
572 } 572 }
573 }, 573 },
@@ -576,11 +576,11 @@
576 "defaultMessage": "!!!Keep all workspaces loaded", 576 "defaultMessage": "!!!Keep all workspaces loaded",
577 "file": "src/containers/settings/EditSettingsScreen.js", 577 "file": "src/containers/settings/EditSettingsScreen.js",
578 "start": { 578 "start": {
579 "line": 207, 579 "line": 208,
580 "column": 27 580 "column": 27
581 }, 581 },
582 "end": { 582 "end": {
583 "line": 210, 583 "line": 211,
584 "column": 3 584 "column": 3
585 } 585 }
586 } 586 }
diff --git a/src/i18n/messages/src/i18n/globalMessages.json b/src/i18n/messages/src/i18n/globalMessages.json
index 903de64c..f816a056 100644
--- a/src/i18n/messages/src/i18n/globalMessages.json
+++ b/src/i18n/messages/src/i18n/globalMessages.json
@@ -78,15 +78,28 @@
78 } 78 }
79 }, 79 },
80 { 80 {
81 "id": "global.userAgentPref",
82 "defaultMessage": "!!!User Agent",
83 "file": "src/i18n/globalMessages.js",
84 "start": {
85 "line": 28,
86 "column": 17
87 },
88 "end": {
89 "line": 31,
90 "column": 3
91 }
92 },
93 {
81 "id": "global.franzProRequired", 94 "id": "global.franzProRequired",
82 "defaultMessage": "!!!Franz Professional Required", 95 "defaultMessage": "!!!Franz Professional Required",
83 "file": "src/i18n/globalMessages.js", 96 "file": "src/i18n/globalMessages.js",
84 "start": { 97 "start": {
85 "line": 28, 98 "line": 32,
86 "column": 15 99 "column": 15
87 }, 100 },
88 "end": { 101 "end": {
89 "line": 31, 102 "line": 35,
90 "column": 3 103 "column": 3
91 } 104 }
92 } 105 }
diff --git a/src/models/Service.js b/src/models/Service.js
index d0c6a710..50115f60 100644
--- a/src/models/Service.js
+++ b/src/models/Service.js
@@ -107,6 +107,8 @@ export default class Service {
107 return null; 107 return null;
108 } 108 }
109 109
110 this.userAgentModel = new UserAgent(recipe.overrideUserAgent);
111
110 this.id = data.id || this.id; 112 this.id = data.id || this.id;
111 this.name = data.name || this.name; 113 this.name = data.name || this.name;
112 this.team = data.team || this.team; 114 this.team = data.team || this.team;
@@ -141,6 +143,8 @@ export default class Service {
141 143
142 this.spellcheckerLanguage = data.spellcheckerLanguage !== undefined ? data.spellcheckerLanguage : this.spellcheckerLanguage; 144 this.spellcheckerLanguage = data.spellcheckerLanguage !== undefined ? data.spellcheckerLanguage : this.spellcheckerLanguage;
143 145
146 this.userAgentPref = data.userAgentPref !== undefined ? data.userAgentPref : this.userAgentPref;
147
144 this.isHibernationEnabled = data.isHibernationEnabled !== undefined ? data.isHibernationEnabled : this.isHibernationEnabled; 148 this.isHibernationEnabled = data.isHibernationEnabled !== undefined ? data.isHibernationEnabled : this.isHibernationEnabled;
145 149
146 this.recipe = recipe; 150 this.recipe = recipe;
@@ -156,8 +160,6 @@ export default class Service {
156 this.isHibernating = true; 160 this.isHibernating = true;
157 } 161 }
158 162
159 this.userAgentModel = new UserAgent(recipe.overrideUserAgent);
160
161 autorun(() => { 163 autorun(() => {
162 if (!this.isEnabled) { 164 if (!this.isEnabled) {
163 this.webview = null; 165 this.webview = null;
@@ -243,6 +245,18 @@ export default class Service {
243 return this.userAgentModel.userAgent; 245 return this.userAgentModel.userAgent;
244 } 246 }
245 247
248 @computed get userAgentPref() {
249 return this.userAgentModel.userAgentPref;
250 }
251
252 set userAgentPref(pref) {
253 this.userAgentModel.userAgentPref = pref;
254 }
255
256 @computed get defaultUserAgent() {
257 return this.userAgentModel.defaultUserAgent;
258 }
259
246 @computed get partition() { 260 @computed get partition() {
247 return this.recipe.partition || `persist:service-${this.id}`; 261 return this.recipe.partition || `persist:service-${this.id}`;
248 } 262 }
diff --git a/src/models/UserAgent.js b/src/models/UserAgent.js
index f51f2e5a..f1d08e30 100644
--- a/src/models/UserAgent.js
+++ b/src/models/UserAgent.js
@@ -18,7 +18,9 @@ export default class UserAgent {
18 18
19 @observable chromelessUserAgent = false; 19 @observable chromelessUserAgent = false;
20 20
21 @observable getUserAgent = defaultUserAgent; 21 @observable userAgentPref = null;
22
23 @observable getUserAgent = null;
22 24
23 constructor(overrideUserAgent = null) { 25 constructor(overrideUserAgent = null) {
24 if (typeof overrideUserAgent === 'function') { 26 if (typeof overrideUserAgent === 'function') {
@@ -36,8 +38,37 @@ export default class UserAgent {
36 }); 38 });
37 } 39 }
38 40
41 @computed get defaultUserAgent() {
42 if (typeof this.getUserAgent === 'function') {
43 return this.getUserAgent();
44 }
45 const globalPref = window.ferdi.stores.settings.all.app.userAgentPref;
46 if (typeof globalPref === 'string') {
47 const trimmed = globalPref.trim();
48 if (trimmed !== '') {
49 return trimmed;
50 }
51 }
52 return defaultUserAgent();
53 }
54
55 @computed get userAgentWithChromeVersion() {
56 if (typeof this.userAgentPref === 'string') {
57 const trimmed = this.userAgentPref.trim();
58 if (trimmed !== '') {
59 return trimmed;
60 }
61 }
62 return this.defaultUserAgent;
63 }
64
65 @computed get userAgentWithoutChromeVersion() {
66 const withChrome = this.userAgentWithChromeVersion;
67 return withChrome.replace(/Chrome\/[0-9.]+/, 'Chrome');
68 }
69
39 @computed get userAgent() { 70 @computed get userAgent() {
40 return this.chromelessUserAgent ? defaultUserAgent(true) : this.getUserAgent(); 71 return this.chromelessUserAgent ? this.userAgentWithoutChromeVersion : this.userAgentWithChromeVersion;
41 } 72 }
42 73
43 @action setWebviewReference(webview) { 74 @action setWebviewReference(webview) {
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js
index 752f287e..3dba217b 100644
--- a/src/stores/ServicesStore.js
+++ b/src/stores/ServicesStore.js
@@ -315,6 +315,7 @@ export default class ServicesStore extends Store {
315 customIcon: false, 315 customIcon: false,
316 isDarkModeEnabled: false, 316 isDarkModeEnabled: false,
317 spellcheckerLanguage: SPELLCHECKER_LOCALES[this.stores.settings.app.spellcheckerLanguage], 317 spellcheckerLanguage: SPELLCHECKER_LOCALES[this.stores.settings.app.spellcheckerLanguage],
318 userAgentPref: '',
318 }, serviceData); 319 }, serviceData);
319 320
320 let data = serviceData; 321 let data = serviceData;
diff --git a/src/stores/SettingsStore.js b/src/stores/SettingsStore.js
index 15b0db12..b433efd4 100644
--- a/src/stores/SettingsStore.js
+++ b/src/stores/SettingsStore.js
@@ -320,5 +320,21 @@ export default class SettingsStore extends Store {
320 }, 320 },
321 }); 321 });
322 } 322 }
323
324 if (!this.all.migration['user-agent-settings']) {
325 this.actions.settings.update({
326 type: 'app',
327 data: {
328 userAgentPref: DEFAULT_APP_SETTINGS.userAgentPref,
329 },
330 });
331
332 this.actions.settings.update({
333 type: 'migration',
334 data: {
335 'user-agent-settings': true,
336 },
337 });
338 }
323 } 339 }
324} 340}
diff --git a/src/styles/settings.scss b/src/styles/settings.scss
index 1bd0ae63..fd3151a9 100644
--- a/src/styles/settings.scss
+++ b/src/styles/settings.scss
@@ -216,7 +216,7 @@
216 216
217 &::-webkit-scrollbar-thumb:window-inactive { background: none; } 217 &::-webkit-scrollbar-thumb:window-inactive { background: none; }
218 .service-flex-grid { display: flex; } 218 .service-flex-grid { display: flex; }
219 .service-name { flex: 1px; } 219 .service-name,.user-agent { flex: 1px; }
220 220
221 .service-icon { 221 .service-icon {
222 float: right; 222 float: right;
@@ -293,6 +293,7 @@
293 .settings__help { 293 .settings__help {
294 color: $theme-gray-light; 294 color: $theme-gray-light;
295 font-size: 12px; 295 font-size: 12px;
296 font-style: italic;
296 margin: -10px 0 20px 55px;; 297 margin: -10px 0 20px 55px;;
297 } 298 }
298 299