diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/components/settings/services/EditServiceForm.js | 68 | ||||
-rw-r--r-- | src/containers/settings/EditServiceScreen.js | 77 | ||||
-rw-r--r-- | src/features/serviceProxy/index.js | 29 |
3 files changed, 77 insertions, 97 deletions
diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js index c41cdd56a..23c667b82 100644 --- a/src/components/settings/services/EditServiceForm.js +++ b/src/components/settings/services/EditServiceForm.js | |||
@@ -144,7 +144,6 @@ export default @observer class EditServiceForm extends Component { | |||
144 | openRecipeFile: PropTypes.func.isRequired, | 144 | openRecipeFile: PropTypes.func.isRequired, |
145 | isSaving: PropTypes.bool.isRequired, | 145 | isSaving: PropTypes.bool.isRequired, |
146 | isDeleting: PropTypes.bool.isRequired, | 146 | isDeleting: PropTypes.bool.isRequired, |
147 | isProxyFeatureEnabled: PropTypes.bool.isRequired, | ||
148 | }; | 147 | }; |
149 | 148 | ||
150 | static defaultProps = { | 149 | static defaultProps = { |
@@ -206,7 +205,6 @@ export default @observer class EditServiceForm extends Component { | |||
206 | isDeleting, | 205 | isDeleting, |
207 | onDelete, | 206 | onDelete, |
208 | openRecipeFile, | 207 | openRecipeFile, |
209 | isProxyFeatureEnabled, | ||
210 | } = this.props; | 208 | } = this.props; |
211 | const { intl } = this.context; | 209 | const { intl } = this.context; |
212 | 210 | ||
@@ -370,42 +368,40 @@ export default @observer class EditServiceForm extends Component { | |||
370 | </div> | 368 | </div> |
371 | )} | 369 | )} |
372 | 370 | ||
373 | {isProxyFeatureEnabled && ( | 371 | <div className="settings__settings-group"> |
374 | <div className="settings__settings-group"> | 372 | <h3> |
375 | <h3> | 373 | {intl.formatMessage(messages.headlineProxy)} |
376 | {intl.formatMessage(messages.headlineProxy)} | 374 | <span className="badge badge--success">beta</span> |
377 | <span className="badge badge--success">beta</span> | 375 | </h3> |
378 | </h3> | 376 | <Toggle field={form.$('proxy.isEnabled')} /> |
379 | <Toggle field={form.$('proxy.isEnabled')} /> | 377 | {form.$('proxy.isEnabled').value && ( |
380 | {form.$('proxy.isEnabled').value && ( | 378 | <> |
381 | <> | 379 | <div className="grid"> |
382 | <div className="grid"> | 380 | <div className="grid__row"> |
383 | <div className="grid__row"> | 381 | <Input field={form.$('proxy.host')} className="proxyHost" /> |
384 | <Input field={form.$('proxy.host')} className="proxyHost" /> | 382 | <Input field={form.$('proxy.port')} /> |
385 | <Input field={form.$('proxy.port')} /> | ||
386 | </div> | ||
387 | </div> | 383 | </div> |
388 | <div className="grid"> | 384 | </div> |
389 | <div className="grid__row"> | 385 | <div className="grid"> |
390 | <Input field={form.$('proxy.user')} /> | 386 | <div className="grid__row"> |
391 | <Input | 387 | <Input field={form.$('proxy.user')} /> |
392 | field={form.$('proxy.password')} | 388 | <Input |
393 | showPasswordToggle | 389 | field={form.$('proxy.password')} |
394 | /> | 390 | showPasswordToggle |
395 | </div> | 391 | /> |
396 | </div> | 392 | </div> |
397 | <p> | 393 | </div> |
398 | <span className="mdi mdi-information" /> | 394 | <p> |
399 | {intl.formatMessage(messages.proxyRestartInfo)} | 395 | <span className="mdi mdi-information" /> |
400 | </p> | 396 | {intl.formatMessage(messages.proxyRestartInfo)} |
401 | <p> | 397 | </p> |
402 | <span className="mdi mdi-information" /> | 398 | <p> |
403 | {intl.formatMessage(messages.proxyInfo)} | 399 | <span className="mdi mdi-information" /> |
404 | </p> | 400 | {intl.formatMessage(messages.proxyInfo)} |
405 | </> | 401 | </p> |
406 | )} | 402 | </> |
407 | </div> | 403 | )} |
408 | )} | 404 | </div> |
409 | 405 | ||
410 | <div className="user-agent"> | 406 | <div className="user-agent"> |
411 | <Input field={form.$('userAgentPref')} /> | 407 | <Input field={form.$('userAgentPref')} /> |
diff --git a/src/containers/settings/EditServiceScreen.js b/src/containers/settings/EditServiceScreen.js index c880e97ae..3a66a27e6 100644 --- a/src/containers/settings/EditServiceScreen.js +++ b/src/containers/settings/EditServiceScreen.js | |||
@@ -18,8 +18,6 @@ import ErrorBoundary from '../../components/util/ErrorBoundary'; | |||
18 | import { required, url, oneRequired } from '../../helpers/validation-helpers'; | 18 | import { required, url, oneRequired } from '../../helpers/validation-helpers'; |
19 | import { getSelectOptions } from '../../helpers/i18n-helpers'; | 19 | import { getSelectOptions } from '../../helpers/i18n-helpers'; |
20 | 20 | ||
21 | import { config as proxyFeature } from '../../features/serviceProxy'; | ||
22 | |||
23 | import { SPELLCHECKER_LOCALES } from '../../i18n/languages'; | 21 | import { SPELLCHECKER_LOCALES } from '../../i18n/languages'; |
24 | 22 | ||
25 | import globalMessages from '../../i18n/globalMessages'; | 23 | import globalMessages from '../../i18n/globalMessages'; |
@@ -131,7 +129,7 @@ export default @inject('stores', 'actions') @observer class EditServiceScreen ex | |||
131 | } | 129 | } |
132 | } | 130 | } |
133 | 131 | ||
134 | prepareForm(recipe, service, proxy) { | 132 | prepareForm(recipe, service) { |
135 | const { | 133 | const { |
136 | intl, | 134 | intl, |
137 | } = this.context; | 135 | } = this.context; |
@@ -275,44 +273,42 @@ export default @inject('stores', 'actions') @observer class EditServiceScreen ex | |||
275 | }); | 273 | }); |
276 | } | 274 | } |
277 | 275 | ||
278 | if (proxy.isEnabled) { | 276 | const serviceProxyConfig = stores.settings.proxy[service.id] || {}; |
279 | const serviceProxyConfig = stores.settings.proxy[service.id] || {}; | 277 | |
280 | 278 | Object.assign(config.fields, { | |
281 | Object.assign(config.fields, { | 279 | proxy: { |
282 | proxy: { | 280 | name: 'proxy', |
283 | name: 'proxy', | 281 | label: 'proxy', |
284 | label: 'proxy', | 282 | fields: { |
285 | fields: { | 283 | isEnabled: { |
286 | isEnabled: { | 284 | label: intl.formatMessage(messages.enableProxy), |
287 | label: intl.formatMessage(messages.enableProxy), | 285 | value: serviceProxyConfig.isEnabled, |
288 | value: serviceProxyConfig.isEnabled, | 286 | default: false, |
289 | default: false, | 287 | }, |
290 | }, | 288 | host: { |
291 | host: { | 289 | label: intl.formatMessage(messages.proxyHost), |
292 | label: intl.formatMessage(messages.proxyHost), | 290 | value: serviceProxyConfig.host, |
293 | value: serviceProxyConfig.host, | 291 | default: '', |
294 | default: '', | 292 | }, |
295 | }, | 293 | port: { |
296 | port: { | 294 | label: intl.formatMessage(messages.proxyPort), |
297 | label: intl.formatMessage(messages.proxyPort), | 295 | value: serviceProxyConfig.port, |
298 | value: serviceProxyConfig.port, | 296 | default: '', |
299 | default: '', | 297 | }, |
300 | }, | 298 | user: { |
301 | user: { | 299 | label: intl.formatMessage(messages.proxyUser), |
302 | label: intl.formatMessage(messages.proxyUser), | 300 | value: serviceProxyConfig.user, |
303 | value: serviceProxyConfig.user, | 301 | default: '', |
304 | default: '', | 302 | }, |
305 | }, | 303 | password: { |
306 | password: { | 304 | label: intl.formatMessage(messages.proxyPassword), |
307 | label: intl.formatMessage(messages.proxyPassword), | 305 | value: serviceProxyConfig.password, |
308 | value: serviceProxyConfig.password, | 306 | default: '', |
309 | default: '', | 307 | type: 'password', |
310 | type: 'password', | ||
311 | }, | ||
312 | }, | 308 | }, |
313 | }, | 309 | }, |
314 | }); | 310 | }, |
315 | } | 311 | }); |
316 | 312 | ||
317 | return new Form(config); | 313 | return new Form(config); |
318 | } | 314 | } |
@@ -381,7 +377,7 @@ export default @inject('stores', 'actions') @observer class EditServiceScreen ex | |||
381 | ); | 377 | ); |
382 | } | 378 | } |
383 | 379 | ||
384 | const form = this.prepareForm(recipe, service, proxyFeature); | 380 | const form = this.prepareForm(recipe, service); |
385 | 381 | ||
386 | return ( | 382 | return ( |
387 | <ErrorBoundary> | 383 | <ErrorBoundary> |
@@ -397,7 +393,6 @@ export default @inject('stores', 'actions') @observer class EditServiceScreen ex | |||
397 | onSubmit={(d) => this.onSubmit(d)} | 393 | onSubmit={(d) => this.onSubmit(d)} |
398 | onDelete={() => this.deleteService()} | 394 | onDelete={() => this.deleteService()} |
399 | openRecipeFile={(file) => this.openRecipeFile(file)} | 395 | openRecipeFile={(file) => this.openRecipeFile(file)} |
400 | isProxyFeatureEnabled={proxyFeature.isEnabled} | ||
401 | /> | 396 | /> |
402 | </ErrorBoundary> | 397 | </ErrorBoundary> |
403 | ); | 398 | ); |
diff --git a/src/features/serviceProxy/index.js b/src/features/serviceProxy/index.js index eb7116651..125b4729f 100644 --- a/src/features/serviceProxy/index.js +++ b/src/features/serviceProxy/index.js | |||
@@ -1,37 +1,26 @@ | |||
1 | import { autorun, observable } from 'mobx'; | 1 | import { autorun } from 'mobx'; |
2 | import { session } from '@electron/remote'; | 2 | import { session } from '@electron/remote'; |
3 | 3 | ||
4 | const debug = require('debug')('Ferdi:feature:serviceProxy'); | 4 | const debug = require('debug')('Ferdi:feature:serviceProxy'); |
5 | 5 | ||
6 | export const config = observable({ | ||
7 | isEnabled: true, | ||
8 | }); | ||
9 | |||
10 | export default function init(stores) { | 6 | export default function init(stores) { |
11 | debug('Initializing `serviceProxy` feature'); | 7 | debug('Initializing `serviceProxy` feature'); |
12 | 8 | ||
13 | autorun(() => { | 9 | autorun(() => { |
14 | config.isEnabled = true; | ||
15 | |||
16 | const services = stores.services.enabled; | 10 | const services = stores.services.enabled; |
17 | const proxySettings = stores.settings.proxy; | 11 | const proxySettings = stores.settings.proxy; |
18 | 12 | ||
19 | debug('Service Proxy autorun'); | 13 | debug('Service Proxy autorun'); |
20 | 14 | ||
21 | services.forEach((service) => { | 15 | services.forEach((service) => { |
22 | const s = session.fromPartition(`persist:service-${service.id}`); | 16 | const serviceProxyConfig = proxySettings[service.id]; |
23 | 17 | if (serviceProxyConfig && serviceProxyConfig.isEnabled && serviceProxyConfig.host) { | |
24 | if (config.isEnabled) { | 18 | const proxyHost = `${serviceProxyConfig.host}${serviceProxyConfig.port ? `:${serviceProxyConfig.port}` : ''}`; |
25 | const serviceProxyConfig = proxySettings[service.id]; | 19 | debug(`Setting proxy config from service settings for "${service.name}" (${service.id}) to`, proxyHost); |
26 | 20 | ||
27 | if (serviceProxyConfig && serviceProxyConfig.isEnabled && serviceProxyConfig.host) { | 21 | session.fromPartition(`persist:service-${service.id}`).setProxy({ proxyRules: proxyHost }, () => { |
28 | const proxyHost = `${serviceProxyConfig.host}${serviceProxyConfig.port ? `:${serviceProxyConfig.port}` : ''}`; | 22 | debug(`Using proxy "${proxyHost}" for "${service.name}" (${service.id})`); |
29 | debug(`Setting proxy config from service settings for "${service.name}" (${service.id}) to`, proxyHost); | 23 | }); |
30 | |||
31 | s.setProxy({ proxyRules: proxyHost }, () => { | ||
32 | debug(`Using proxy "${proxyHost}" for "${service.name}" (${service.id})`); | ||
33 | }); | ||
34 | } | ||
35 | } | 24 | } |
36 | }); | 25 | }); |
37 | }); | 26 | }); |