diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/components/settings/services/EditServiceForm.js | 17 | ||||
-rw-r--r-- | src/config.ts | 1 | ||||
-rw-r--r-- | src/containers/settings/EditServiceScreen.js | 9 | ||||
-rw-r--r-- | src/i18n/locales/en-US.json | 3 | ||||
-rw-r--r-- | src/internal-server/app/Controllers/Http/ServiceController.js | 3 | ||||
-rw-r--r-- | src/models/Service.js | 7 | ||||
-rw-r--r-- | src/stores/ServicesStore.js | 1 | ||||
-rw-r--r-- | src/webview/recipe.js | 6 |
8 files changed, 43 insertions, 4 deletions
diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js index 42e21dbc8..e426d2d73 100644 --- a/src/components/settings/services/EditServiceForm.js +++ b/src/components/settings/services/EditServiceForm.js | |||
@@ -108,6 +108,10 @@ const messages = defineMessages({ | |||
108 | id: 'settings.service.form.headlineGeneral', | 108 | id: 'settings.service.form.headlineGeneral', |
109 | defaultMessage: 'General', | 109 | defaultMessage: 'General', |
110 | }, | 110 | }, |
111 | headlineAppearance: { | ||
112 | id: 'settings.service.form.headlineAppearance', | ||
113 | defaultMessage: 'Appearance', | ||
114 | }, | ||
111 | headlineDarkReaderSettings: { | 115 | headlineDarkReaderSettings: { |
112 | id: 'settings.service.form.headlineDarkReaderSettings', | 116 | id: 'settings.service.form.headlineDarkReaderSettings', |
113 | defaultMessage: 'Dark Reader Settings', | 117 | defaultMessage: 'Dark Reader Settings', |
@@ -133,6 +137,10 @@ const messages = defineMessages({ | |||
133 | defaultMessage: | 137 | defaultMessage: |
134 | 'Proxy settings will not be synchronized with the Ferdium servers.', | 138 | 'Proxy settings will not be synchronized with the Ferdium servers.', |
135 | }, | 139 | }, |
140 | serviceReloadRequired: { | ||
141 | id: 'settings.service.reloadRequired', | ||
142 | defaultMessage: 'Changes require reload of the service', | ||
143 | }, | ||
136 | }); | 144 | }); |
137 | 145 | ||
138 | class EditServiceForm extends Component { | 146 | class EditServiceForm extends Component { |
@@ -360,6 +368,15 @@ class EditServiceForm extends Component { | |||
360 | {intl.formatMessage(messages.isHibernationEnabledInfo)} | 368 | {intl.formatMessage(messages.isHibernationEnabledInfo)} |
361 | </p> | 369 | </p> |
362 | <Toggle field={form.$('isWakeUpEnabled')} /> | 370 | <Toggle field={form.$('isWakeUpEnabled')} /> |
371 | <Toggle field={form.$('trapLinkClicks')} /> | ||
372 | {/* TODO: Need to figure out how to effect this change without a reload of the recipe */} | ||
373 | <p className="settings__help indented__help"> | ||
374 | {intl.formatMessage(messages.serviceReloadRequired)} | ||
375 | </p> | ||
376 | </div> | ||
377 | |||
378 | <div className="settings__settings-group"> | ||
379 | <H3>{intl.formatMessage(messages.headlineAppearance)}</H3> | ||
363 | <Toggle field={form.$('isDarkModeEnabled')} /> | 380 | <Toggle field={form.$('isDarkModeEnabled')} /> |
364 | {form.$('isDarkModeEnabled').value && ( | 381 | {form.$('isDarkModeEnabled').value && ( |
365 | <> | 382 | <> |
diff --git a/src/config.ts b/src/config.ts index c72edb012..f602f473b 100644 --- a/src/config.ts +++ b/src/config.ts | |||
@@ -272,6 +272,7 @@ export const DEFAULT_SERVICE_SETTINGS = { | |||
272 | isWakeUpEnabled: true, | 272 | isWakeUpEnabled: true, |
273 | isNotificationEnabled: true, | 273 | isNotificationEnabled: true, |
274 | isBadgeEnabled: true, | 274 | isBadgeEnabled: true, |
275 | trapLinkClicks: false, | ||
275 | isMuted: false, | 276 | isMuted: false, |
276 | customIcon: false, | 277 | customIcon: false, |
277 | isDarkModeEnabled: false, | 278 | isDarkModeEnabled: false, |
diff --git a/src/containers/settings/EditServiceScreen.js b/src/containers/settings/EditServiceScreen.js index 24b827993..db8602c10 100644 --- a/src/containers/settings/EditServiceScreen.js +++ b/src/containers/settings/EditServiceScreen.js | |||
@@ -85,6 +85,10 @@ const messages = defineMessages({ | |||
85 | id: 'settings.service.form.darkReaderSepia', | 85 | id: 'settings.service.form.darkReaderSepia', |
86 | defaultMessage: 'Dark Reader Sepia', | 86 | defaultMessage: 'Dark Reader Sepia', |
87 | }, | 87 | }, |
88 | trapLinkClicks: { | ||
89 | id: 'settings.service.form.trapLinkClicks', | ||
90 | defaultMessage: 'Open URLs within Ferdium', | ||
91 | }, | ||
88 | onlyShowFavoritesInUnreadCount: { | 92 | onlyShowFavoritesInUnreadCount: { |
89 | id: 'settings.service.form.onlyShowFavoritesInUnreadCount', | 93 | id: 'settings.service.form.onlyShowFavoritesInUnreadCount', |
90 | defaultMessage: 'Only show Favorites in unread count', | 94 | defaultMessage: 'Only show Favorites in unread count', |
@@ -198,6 +202,11 @@ class EditServiceScreen extends Component { | |||
198 | value: service.isBadgeEnabled, | 202 | value: service.isBadgeEnabled, |
199 | default: DEFAULT_SERVICE_SETTINGS.isBadgeEnabled, | 203 | default: DEFAULT_SERVICE_SETTINGS.isBadgeEnabled, |
200 | }, | 204 | }, |
205 | trapLinkClicks: { | ||
206 | label: intl.formatMessage(messages.trapLinkClicks), | ||
207 | value: service.trapLinkClicks, | ||
208 | default: DEFAULT_SERVICE_SETTINGS.trapLinkClicks, | ||
209 | }, | ||
201 | isMuted: { | 210 | isMuted: { |
202 | label: intl.formatMessage(messages.enableAudio), | 211 | label: intl.formatMessage(messages.enableAudio), |
203 | value: !service.isMuted, | 212 | value: !service.isMuted, |
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 8a971cb6a..b4460c28e 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json | |||
@@ -323,6 +323,7 @@ | |||
323 | "settings.service.form.enableNotification": "Enable notifications", | 323 | "settings.service.form.enableNotification": "Enable notifications", |
324 | "settings.service.form.enableService": "Enable service", | 324 | "settings.service.form.enableService": "Enable service", |
325 | "settings.service.form.enableWakeUp": "Enable wake up", | 325 | "settings.service.form.enableWakeUp": "Enable wake up", |
326 | "settings.service.form.headlineAppearance": "Appearance", | ||
326 | "settings.service.form.headlineBadges": "Unread message badges", | 327 | "settings.service.form.headlineBadges": "Unread message badges", |
327 | "settings.service.form.headlineDarkReaderSettings": "Dark Reader Settings", | 328 | "settings.service.form.headlineDarkReaderSettings": "Dark Reader Settings", |
328 | "settings.service.form.headlineGeneral": "General", | 329 | "settings.service.form.headlineGeneral": "General", |
@@ -352,8 +353,10 @@ | |||
352 | "settings.service.form.tabHosted": "Hosted", | 353 | "settings.service.form.tabHosted": "Hosted", |
353 | "settings.service.form.tabOnPremise": "Self hosted ⭐️", | 354 | "settings.service.form.tabOnPremise": "Self hosted ⭐️", |
354 | "settings.service.form.team": "Team", | 355 | "settings.service.form.team": "Team", |
356 | "settings.service.form.trapLinkClicks": "Open URLs within Ferdium", | ||
355 | "settings.service.form.useHostedService": "Use the hosted {name} service.", | 357 | "settings.service.form.useHostedService": "Use the hosted {name} service.", |
356 | "settings.service.form.yourServices": "Your services", | 358 | "settings.service.form.yourServices": "Your services", |
359 | "settings.service.reloadRequired": "Changes require reload of the service", | ||
357 | "settings.services.deletedInfo": "Service has been deleted", | 360 | "settings.services.deletedInfo": "Service has been deleted", |
358 | "settings.services.discoverServices": "Discover services", | 361 | "settings.services.discoverServices": "Discover services", |
359 | "settings.services.headline": "Your services", | 362 | "settings.services.headline": "Your services", |
diff --git a/src/internal-server/app/Controllers/Http/ServiceController.js b/src/internal-server/app/Controllers/Http/ServiceController.js index 8be5aa9c5..4b26f4747 100644 --- a/src/internal-server/app/Controllers/Http/ServiceController.js +++ b/src/internal-server/app/Controllers/Http/ServiceController.js | |||
@@ -48,6 +48,7 @@ class ServiceController { | |||
48 | isEnabled: DEFAULT_SERVICE_SETTINGS.isEnabled, | 48 | isEnabled: DEFAULT_SERVICE_SETTINGS.isEnabled, |
49 | isNotificationEnabled: DEFAULT_SERVICE_SETTINGS.isNotificationEnabled, | 49 | isNotificationEnabled: DEFAULT_SERVICE_SETTINGS.isNotificationEnabled, |
50 | isBadgeEnabled: DEFAULT_SERVICE_SETTINGS.isBadgeEnabled, | 50 | isBadgeEnabled: DEFAULT_SERVICE_SETTINGS.isBadgeEnabled, |
51 | trapLinkClicks: DEFAULT_SERVICE_SETTINGS.trapLinkClicks, | ||
51 | isMuted: DEFAULT_SERVICE_SETTINGS.isMuted, | 52 | isMuted: DEFAULT_SERVICE_SETTINGS.isMuted, |
52 | isDarkModeEnabled: '', // TODO: This should ideally be a boolean (false). But, changing it caused the sidebar toggle to not work. | 53 | isDarkModeEnabled: '', // TODO: This should ideally be a boolean (false). But, changing it caused the sidebar toggle to not work. |
53 | spellcheckerLanguage: '', | 54 | spellcheckerLanguage: '', |
@@ -76,6 +77,7 @@ class ServiceController { | |||
76 | customRecipe: false, | 77 | customRecipe: false, |
77 | hasCustomIcon: false, | 78 | hasCustomIcon: false, |
78 | isBadgeEnabled: DEFAULT_SERVICE_SETTINGS.isBadgeEnabled, | 79 | isBadgeEnabled: DEFAULT_SERVICE_SETTINGS.isBadgeEnabled, |
80 | trapLinkClicks: DEFAULT_SERVICE_SETTINGS.trapLinkClicks, | ||
79 | isDarkModeEnabled: '', // TODO: This should ideally be a boolean (false). But, changing it caused the sidebar toggle to not work. | 81 | isDarkModeEnabled: '', // TODO: This should ideally be a boolean (false). But, changing it caused the sidebar toggle to not work. |
80 | isEnabled: DEFAULT_SERVICE_SETTINGS.isEnabled, | 82 | isEnabled: DEFAULT_SERVICE_SETTINGS.isEnabled, |
81 | isMuted: DEFAULT_SERVICE_SETTINGS.isMuted, | 83 | isMuted: DEFAULT_SERVICE_SETTINGS.isMuted, |
@@ -219,6 +221,7 @@ class ServiceController { | |||
219 | customRecipe: false, | 221 | customRecipe: false, |
220 | hasCustomIcon: DEFAULT_SERVICE_SETTINGS.customIcon, | 222 | hasCustomIcon: DEFAULT_SERVICE_SETTINGS.customIcon, |
221 | isBadgeEnabled: DEFAULT_SERVICE_SETTINGS.isBadgeEnabled, | 223 | isBadgeEnabled: DEFAULT_SERVICE_SETTINGS.isBadgeEnabled, |
224 | trapLinkClicks: DEFAULT_SERVICE_SETTINGS.trapLinkClicks, | ||
222 | isDarkModeEnabled: '', // TODO: This should ideally be a boolean (false). But, changing it caused the sidebar toggle to not work. | 225 | isDarkModeEnabled: '', // TODO: This should ideally be a boolean (false). But, changing it caused the sidebar toggle to not work. |
223 | isEnabled: DEFAULT_SERVICE_SETTINGS.isEnabled, | 226 | isEnabled: DEFAULT_SERVICE_SETTINGS.isEnabled, |
224 | isMuted: DEFAULT_SERVICE_SETTINGS.isMuted, | 227 | isMuted: DEFAULT_SERVICE_SETTINGS.isMuted, |
diff --git a/src/models/Service.js b/src/models/Service.js index af42f9548..e2b9ae7c6 100644 --- a/src/models/Service.js +++ b/src/models/Service.js | |||
@@ -54,6 +54,8 @@ export default class Service { | |||
54 | 54 | ||
55 | @observable isBadgeEnabled = true; | 55 | @observable isBadgeEnabled = true; |
56 | 56 | ||
57 | @observable trapLinkClicks = false; | ||
58 | |||
57 | @observable isIndirectMessageBadgeEnabled = true; | 59 | @observable isIndirectMessageBadgeEnabled = true; |
58 | 60 | ||
59 | @observable iconUrl = ''; | 61 | @observable iconUrl = ''; |
@@ -134,6 +136,10 @@ export default class Service { | |||
134 | data.isBadgeEnabled, | 136 | data.isBadgeEnabled, |
135 | this.isBadgeEnabled, | 137 | this.isBadgeEnabled, |
136 | ); | 138 | ); |
139 | this.trapLinkClicks = ifUndefinedBoolean( | ||
140 | data.trapLinkClicks, | ||
141 | this.trapLinkClicks, | ||
142 | ); | ||
137 | this.isIndirectMessageBadgeEnabled = ifUndefinedBoolean( | 143 | this.isIndirectMessageBadgeEnabled = ifUndefinedBoolean( |
138 | data.isIndirectMessageBadgeEnabled, | 144 | data.isIndirectMessageBadgeEnabled, |
139 | this.isIndirectMessageBadgeEnabled, | 145 | this.isIndirectMessageBadgeEnabled, |
@@ -207,6 +213,7 @@ export default class Service { | |||
207 | url: this.url, | 213 | url: this.url, |
208 | hasCustomIcon: this.hasCustomIcon, | 214 | hasCustomIcon: this.hasCustomIcon, |
209 | onlyShowFavoritesInUnreadCount: this.onlyShowFavoritesInUnreadCount, | 215 | onlyShowFavoritesInUnreadCount: this.onlyShowFavoritesInUnreadCount, |
216 | trapLinkClicks: this.trapLinkClicks, | ||
210 | }; | 217 | }; |
211 | } | 218 | } |
212 | 219 | ||
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js index 3f551eddb..6b1ceb51f 100644 --- a/src/stores/ServicesStore.js +++ b/src/stores/ServicesStore.js | |||
@@ -410,6 +410,7 @@ export default class ServicesStore extends Store { | |||
410 | isWakeUpEnabled: DEFAULT_SERVICE_SETTINGS.isWakeUpEnabled, | 410 | isWakeUpEnabled: DEFAULT_SERVICE_SETTINGS.isWakeUpEnabled, |
411 | isNotificationEnabled: DEFAULT_SERVICE_SETTINGS.isNotificationEnabled, | 411 | isNotificationEnabled: DEFAULT_SERVICE_SETTINGS.isNotificationEnabled, |
412 | isBadgeEnabled: DEFAULT_SERVICE_SETTINGS.isBadgeEnabled, | 412 | isBadgeEnabled: DEFAULT_SERVICE_SETTINGS.isBadgeEnabled, |
413 | trapLinkClicks: DEFAULT_SERVICE_SETTINGS.trapLinkClicks, | ||
413 | isMuted: DEFAULT_SERVICE_SETTINGS.isMuted, | 414 | isMuted: DEFAULT_SERVICE_SETTINGS.isMuted, |
414 | customIcon: DEFAULT_SERVICE_SETTINGS.customIcon, | 415 | customIcon: DEFAULT_SERVICE_SETTINGS.customIcon, |
415 | isDarkModeEnabled: DEFAULT_SERVICE_SETTINGS.isDarkModeEnabled, | 416 | isDarkModeEnabled: DEFAULT_SERVICE_SETTINGS.isDarkModeEnabled, |
diff --git a/src/webview/recipe.js b/src/webview/recipe.js index eff20c2d3..a14c01b68 100644 --- a/src/webview/recipe.js +++ b/src/webview/recipe.js | |||
@@ -49,6 +49,7 @@ import { | |||
49 | } from './spellchecker'; | 49 | } from './spellchecker'; |
50 | 50 | ||
51 | import { DEFAULT_APP_SETTINGS } from '../config'; | 51 | import { DEFAULT_APP_SETTINGS } from '../config'; |
52 | import { ifUndefinedString } from '../jsUtils'; | ||
52 | 53 | ||
53 | const debug = require('../preload-safe-debug')('Ferdium:Plugin'); | 54 | const debug = require('../preload-safe-debug')('Ferdium:Plugin'); |
54 | 55 | ||
@@ -157,10 +158,7 @@ class RecipeController { | |||
157 | } | 158 | } |
158 | 159 | ||
159 | @computed get spellcheckerLanguage() { | 160 | @computed get spellcheckerLanguage() { |
160 | const selected = | 161 | return ifUndefinedString(this.settings.service.spellcheckerLanguage, this.settings.app.spellcheckerLanguage); |
161 | this.settings.service.spellcheckerLanguage || | ||
162 | this.settings.app.spellcheckerLanguage; | ||
163 | return selected; | ||
164 | } | 162 | } |
165 | 163 | ||
166 | cldIdentifier = null; | 164 | cldIdentifier = null; |