diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/electron/Settings.js | 4 | ||||
-rw-r--r-- | src/features/planSelection/components/PlanSelection.js | 51 | ||||
-rw-r--r-- | src/features/planSelection/containers/PlanSelectionScreen.js | 10 | ||||
-rw-r--r-- | src/features/planSelection/store.js | 4 | ||||
-rw-r--r-- | src/i18n/locales/defaultMessages.json | 57 | ||||
-rw-r--r-- | src/i18n/locales/en-US.json | 1 | ||||
-rw-r--r-- | src/i18n/messages/src/features/planSelection/components/PlanSelection.json | 57 | ||||
-rw-r--r-- | src/index.js | 13 | ||||
-rw-r--r-- | src/webview/spellchecker.js | 2 |
9 files changed, 130 insertions, 69 deletions
diff --git a/src/electron/Settings.js b/src/electron/Settings.js index 63f43b6b7..e4ad6b612 100644 --- a/src/electron/Settings.js +++ b/src/electron/Settings.js | |||
@@ -47,7 +47,9 @@ export default class Settings { | |||
47 | } | 47 | } |
48 | 48 | ||
49 | _writeFile() { | 49 | _writeFile() { |
50 | outputJsonSync(this.settingsFile, this.store); | 50 | outputJsonSync(this.settingsFile, this.store, { |
51 | spaces: 2, | ||
52 | }); | ||
51 | debug('Write settings file', this.type, toJS(this.store)); | 53 | debug('Write settings file', this.type, toJS(this.store)); |
52 | } | 54 | } |
53 | 55 | ||
diff --git a/src/features/planSelection/components/PlanSelection.js b/src/features/planSelection/components/PlanSelection.js index 355187516..b6bb9d32d 100644 --- a/src/features/planSelection/components/PlanSelection.js +++ b/src/features/planSelection/components/PlanSelection.js | |||
@@ -6,12 +6,13 @@ import { defineMessages, intlShape } from 'react-intl'; | |||
6 | import { H1, H2, Icon } from '@meetfranz/ui'; | 6 | import { H1, H2, Icon } from '@meetfranz/ui'; |
7 | import color from 'color'; | 7 | import color from 'color'; |
8 | 8 | ||
9 | import { mdiRocket } from '@mdi/js'; | 9 | import { mdiRocket, mdiArrowRight } from '@mdi/js'; |
10 | import PlanItem from './PlanItem'; | 10 | import PlanItem from './PlanItem'; |
11 | import { i18nPlanName } from '../../../helpers/plan-helpers'; | 11 | import { i18nPlanName } from '../../../helpers/plan-helpers'; |
12 | import { PLANS } from '../../../config'; | 12 | import { PLANS } from '../../../config'; |
13 | import { FeatureList } from '../../../components/ui/FeatureList'; | 13 | import { FeatureList } from '../../../components/ui/FeatureList'; |
14 | import Appear from '../../../components/ui/effects/Appear'; | 14 | import Appear from '../../../components/ui/effects/Appear'; |
15 | import { gaPage } from '../../../lib/analytics'; | ||
15 | 16 | ||
16 | const messages = defineMessages({ | 17 | const messages = defineMessages({ |
17 | welcome: { | 18 | welcome: { |
@@ -58,6 +59,10 @@ const messages = defineMessages({ | |||
58 | id: 'feature.planSelection.fullFeatureList', | 59 | id: 'feature.planSelection.fullFeatureList', |
59 | defaultMessage: '!!!Complete comparison of all plans', | 60 | defaultMessage: '!!!Complete comparison of all plans', |
60 | }, | 61 | }, |
62 | pricesBasedOnAnnualPayment: { | ||
63 | id: 'feature.planSelection.pricesBasedOnAnnualPayment', | ||
64 | defaultMessage: '!!!All prices based on yearly payment', | ||
65 | }, | ||
61 | }); | 66 | }); |
62 | 67 | ||
63 | const styles = theme => ({ | 68 | const styles = theme => ({ |
@@ -131,11 +136,23 @@ const styles = theme => ({ | |||
131 | borderBottom: [1, 'solid', '#CECECE'], | 136 | borderBottom: [1, 'solid', '#CECECE'], |
132 | }, | 137 | }, |
133 | }, | 138 | }, |
139 | footer: { | ||
140 | display: 'flex', | ||
141 | color: theme.styleTypes.primary.contrast, | ||
142 | marginTop: 20, | ||
143 | padding: [0, 15], | ||
144 | }, | ||
134 | fullFeatureList: { | 145 | fullFeatureList: { |
135 | marginTop: 40, | 146 | marginRight: 'auto', |
136 | textAlign: 'center', | 147 | textAlign: 'center', |
137 | display: 'block', | 148 | display: 'flex', |
149 | justifyContent: 'center', | ||
150 | alignItems: 'center', | ||
138 | color: `${theme.styleTypes.primary.contrast} !important`, | 151 | color: `${theme.styleTypes.primary.contrast} !important`, |
152 | |||
153 | '& svg': { | ||
154 | marginRight: 5, | ||
155 | }, | ||
139 | }, | 156 | }, |
140 | scrollContainer: { | 157 | scrollContainer: { |
141 | border: '1px solid red', | 158 | border: '1px solid red', |
@@ -144,6 +161,10 @@ const styles = theme => ({ | |||
144 | featuredPlan: { | 161 | featuredPlan: { |
145 | transform: 'scale(1.05)', | 162 | transform: 'scale(1.05)', |
146 | }, | 163 | }, |
164 | disclaimer: { | ||
165 | textAlign: 'right', | ||
166 | margin: [10, 15, 0, 0], | ||
167 | }, | ||
147 | }); | 168 | }); |
148 | 169 | ||
149 | @injectSheet(styles) @observer | 170 | @injectSheet(styles) @observer |
@@ -163,6 +184,10 @@ class PlanSelection extends Component { | |||
163 | intl: intlShape, | 184 | intl: intlShape, |
164 | }; | 185 | }; |
165 | 186 | ||
187 | componentDidMount() { | ||
188 | gaPage('/select-plan'); | ||
189 | } | ||
190 | |||
166 | render() { | 191 | render() { |
167 | const { | 192 | const { |
168 | classes, | 193 | classes, |
@@ -233,13 +258,19 @@ class PlanSelection extends Component { | |||
233 | /> | 258 | /> |
234 | </PlanItem> | 259 | </PlanItem> |
235 | </div> | 260 | </div> |
236 | <a | 261 | <div className={classes.footer}> |
237 | href="https://meetfranz.com/pricing" | 262 | <a |
238 | target="_blank" | 263 | href="https://meetfranz.com/pricing" |
239 | className={classes.fullFeatureList} | 264 | target="_blank" |
240 | > | 265 | className={classes.fullFeatureList} |
241 | {intl.formatMessage(messages.fullFeatureList)} | 266 | > |
242 | </a> | 267 | <Icon icon={mdiArrowRight} /> |
268 | {intl.formatMessage(messages.fullFeatureList)} | ||
269 | </a> | ||
270 | {/* <p className={classes.disclaimer}> */} | ||
271 | {intl.formatMessage(messages.pricesBasedOnAnnualPayment)} | ||
272 | {/* </p> */} | ||
273 | </div> | ||
243 | </div> | 274 | </div> |
244 | </div> | 275 | </div> |
245 | </Appear> | 276 | </Appear> |
diff --git a/src/features/planSelection/containers/PlanSelectionScreen.js b/src/features/planSelection/containers/PlanSelectionScreen.js index 6e8cdbf47..cb62f45d3 100644 --- a/src/features/planSelection/containers/PlanSelectionScreen.js +++ b/src/features/planSelection/containers/PlanSelectionScreen.js | |||
@@ -9,7 +9,7 @@ import UserStore from '../../../stores/UserStore'; | |||
9 | import PlanSelection from '../components/PlanSelection'; | 9 | import PlanSelection from '../components/PlanSelection'; |
10 | import ErrorBoundary from '../../../components/util/ErrorBoundary'; | 10 | import ErrorBoundary from '../../../components/util/ErrorBoundary'; |
11 | import { planSelectionStore, GA_CATEGORY_PLAN_SELECTION } from '..'; | 11 | import { planSelectionStore, GA_CATEGORY_PLAN_SELECTION } from '..'; |
12 | import { gaEvent } from '../../../lib/analytics'; | 12 | import { gaEvent, gaPage } from '../../../lib/analytics'; |
13 | 13 | ||
14 | const { dialog, app } = remote; | 14 | const { dialog, app } = remote; |
15 | 15 | ||
@@ -38,10 +38,6 @@ class PlanSelectionScreen extends Component { | |||
38 | intl: intlShape, | 38 | intl: intlShape, |
39 | }; | 39 | }; |
40 | 40 | ||
41 | componentDidMount() { | ||
42 | gaEvent(GA_CATEGORY_PLAN_SELECTION, 'show'); | ||
43 | } | ||
44 | |||
45 | upgradeAccount(planId) { | 41 | upgradeAccount(planId) { |
46 | const { upgradeAccount } = this.props.actions.payment; | 42 | const { upgradeAccount } = this.props.actions.payment; |
47 | 43 | ||
@@ -80,6 +76,8 @@ class PlanSelectionScreen extends Component { | |||
80 | } | 76 | } |
81 | }} | 77 | }} |
82 | stayOnFree={() => { | 78 | stayOnFree={() => { |
79 | gaPage('/select-plan/downgrade'); | ||
80 | |||
83 | const selection = dialog.showMessageBoxSync(app.mainWindow, { | 81 | const selection = dialog.showMessageBoxSync(app.mainWindow, { |
84 | type: 'question', | 82 | type: 'question', |
85 | message: intl.formatMessage(messages.dialogTitle), | 83 | message: intl.formatMessage(messages.dialogTitle), |
@@ -101,7 +99,7 @@ class PlanSelectionScreen extends Component { | |||
101 | } else { | 99 | } else { |
102 | this.upgradeAccount(plans.personal.yearly.id); | 100 | this.upgradeAccount(plans.personal.yearly.id); |
103 | 101 | ||
104 | gaEvent(GA_CATEGORY_PLAN_SELECTION, 'SelectPlan', 'Revoke'); | 102 | gaEvent(GA_CATEGORY_PLAN_SELECTION, 'SelectPlan', 'Downgrade'); |
105 | } | 103 | } |
106 | }} | 104 | }} |
107 | subscriptionExpired={user.team && user.team.state === 'expired' && !user.team.userHasDowngraded} | 105 | subscriptionExpired={user.team && user.team.state === 'expired' && !user.team.userHasDowngraded} |
diff --git a/src/features/planSelection/store.js b/src/features/planSelection/store.js index 8622d4e5a..448e323ff 100644 --- a/src/features/planSelection/store.js +++ b/src/features/planSelection/store.js | |||
@@ -19,8 +19,8 @@ export default class PlanSelectionStore extends FeatureStore { | |||
19 | @observable hideOverlay = false; | 19 | @observable hideOverlay = false; |
20 | 20 | ||
21 | @computed get showPlanSelectionOverlay() { | 21 | @computed get showPlanSelectionOverlay() { |
22 | const { team } = this.stores.user; | 22 | const { team, isPremium } = this.stores.user; |
23 | if (team && !this.hideOverlay) { | 23 | if (team && !this.hideOverlay && !isPremium) { |
24 | return team.state === 'expired' && !team.userHasDowngraded; | 24 | return team.state === 'expired' && !team.userHasDowngraded; |
25 | } | 25 | } |
26 | 26 | ||
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 9818dca87..9cfeaed42 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json | |||
@@ -3998,143 +3998,156 @@ | |||
3998 | "defaultMessage": "!!!Are you ready to choose, {name}", | 3998 | "defaultMessage": "!!!Are you ready to choose, {name}", |
3999 | "end": { | 3999 | "end": { |
4000 | "column": 3, | 4000 | "column": 3, |
4001 | "line": 20 | 4001 | "line": 21 |
4002 | }, | 4002 | }, |
4003 | "file": "src/features/planSelection/components/PlanSelection.js", | 4003 | "file": "src/features/planSelection/components/PlanSelection.js", |
4004 | "id": "feature.planSelection.fullscreen.welcome", | 4004 | "id": "feature.planSelection.fullscreen.welcome", |
4005 | "start": { | 4005 | "start": { |
4006 | "column": 11, | 4006 | "column": 11, |
4007 | "line": 17 | 4007 | "line": 18 |
4008 | } | 4008 | } |
4009 | }, | 4009 | }, |
4010 | { | 4010 | { |
4011 | "defaultMessage": "!!!It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", | 4011 | "defaultMessage": "!!!It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", |
4012 | "end": { | 4012 | "end": { |
4013 | "column": 3, | 4013 | "column": 3, |
4014 | "line": 24 | 4014 | "line": 25 |
4015 | }, | 4015 | }, |
4016 | "file": "src/features/planSelection/components/PlanSelection.js", | 4016 | "file": "src/features/planSelection/components/PlanSelection.js", |
4017 | "id": "feature.planSelection.fullscreen.subheadline", | 4017 | "id": "feature.planSelection.fullscreen.subheadline", |
4018 | "start": { | 4018 | "start": { |
4019 | "column": 15, | 4019 | "column": 15, |
4020 | "line": 21 | 4020 | "line": 22 |
4021 | } | 4021 | } |
4022 | }, | 4022 | }, |
4023 | { | 4023 | { |
4024 | "defaultMessage": "!!!Basic functionality", | 4024 | "defaultMessage": "!!!Basic functionality", |
4025 | "end": { | 4025 | "end": { |
4026 | "column": 3, | 4026 | "column": 3, |
4027 | "line": 28 | 4027 | "line": 29 |
4028 | }, | 4028 | }, |
4029 | "file": "src/features/planSelection/components/PlanSelection.js", | 4029 | "file": "src/features/planSelection/components/PlanSelection.js", |
4030 | "id": "feature.planSelection.free.text", | 4030 | "id": "feature.planSelection.free.text", |
4031 | "start": { | 4031 | "start": { |
4032 | "column": 12, | 4032 | "column": 12, |
4033 | "line": 25 | 4033 | "line": 26 |
4034 | } | 4034 | } |
4035 | }, | 4035 | }, |
4036 | { | 4036 | { |
4037 | "defaultMessage": "!!!More services, no waiting - ideal for personal use.", | 4037 | "defaultMessage": "!!!More services, no waiting - ideal for personal use.", |
4038 | "end": { | 4038 | "end": { |
4039 | "column": 3, | 4039 | "column": 3, |
4040 | "line": 32 | 4040 | "line": 33 |
4041 | }, | 4041 | }, |
4042 | "file": "src/features/planSelection/components/PlanSelection.js", | 4042 | "file": "src/features/planSelection/components/PlanSelection.js", |
4043 | "id": "feature.planSelection.personal.text", | 4043 | "id": "feature.planSelection.personal.text", |
4044 | "start": { | 4044 | "start": { |
4045 | "column": 16, | 4045 | "column": 16, |
4046 | "line": 29 | 4046 | "line": 30 |
4047 | } | 4047 | } |
4048 | }, | 4048 | }, |
4049 | { | 4049 | { |
4050 | "defaultMessage": "!!!Unlimited services and professional features for you - and your team.", | 4050 | "defaultMessage": "!!!Unlimited services and professional features for you - and your team.", |
4051 | "end": { | 4051 | "end": { |
4052 | "column": 3, | 4052 | "column": 3, |
4053 | "line": 36 | 4053 | "line": 37 |
4054 | }, | 4054 | }, |
4055 | "file": "src/features/planSelection/components/PlanSelection.js", | 4055 | "file": "src/features/planSelection/components/PlanSelection.js", |
4056 | "id": "feature.planSelection.pro.text", | 4056 | "id": "feature.planSelection.pro.text", |
4057 | "start": { | 4057 | "start": { |
4058 | "column": 20, | 4058 | "column": 20, |
4059 | "line": 33 | 4059 | "line": 34 |
4060 | } | 4060 | } |
4061 | }, | 4061 | }, |
4062 | { | 4062 | { |
4063 | "defaultMessage": "!!!Stay on Free", | 4063 | "defaultMessage": "!!!Stay on Free", |
4064 | "end": { | 4064 | "end": { |
4065 | "column": 3, | 4065 | "column": 3, |
4066 | "line": 40 | 4066 | "line": 41 |
4067 | }, | 4067 | }, |
4068 | "file": "src/features/planSelection/components/PlanSelection.js", | 4068 | "file": "src/features/planSelection/components/PlanSelection.js", |
4069 | "id": "feature.planSelection.cta.stayOnFree", | 4069 | "id": "feature.planSelection.cta.stayOnFree", |
4070 | "start": { | 4070 | "start": { |
4071 | "column": 17, | 4071 | "column": 17, |
4072 | "line": 37 | 4072 | "line": 38 |
4073 | } | 4073 | } |
4074 | }, | 4074 | }, |
4075 | { | 4075 | { |
4076 | "defaultMessage": "!!!Downgrade to Free", | 4076 | "defaultMessage": "!!!Downgrade to Free", |
4077 | "end": { | 4077 | "end": { |
4078 | "column": 3, | 4078 | "column": 3, |
4079 | "line": 44 | 4079 | "line": 45 |
4080 | }, | 4080 | }, |
4081 | "file": "src/features/planSelection/components/PlanSelection.js", | 4081 | "file": "src/features/planSelection/components/PlanSelection.js", |
4082 | "id": "feature.planSelection.cta.ctaDowngradeFree", | 4082 | "id": "feature.planSelection.cta.ctaDowngradeFree", |
4083 | "start": { | 4083 | "start": { |
4084 | "column": 20, | 4084 | "column": 20, |
4085 | "line": 41 | 4085 | "line": 42 |
4086 | } | 4086 | } |
4087 | }, | 4087 | }, |
4088 | { | 4088 | { |
4089 | "defaultMessage": "!!!Start my free 14-days Trial", | 4089 | "defaultMessage": "!!!Start my free 14-days Trial", |
4090 | "end": { | 4090 | "end": { |
4091 | "column": 3, | 4091 | "column": 3, |
4092 | "line": 48 | 4092 | "line": 49 |
4093 | }, | 4093 | }, |
4094 | "file": "src/features/planSelection/components/PlanSelection.js", | 4094 | "file": "src/features/planSelection/components/PlanSelection.js", |
4095 | "id": "feature.planSelection.cta.trial", | 4095 | "id": "feature.planSelection.cta.trial", |
4096 | "start": { | 4096 | "start": { |
4097 | "column": 15, | 4097 | "column": 15, |
4098 | "line": 45 | 4098 | "line": 46 |
4099 | } | 4099 | } |
4100 | }, | 4100 | }, |
4101 | { | 4101 | { |
4102 | "defaultMessage": "!!!Choose Personal", | 4102 | "defaultMessage": "!!!Choose Personal", |
4103 | "end": { | 4103 | "end": { |
4104 | "column": 3, | 4104 | "column": 3, |
4105 | "line": 52 | 4105 | "line": 53 |
4106 | }, | 4106 | }, |
4107 | "file": "src/features/planSelection/components/PlanSelection.js", | 4107 | "file": "src/features/planSelection/components/PlanSelection.js", |
4108 | "id": "feature.planSelection.cta.upgradePersonal", | 4108 | "id": "feature.planSelection.cta.upgradePersonal", |
4109 | "start": { | 4109 | "start": { |
4110 | "column": 23, | 4110 | "column": 23, |
4111 | "line": 49 | 4111 | "line": 50 |
4112 | } | 4112 | } |
4113 | }, | 4113 | }, |
4114 | { | 4114 | { |
4115 | "defaultMessage": "!!!Choose Professional", | 4115 | "defaultMessage": "!!!Choose Professional", |
4116 | "end": { | 4116 | "end": { |
4117 | "column": 3, | 4117 | "column": 3, |
4118 | "line": 56 | 4118 | "line": 57 |
4119 | }, | 4119 | }, |
4120 | "file": "src/features/planSelection/components/PlanSelection.js", | 4120 | "file": "src/features/planSelection/components/PlanSelection.js", |
4121 | "id": "feature.planSelection.cta.upgradePro", | 4121 | "id": "feature.planSelection.cta.upgradePro", |
4122 | "start": { | 4122 | "start": { |
4123 | "column": 18, | 4123 | "column": 18, |
4124 | "line": 53 | 4124 | "line": 54 |
4125 | } | 4125 | } |
4126 | }, | 4126 | }, |
4127 | { | 4127 | { |
4128 | "defaultMessage": "!!!Complete comparison of all plans", | 4128 | "defaultMessage": "!!!Complete comparison of all plans", |
4129 | "end": { | 4129 | "end": { |
4130 | "column": 3, | 4130 | "column": 3, |
4131 | "line": 60 | 4131 | "line": 61 |
4132 | }, | 4132 | }, |
4133 | "file": "src/features/planSelection/components/PlanSelection.js", | 4133 | "file": "src/features/planSelection/components/PlanSelection.js", |
4134 | "id": "feature.planSelection.fullFeatureList", | 4134 | "id": "feature.planSelection.fullFeatureList", |
4135 | "start": { | 4135 | "start": { |
4136 | "column": 19, | 4136 | "column": 19, |
4137 | "line": 57 | 4137 | "line": 58 |
4138 | } | ||
4139 | }, | ||
4140 | { | ||
4141 | "defaultMessage": "!!!All prices based on yearly payment", | ||
4142 | "end": { | ||
4143 | "column": 3, | ||
4144 | "line": 65 | ||
4145 | }, | ||
4146 | "file": "src/features/planSelection/components/PlanSelection.js", | ||
4147 | "id": "feature.planSelection.pricesBasedOnAnnualPayment", | ||
4148 | "start": { | ||
4149 | "column": 30, | ||
4150 | "line": 62 | ||
4138 | } | 4151 | } |
4139 | } | 4152 | } |
4140 | ], | 4153 | ], |
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 8bef09d4d..a701836dc 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json | |||
@@ -23,6 +23,7 @@ | |||
23 | "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", | 23 | "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", |
24 | "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}?", | 24 | "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}?", |
25 | "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", | 25 | "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", |
26 | "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", | ||
26 | "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", | 27 | "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", |
27 | "feature.serviceLimit.limitReached": "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | 28 | "feature.serviceLimit.limitReached": "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", |
28 | "feature.shareFranz.action.email": "Send as email", | 29 | "feature.shareFranz.action.email": "Send as email", |
diff --git a/src/i18n/messages/src/features/planSelection/components/PlanSelection.json b/src/i18n/messages/src/features/planSelection/components/PlanSelection.json index 2e66c8dfe..7f1de6cfd 100644 --- a/src/i18n/messages/src/features/planSelection/components/PlanSelection.json +++ b/src/i18n/messages/src/features/planSelection/components/PlanSelection.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Are you ready to choose, {name}", | 4 | "defaultMessage": "!!!Are you ready to choose, {name}", |
5 | "file": "src/features/planSelection/components/PlanSelection.js", | 5 | "file": "src/features/planSelection/components/PlanSelection.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 17, | 7 | "line": 18, |
8 | "column": 11 | 8 | "column": 11 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 20, | 11 | "line": 21, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", | 17 | "defaultMessage": "!!!It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", |
18 | "file": "src/features/planSelection/components/PlanSelection.js", | 18 | "file": "src/features/planSelection/components/PlanSelection.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 21, | 20 | "line": 22, |
21 | "column": 15 | 21 | "column": 15 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 24, | 24 | "line": 25, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
30 | "defaultMessage": "!!!Basic functionality", | 30 | "defaultMessage": "!!!Basic functionality", |
31 | "file": "src/features/planSelection/components/PlanSelection.js", | 31 | "file": "src/features/planSelection/components/PlanSelection.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 25, | 33 | "line": 26, |
34 | "column": 12 | 34 | "column": 12 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 28, | 37 | "line": 29, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,11 +43,11 @@ | |||
43 | "defaultMessage": "!!!More services, no waiting - ideal for personal use.", | 43 | "defaultMessage": "!!!More services, no waiting - ideal for personal use.", |
44 | "file": "src/features/planSelection/components/PlanSelection.js", | 44 | "file": "src/features/planSelection/components/PlanSelection.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 29, | 46 | "line": 30, |
47 | "column": 16 | 47 | "column": 16 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 32, | 50 | "line": 33, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | }, | 53 | }, |
@@ -56,11 +56,11 @@ | |||
56 | "defaultMessage": "!!!Unlimited services and professional features for you - and your team.", | 56 | "defaultMessage": "!!!Unlimited services and professional features for you - and your team.", |
57 | "file": "src/features/planSelection/components/PlanSelection.js", | 57 | "file": "src/features/planSelection/components/PlanSelection.js", |
58 | "start": { | 58 | "start": { |
59 | "line": 33, | 59 | "line": 34, |
60 | "column": 20 | 60 | "column": 20 |
61 | }, | 61 | }, |
62 | "end": { | 62 | "end": { |
63 | "line": 36, | 63 | "line": 37, |
64 | "column": 3 | 64 | "column": 3 |
65 | } | 65 | } |
66 | }, | 66 | }, |
@@ -69,11 +69,11 @@ | |||
69 | "defaultMessage": "!!!Stay on Free", | 69 | "defaultMessage": "!!!Stay on Free", |
70 | "file": "src/features/planSelection/components/PlanSelection.js", | 70 | "file": "src/features/planSelection/components/PlanSelection.js", |
71 | "start": { | 71 | "start": { |
72 | "line": 37, | 72 | "line": 38, |
73 | "column": 17 | 73 | "column": 17 |
74 | }, | 74 | }, |
75 | "end": { | 75 | "end": { |
76 | "line": 40, | 76 | "line": 41, |
77 | "column": 3 | 77 | "column": 3 |
78 | } | 78 | } |
79 | }, | 79 | }, |
@@ -82,11 +82,11 @@ | |||
82 | "defaultMessage": "!!!Downgrade to Free", | 82 | "defaultMessage": "!!!Downgrade to Free", |
83 | "file": "src/features/planSelection/components/PlanSelection.js", | 83 | "file": "src/features/planSelection/components/PlanSelection.js", |
84 | "start": { | 84 | "start": { |
85 | "line": 41, | 85 | "line": 42, |
86 | "column": 20 | 86 | "column": 20 |
87 | }, | 87 | }, |
88 | "end": { | 88 | "end": { |
89 | "line": 44, | 89 | "line": 45, |
90 | "column": 3 | 90 | "column": 3 |
91 | } | 91 | } |
92 | }, | 92 | }, |
@@ -95,11 +95,11 @@ | |||
95 | "defaultMessage": "!!!Start my free 14-days Trial", | 95 | "defaultMessage": "!!!Start my free 14-days Trial", |
96 | "file": "src/features/planSelection/components/PlanSelection.js", | 96 | "file": "src/features/planSelection/components/PlanSelection.js", |
97 | "start": { | 97 | "start": { |
98 | "line": 45, | 98 | "line": 46, |
99 | "column": 15 | 99 | "column": 15 |
100 | }, | 100 | }, |
101 | "end": { | 101 | "end": { |
102 | "line": 48, | 102 | "line": 49, |
103 | "column": 3 | 103 | "column": 3 |
104 | } | 104 | } |
105 | }, | 105 | }, |
@@ -108,11 +108,11 @@ | |||
108 | "defaultMessage": "!!!Choose Personal", | 108 | "defaultMessage": "!!!Choose Personal", |
109 | "file": "src/features/planSelection/components/PlanSelection.js", | 109 | "file": "src/features/planSelection/components/PlanSelection.js", |
110 | "start": { | 110 | "start": { |
111 | "line": 49, | 111 | "line": 50, |
112 | "column": 23 | 112 | "column": 23 |
113 | }, | 113 | }, |
114 | "end": { | 114 | "end": { |
115 | "line": 52, | 115 | "line": 53, |
116 | "column": 3 | 116 | "column": 3 |
117 | } | 117 | } |
118 | }, | 118 | }, |
@@ -121,11 +121,11 @@ | |||
121 | "defaultMessage": "!!!Choose Professional", | 121 | "defaultMessage": "!!!Choose Professional", |
122 | "file": "src/features/planSelection/components/PlanSelection.js", | 122 | "file": "src/features/planSelection/components/PlanSelection.js", |
123 | "start": { | 123 | "start": { |
124 | "line": 53, | 124 | "line": 54, |
125 | "column": 18 | 125 | "column": 18 |
126 | }, | 126 | }, |
127 | "end": { | 127 | "end": { |
128 | "line": 56, | 128 | "line": 57, |
129 | "column": 3 | 129 | "column": 3 |
130 | } | 130 | } |
131 | }, | 131 | }, |
@@ -134,11 +134,24 @@ | |||
134 | "defaultMessage": "!!!Complete comparison of all plans", | 134 | "defaultMessage": "!!!Complete comparison of all plans", |
135 | "file": "src/features/planSelection/components/PlanSelection.js", | 135 | "file": "src/features/planSelection/components/PlanSelection.js", |
136 | "start": { | 136 | "start": { |
137 | "line": 57, | 137 | "line": 58, |
138 | "column": 19 | 138 | "column": 19 |
139 | }, | 139 | }, |
140 | "end": { | 140 | "end": { |
141 | "line": 60, | 141 | "line": 61, |
142 | "column": 3 | ||
143 | } | ||
144 | }, | ||
145 | { | ||
146 | "id": "feature.planSelection.pricesBasedOnAnnualPayment", | ||
147 | "defaultMessage": "!!!All prices based on yearly payment", | ||
148 | "file": "src/features/planSelection/components/PlanSelection.js", | ||
149 | "start": { | ||
150 | "line": 62, | ||
151 | "column": 30 | ||
152 | }, | ||
153 | "end": { | ||
154 | "line": 65, | ||
142 | "column": 3 | 155 | "column": 3 |
143 | } | 156 | } |
144 | } | 157 | } |
diff --git a/src/index.js b/src/index.js index 7de7a5e1c..3056a8bec 100644 --- a/src/index.js +++ b/src/index.js | |||
@@ -64,8 +64,15 @@ if (isWindows) { | |||
64 | app.setAppUserModelId(appId); | 64 | app.setAppUserModelId(appId); |
65 | } | 65 | } |
66 | 66 | ||
67 | // Initialize Settings | ||
68 | const settings = new Settings('app', DEFAULT_APP_SETTINGS); | ||
69 | const proxySettings = new Settings('proxy'); | ||
70 | |||
71 | // add `liftSingleInstanceLock` to settings.json to override the single instance lock | ||
72 | const liftSingleInstanceLock = settings.get('liftSingleInstanceLock') || false; | ||
73 | |||
67 | // Force single window | 74 | // Force single window |
68 | const gotTheLock = app.requestSingleInstanceLock(); | 75 | const gotTheLock = liftSingleInstanceLock ? true : app.requestSingleInstanceLock(); |
69 | if (!gotTheLock) { | 76 | if (!gotTheLock) { |
70 | app.quit(); | 77 | app.quit(); |
71 | } else { | 78 | } else { |
@@ -112,10 +119,6 @@ if (isLinux && ['Pantheon', 'Unity:Unity7'].indexOf(process.env.XDG_CURRENT_DESK | |||
112 | process.env.XDG_CURRENT_DESKTOP = 'Unity'; | 119 | process.env.XDG_CURRENT_DESKTOP = 'Unity'; |
113 | } | 120 | } |
114 | 121 | ||
115 | // Initialize Settings | ||
116 | const settings = new Settings('app', DEFAULT_APP_SETTINGS); | ||
117 | const proxySettings = new Settings('proxy'); | ||
118 | |||
119 | // Disable GPU acceleration | 122 | // Disable GPU acceleration |
120 | if (!settings.get('enableGPUAcceleration')) { | 123 | if (!settings.get('enableGPUAcceleration')) { |
121 | debug('Disable GPU Acceleration'); | 124 | debug('Disable GPU Acceleration'); |
diff --git a/src/webview/spellchecker.js b/src/webview/spellchecker.js index 06cbd283a..d8f71f61f 100644 --- a/src/webview/spellchecker.js +++ b/src/webview/spellchecker.js | |||
@@ -96,7 +96,7 @@ export function isEnabled() { | |||
96 | 96 | ||
97 | export function disable() { | 97 | export function disable() { |
98 | if (isEnabled()) { | 98 | if (isEnabled()) { |
99 | webFrame.setSpellCheckProvider(currentDict, true, { spellCheck: () => true }); | 99 | webFrame.setSpellCheckProvider(currentDict, { spellCheck: () => true }); |
100 | _isEnabled = false; | 100 | _isEnabled = false; |
101 | currentDict = null; | 101 | currentDict = null; |
102 | } | 102 | } |