From 62972747866740dae84fc7b519fcedd731572329 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Tue, 27 Nov 2018 18:06:14 +0100 Subject: feat(App): Add proxy support for services --- src/api/LocalApi.js | 8 +-- src/api/server/LocalApi.js | 19 ++--- .../settings/account/AccountDashboard.js | 8 +-- .../settings/navigation/SettingsNavigation.js | 25 ++----- .../settings/services/EditServiceForm.js | 45 +++++++++++- .../settings/settings/EditSettingsForm.js | 20 +++--- src/components/subscription/SubscriptionForm.js | 3 - src/components/ui/PremiumFeatureContainer/index.js | 18 ++++- src/config.js | 7 +- src/containers/settings/EditServiceScreen.js | 71 ++++++++++++++++--- src/containers/settings/EditSettingsScreen.js | 1 - .../subscription/SubscriptionFormScreen.js | 1 - src/electron/Settings.js | 24 +++++-- src/electron/ipc-api/appIndicator.js | 2 +- src/electron/ipc-api/settings.js | 10 ++- src/features/delayApp/index.js | 4 +- src/features/serviceProxy/index.js | 56 +++++++++++++++ src/features/spellchecker/index.js | 3 +- src/i18n/locales/en-US.json | 6 ++ src/index.js | 34 ++++++++- src/models/Service.js | 6 +- src/models/Settings.js | 11 ++- src/stores/FeaturesStore.js | 2 + src/stores/ServicesStore.js | 15 ++++ src/stores/SettingsStore.js | 81 ++++++++++++++++++---- src/styles/settings.scss | 5 ++ src/webview/plugin.js | 8 ++- 27 files changed, 381 insertions(+), 112 deletions(-) create mode 100644 src/features/serviceProxy/index.js (limited to 'src') diff --git a/src/api/LocalApi.js b/src/api/LocalApi.js index 741917104..e2a46874a 100644 --- a/src/api/LocalApi.js +++ b/src/api/LocalApi.js @@ -4,12 +4,12 @@ export default class LocalApi { this.local = local; } - getAppSettings() { - return this.local.getAppSettings(); + getAppSettings(type) { + return this.local.getAppSettings(type); } - updateAppSettings(data) { - return this.local.updateAppSettings(data); + updateAppSettings(type, data) { + return this.local.updateAppSettings(type, data); } getAppCacheSize() { diff --git a/src/api/server/LocalApi.js b/src/api/server/LocalApi.js index 4814bba66..ab1604a27 100644 --- a/src/api/server/LocalApi.js +++ b/src/api/server/LocalApi.js @@ -9,20 +9,23 @@ const { session } = remote; export default class LocalApi { // Settings - getAppSettings() { + getAppSettings(type) { return new Promise((resolve) => { - ipcRenderer.once('appSettings', (event, data) => { - debug('LocalApi::getAppSettings resolves', data); - resolve(data); + ipcRenderer.once('appSettings', (event, resp) => { + debug('LocalApi::getAppSettings resolves', resp.type, resp.data); + resolve(resp); }); - ipcRenderer.send('getAppSettings'); + ipcRenderer.send('getAppSettings', type); }); } - async updateAppSettings(data) { - debug('LocalApi::updateAppSettings resolves', data); - ipcRenderer.send('updateAppSettings', data); + async updateAppSettings(type, data) { + debug('LocalApi::updateAppSettings resolves', type, data); + ipcRenderer.send('updateAppSettings', { + type, + data, + }); } // Services diff --git a/src/components/settings/account/AccountDashboard.js b/src/components/settings/account/AccountDashboard.js index ede519fd6..06c7074dd 100644 --- a/src/components/settings/account/AccountDashboard.js +++ b/src/components/settings/account/AccountDashboard.js @@ -180,11 +180,9 @@ export default @observer class AccountDashboard extends Component { {intl.formatMessage(messages.accountTypeEnterprise)} )} - {!user.isSSO && ( - - {intl.formatMessage(messages.accountEditButton)} - - )} + + {intl.formatMessage(messages.accountEditButton)} + {user.emailValidated} diff --git a/src/components/settings/navigation/SettingsNavigation.js b/src/components/settings/navigation/SettingsNavigation.js index d8b410aaf..b86d94ac7 100644 --- a/src/components/settings/navigation/SettingsNavigation.js +++ b/src/components/settings/navigation/SettingsNavigation.js @@ -43,20 +43,17 @@ export default @inject('stores') @observer class SettingsNavigation extends Comp render() { const { serviceCount } = this.props; - const { features } = this.props.stores.features; const { intl } = this.context; return (
- {features.userCanManageServices && ( - - {intl.formatMessage(messages.availableServices)} - - )} + + {intl.formatMessage(messages.availableServices)} +
+ + {isProxyFeatureEnabled && ( + +
+

+ {intl.formatMessage(messages.headlineProxy)} + beta +

+ + {form.$('proxy.isEnabled').value && ( +
+ + + +

+ + {intl.formatMessage(messages.proxyInfo)} +

+
+ )} +
+
+ )} + {recipe.message && (

@@ -328,7 +367,7 @@ export default @observer class EditServiceForm extends Component {

{/* Delete Button */} - {action === 'edit' && userCanManageServices && deleteButton} + {action === 'edit' && deleteButton} {/* Save Button */} {isSaving || isValidatingCustomUrl ? ( diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js index b87c11fc4..280449ead 100644 --- a/src/components/settings/settings/EditSettingsForm.js +++ b/src/components/settings/settings/EditSettingsForm.js @@ -96,7 +96,6 @@ export default @observer class EditSettingsForm extends Component { isClearingAllCache: PropTypes.bool.isRequired, onClearAllCache: PropTypes.func.isRequired, cacheSize: PropTypes.string.isRequired, - isPremiumUser: PropTypes.bool.isRequired, isSpellcheckerPremiumFeature: PropTypes.bool.isRequired, }; @@ -127,7 +126,6 @@ export default @observer class EditSettingsForm extends Component { isClearingAllCache, onClearAllCache, cacheSize, - isPremiumUser, isSpellcheckerPremiumFeature, } = this.props; const { intl } = this.context; @@ -180,16 +178,14 @@ export default @observer class EditSettingsForm extends Component { {/* Advanced */}

{intl.formatMessage(messages.headlineAdvanced)}

- {!isPremiumUser && isSpellcheckerPremiumFeature ? ( - - - - ) : ( - - )} + + +

{intl.formatMessage(messages.enableGPUAccelerationInfo)}

{/*