From f1d7f88ff0651656ea5ed22737abecede4bac876 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Sun, 25 Nov 2018 20:48:40 +0100 Subject: Fix delayApp issues --- src/components/layout/AppLayout.js | 2 +- src/features/delayApp/Component.js | 8 ++++--- src/features/delayApp/index.js | 2 +- src/features/delayApp/styles.js | 49 ++++++++++++++++++-------------------- 4 files changed, 30 insertions(+), 31 deletions(-) diff --git a/src/components/layout/AppLayout.js b/src/components/layout/AppLayout.js index 4b20fc480..3ababe54a 100644 --- a/src/components/layout/AppLayout.js +++ b/src/components/layout/AppLayout.js @@ -5,7 +5,7 @@ import { defineMessages, intlShape } from 'react-intl'; import { TitleBar } from 'electron-react-titlebar'; import InfoBar from '../ui/InfoBar'; -import { component as DelayApp } from '../../features/delayApp'; +import { Component as DelayApp } from '../../features/delayApp'; import globalMessages from '../../i18n/globalMessages'; import { isWindows } from '../../environment'; diff --git a/src/features/delayApp/Component.js b/src/features/delayApp/Component.js index 2bfa1162e..403340c7b 100644 --- a/src/features/delayApp/Component.js +++ b/src/features/delayApp/Component.js @@ -24,7 +24,7 @@ const messages = defineMessages({ }, }); -export default @inject('actions') @observer @injectSheet(styles) class DelayApp extends Component { +export default @inject('actions') @injectSheet(styles) @observer class DelayApp extends Component { static propTypes = { // eslint-disable-next-line classes: PropTypes.object.isRequired, @@ -39,8 +39,6 @@ export default @inject('actions') @observer @injectSheet(styles) class DelayApp } componentDidMount() { - // const { reload } = this.props; - this.countdownInterval = setInterval(() => { this.setState({ countdown: this.state.countdown - this.countdownIntervalTimeout, @@ -53,6 +51,10 @@ export default @inject('actions') @observer @injectSheet(styles) class DelayApp }, this.countdownIntervalTimeout); } + componentWillUnmount() { + clearInterval(this.countdownInterval); + } + countdownInterval = null; countdownIntervalTimeout = 1000; diff --git a/src/features/delayApp/index.js b/src/features/delayApp/index.js index a3cce03ee..910b54959 100644 --- a/src/features/delayApp/index.js +++ b/src/features/delayApp/index.js @@ -63,5 +63,5 @@ export default function init(stores) { ); } -export const component = DelayAppComponent; +export const Component = DelayAppComponent; diff --git a/src/features/delayApp/styles.js b/src/features/delayApp/styles.js index 097368d9a..5c214cfdf 100644 --- a/src/features/delayApp/styles.js +++ b/src/features/delayApp/styles.js @@ -1,26 +1,23 @@ -export default (theme) => { - console.log(theme); - return ({ - container: { - background: theme.colorBackground, - position: 'absolute', - top: 0, - width: '100%', - display: 'flex', - 'flex-direction': 'column', - 'align-items': 'center', - 'justify-content': 'center', - 'z-index': 150, - }, - headline: { - color: theme.colorHeadline, - margin: [25, 0, 40], - 'max-width': 500, - 'text-align': 'center', - 'line-height': '1.3em', - }, - button: { - margin: [40, 0, 20], - }, - }); -}; +export default theme => ({ + container: { + background: theme.colorBackground, + position: 'absolute', + top: 0, + width: '100%', + display: 'flex', + 'flex-direction': 'column', + 'align-items': 'center', + 'justify-content': 'center', + 'z-index': 150, + }, + headline: { + color: theme.colorHeadline, + margin: [25, 0, 40], + 'max-width': 500, + 'text-align': 'center', + 'line-height': '1.3em', + }, + button: { + margin: [40, 0, 20], + }, +}); -- cgit v1.2.3-70-g09d2 From 0d9c7ff6a638861d54f29bf91c82847cfa62a24c Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Sun, 25 Nov 2018 23:02:12 +0100 Subject: Move spellchecker to premium --- .eslintrc | 1 + .../settings/settings/EditSettingsForm.js | 16 +++++- src/components/subscription/SubscriptionForm.js | 29 ++++------ src/components/ui/PremiumFeatureContainer/index.js | 64 ++++++++++++++++++++++ .../ui/PremiumFeatureContainer/styles.js | 31 +++++++++++ src/components/ui/Toggle.js | 6 +- src/config.js | 1 + src/containers/settings/EditSettingsScreen.js | 7 ++- src/features/spellchecker/index.js | 54 ++++++++++++++++++ src/features/spellchecker/styles.js | 26 +++++++++ src/i18n/locales/en-US.json | 7 ++- src/models/Service.js | 4 ++ src/stores/FeaturesStore.js | 2 + src/theme/dark/index.js | 1 + src/theme/default/index.js | 23 +++++--- 15 files changed, 241 insertions(+), 31 deletions(-) create mode 100644 src/components/ui/PremiumFeatureContainer/index.js create mode 100644 src/components/ui/PremiumFeatureContainer/styles.js create mode 100644 src/features/spellchecker/index.js create mode 100644 src/features/spellchecker/styles.js diff --git a/.eslintrc b/.eslintrc index 8e95ad4fd..948550306 100644 --- a/.eslintrc +++ b/.eslintrc @@ -13,6 +13,7 @@ "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }], + "react/forbid-prop-types": 1, "no-underscore-dangle": 0, "max-len": 0, "class-methods-use-this": 0, diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js index b5c048ebd..b87c11fc4 100644 --- a/src/components/settings/settings/EditSettingsForm.js +++ b/src/components/settings/settings/EditSettingsForm.js @@ -8,6 +8,7 @@ import Form from '../../../lib/Form'; import Button from '../../ui/Button'; import Toggle from '../../ui/Toggle'; import Select from '../../ui/Select'; +import PremiumFeatureContainer from '../../ui/PremiumFeatureContainer'; import { FRANZ_TRANSLATION } from '../../../config'; @@ -95,6 +96,8 @@ 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, }; static contextTypes = { @@ -124,6 +127,8 @@ export default @observer class EditSettingsForm extends Component { isClearingAllCache, onClearAllCache, cacheSize, + isPremiumUser, + isSpellcheckerPremiumFeature, } = this.props; const { intl } = this.context; @@ -175,7 +180,16 @@ export default @observer class EditSettingsForm extends Component { {/* Advanced */}

{intl.formatMessage(messages.headlineAdvanced)}

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

{intl.formatMessage(messages.enableGPUAccelerationInfo)}

{/* + + +

+ + {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)}

{/*