diff options
author | Stefan Malzner <stefan@adlk.io> | 2019-08-19 12:11:38 +0200 |
---|---|---|
committer | Stefan Malzner <stefan@adlk.io> | 2019-08-19 12:11:38 +0200 |
commit | 478b5fc6574765072eafd4fa074ae832e67627bf (patch) | |
tree | 07dba02a6746685b00106ae2f37b529573876852 /src | |
parent | remove monthly & yearly names (diff) | |
download | ferdium-app-478b5fc6574765072eafd4fa074ae832e67627bf.tar.gz ferdium-app-478b5fc6574765072eafd4fa074ae832e67627bf.tar.zst ferdium-app-478b5fc6574765072eafd4fa074ae832e67627bf.zip |
Add trial / subscription handling
Diffstat (limited to 'src')
-rw-r--r-- | src/components/settings/account/AccountDashboard.js | 12 | ||||
-rw-r--r-- | src/components/settings/team/TeamDashboard.js | 10 | ||||
-rw-r--r-- | src/components/subscription/SubscriptionForm.js | 52 | ||||
-rw-r--r-- | src/components/subscription/SubscriptionPopup.js | 6 | ||||
-rw-r--r-- | src/components/subscription/TrialForm.js | 99 | ||||
-rw-r--r-- | src/containers/subscription/SubscriptionFormScreen.js | 83 | ||||
-rw-r--r-- | src/containers/subscription/SubscriptionPopupScreen.js | 3 | ||||
-rw-r--r-- | src/features/workspaces/store.js | 4 | ||||
-rw-r--r-- | src/i18n/locales/defaultMessages.json | 332 | ||||
-rw-r--r-- | src/i18n/locales/en-US.json | 26 | ||||
-rw-r--r-- | src/i18n/messages/src/components/settings/account/AccountDashboard.json | 77 | ||||
-rw-r--r-- | src/i18n/messages/src/components/subscription/SubscriptionForm.json | 51 | ||||
-rw-r--r-- | src/i18n/messages/src/components/subscription/TrialForm.json | 80 | ||||
-rw-r--r-- | src/stores/UserStore.js | 2 |
14 files changed, 423 insertions, 414 deletions
diff --git a/src/components/settings/account/AccountDashboard.js b/src/components/settings/account/AccountDashboard.js index 079d50380..6d10487e8 100644 --- a/src/components/settings/account/AccountDashboard.js +++ b/src/components/settings/account/AccountDashboard.js | |||
@@ -23,10 +23,6 @@ const messages = defineMessages({ | |||
23 | id: 'settings.account.headlineSubscription', | 23 | id: 'settings.account.headlineSubscription', |
24 | defaultMessage: '!!!Your Subscription', | 24 | defaultMessage: '!!!Your Subscription', |
25 | }, | 25 | }, |
26 | headlineUpgrade: { | ||
27 | id: 'settings.account.headlineTrialUpgrade', | ||
28 | defaultMessage: '!!!Get the free 14 day Franz Professional Trial', | ||
29 | }, | ||
30 | headlineDangerZone: { | 26 | headlineDangerZone: { |
31 | id: 'settings.account.headlineDangerZone', | 27 | id: 'settings.account.headlineDangerZone', |
32 | defaultMessage: '!!Danger Zone', | 28 | defaultMessage: '!!Danger Zone', |
@@ -97,10 +93,8 @@ export default @observer class AccountDashboard extends Component { | |||
97 | static propTypes = { | 93 | static propTypes = { |
98 | user: MobxPropTypes.observableObject.isRequired, | 94 | user: MobxPropTypes.observableObject.isRequired, |
99 | isLoading: PropTypes.bool.isRequired, | 95 | isLoading: PropTypes.bool.isRequired, |
100 | isLoadingPlans: PropTypes.bool.isRequired, | ||
101 | userInfoRequestFailed: PropTypes.bool.isRequired, | 96 | userInfoRequestFailed: PropTypes.bool.isRequired, |
102 | retryUserInfoRequest: PropTypes.func.isRequired, | 97 | retryUserInfoRequest: PropTypes.func.isRequired, |
103 | onCloseSubscriptionWindow: PropTypes.func.isRequired, | ||
104 | deleteAccount: PropTypes.func.isRequired, | 98 | deleteAccount: PropTypes.func.isRequired, |
105 | isLoadingDeleteAccount: PropTypes.bool.isRequired, | 99 | isLoadingDeleteAccount: PropTypes.bool.isRequired, |
106 | isDeleteAccountSuccessful: PropTypes.bool.isRequired, | 100 | isDeleteAccountSuccessful: PropTypes.bool.isRequired, |
@@ -117,10 +111,8 @@ export default @observer class AccountDashboard extends Component { | |||
117 | const { | 111 | const { |
118 | user, | 112 | user, |
119 | isLoading, | 113 | isLoading, |
120 | isLoadingPlans, | ||
121 | userInfoRequestFailed, | 114 | userInfoRequestFailed, |
122 | retryUserInfoRequest, | 115 | retryUserInfoRequest, |
123 | onCloseSubscriptionWindow, | ||
124 | deleteAccount, | 116 | deleteAccount, |
125 | isLoadingDeleteAccount, | 117 | isLoadingDeleteAccount, |
126 | isDeleteAccountSuccessful, | 118 | isDeleteAccountSuccessful, |
@@ -134,7 +126,6 @@ export default @observer class AccountDashboard extends Component { | |||
134 | 126 | ||
135 | if (user.team && user.team.plan) { | 127 | if (user.team && user.team.plan) { |
136 | planName = i18nPlanName(user.team.plan, intl); | 128 | planName = i18nPlanName(user.team.plan, intl); |
137 | console.log(planName); | ||
138 | } | 129 | } |
139 | 130 | ||
140 | return ( | 131 | return ( |
@@ -221,7 +212,7 @@ export default @observer class AccountDashboard extends Component { | |||
221 | )} | 212 | )} |
222 | </div> | 213 | </div> |
223 | </div> | 214 | </div> |
224 | {user.isSubscriptionOwner && ( | 215 | {user.isPremium && user.isSubscriptionOwner && ( |
225 | <div className="account"> | 216 | <div className="account"> |
226 | <div className="account__box"> | 217 | <div className="account__box"> |
227 | <H2> | 218 | <H2> |
@@ -268,7 +259,6 @@ export default @observer class AccountDashboard extends Component { | |||
268 | {!user.isPremium && ( | 259 | {!user.isPremium && ( |
269 | <div className="account franz-form"> | 260 | <div className="account franz-form"> |
270 | <div className="account__box"> | 261 | <div className="account__box"> |
271 | <H2>{intl.formatMessage(messages.headlineUpgrade)}</H2> | ||
272 | <SubscriptionForm /> | 262 | <SubscriptionForm /> |
273 | </div> | 263 | </div> |
274 | </div> | 264 | </div> |
diff --git a/src/components/settings/team/TeamDashboard.js b/src/components/settings/team/TeamDashboard.js index 82c517fcb..990ee52e7 100644 --- a/src/components/settings/team/TeamDashboard.js +++ b/src/components/settings/team/TeamDashboard.js | |||
@@ -133,13 +133,13 @@ export default @injectSheet(styles) @observer class TeamDashboard extends Compon | |||
133 | </div> | 133 | </div> |
134 | <img className={classes.image} src="https://cdn.franzinfra.com/announcements/assets/teams.png" alt="Franz for Teams" /> | 134 | <img className={classes.image} src="https://cdn.franzinfra.com/announcements/assets/teams.png" alt="Franz for Teams" /> |
135 | </div> | 135 | </div> |
136 | <Button | ||
137 | label={intl.formatMessage(messages.manageButton)} | ||
138 | onClick={openTeamManagement} | ||
139 | className={classes.cta} | ||
140 | /> | ||
141 | </> | 136 | </> |
142 | </PremiumFeatureContainer> | 137 | </PremiumFeatureContainer> |
138 | <Button | ||
139 | label={intl.formatMessage(messages.manageButton)} | ||
140 | onClick={openTeamManagement} | ||
141 | className={classes.cta} | ||
142 | /> | ||
143 | </> | 143 | </> |
144 | )} | 144 | )} |
145 | </> | 145 | </> |
diff --git a/src/components/subscription/SubscriptionForm.js b/src/components/subscription/SubscriptionForm.js index 0c630f047..641368734 100644 --- a/src/components/subscription/SubscriptionForm.js +++ b/src/components/subscription/SubscriptionForm.js | |||
@@ -1,35 +1,30 @@ | |||
1 | import React, { Component } from 'react'; | 1 | import React, { Component } from 'react'; |
2 | import PropTypes from 'prop-types'; | 2 | import PropTypes from 'prop-types'; |
3 | import { observer } from 'mobx-react'; | 3 | import { observer } from 'mobx-react'; |
4 | import { defineMessages, intlShape } from 'react-intl'; | 4 | import { defineMessages, intlShape, IntlProvider } from 'react-intl'; |
5 | import injectSheet from 'react-jss'; | 5 | import injectSheet from 'react-jss'; |
6 | 6 | ||
7 | import { H3 } from '@meetfranz/ui'; | 7 | import { H3, H2 } from '@meetfranz/ui'; |
8 | 8 | ||
9 | import { Button } from '@meetfranz/forms'; | 9 | import { Button } from '@meetfranz/forms'; |
10 | import { FeatureList } from '../ui/FeatureList'; | 10 | import { FeatureList } from '../ui/FeatureList'; |
11 | import { FeatureItem } from '../ui/FeatureItem'; | ||
12 | 11 | ||
13 | const messages = defineMessages({ | 12 | const messages = defineMessages({ |
14 | submitButtonLabel: { | 13 | submitButtonLabel: { |
15 | id: 'subscription.cta.activateTrial', | 14 | id: 'subscription.cta.choosePlan', |
16 | defaultMessage: '!!!Yes, upgrade my account to Franz Professional', | 15 | defaultMessage: '!!!Choose your plan', |
17 | }, | 16 | }, |
18 | includedFeatures: { | 17 | teaserHeadline: { |
19 | id: 'subscription.includedProFeatures', | 18 | id: 'settings.account.headlineUpgradeAccount', |
20 | defaultMessage: '!!!The Franz Professional Plan includes:', | 19 | defaultMessage: '!!!Upgrade your account and get the full Franz experience', |
21 | }, | ||
22 | noStringsAttachedHeadline: { | ||
23 | id: 'pricing.trial.terms.headline', | ||
24 | defaultMessage: '!!!No strings attached', | ||
25 | }, | 20 | }, |
26 | noCreditCard: { | 21 | teaserText: { |
27 | id: 'pricing.trial.terms.noCreditCard', | 22 | id: 'subscription.teaser.intro', |
28 | defaultMessage: '!!!No credit card required', | 23 | defaultMessage: '!!!Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!', |
29 | }, | 24 | }, |
30 | automaticTrialEnd: { | 25 | includedFeatures: { |
31 | id: 'pricing.trial.terms.automaticTrialEnd', | 26 | id: 'subscription.teaser.includedFeatures', |
32 | defaultMessage: '!!!Your free trial ends automatically after 14 days', | 27 | defaultMessage: '!!!Paid Franz Plans include:', |
33 | }, | 28 | }, |
34 | }); | 29 | }); |
35 | 30 | ||
@@ -37,14 +32,11 @@ const styles = () => ({ | |||
37 | activateTrialButton: { | 32 | activateTrialButton: { |
38 | margin: [40, 0, 50], | 33 | margin: [40, 0, 50], |
39 | }, | 34 | }, |
40 | keyTerms: { | ||
41 | marginTop: 20, | ||
42 | }, | ||
43 | }); | 35 | }); |
44 | 36 | ||
45 | export default @observer @injectSheet(styles) class SubscriptionForm extends Component { | 37 | export default @observer @injectSheet(styles) class SubscriptionForm extends Component { |
46 | static propTypes = { | 38 | static propTypes = { |
47 | activateTrial: PropTypes.func.isRequired, | 39 | selectPlan: PropTypes.func.isRequired, |
48 | isActivatingTrial: PropTypes.bool.isRequired, | 40 | isActivatingTrial: PropTypes.bool.isRequired, |
49 | classes: PropTypes.object.isRequired, | 41 | classes: PropTypes.object.isRequired, |
50 | }; | 42 | }; |
@@ -56,28 +48,20 @@ export default @observer @injectSheet(styles) class SubscriptionForm extends Com | |||
56 | render() { | 48 | render() { |
57 | const { | 49 | const { |
58 | isActivatingTrial, | 50 | isActivatingTrial, |
59 | activateTrial, | 51 | selectPlan, |
60 | classes, | 52 | classes, |
61 | } = this.props; | 53 | } = this.props; |
62 | const { intl } = this.context; | 54 | const { intl } = this.context; |
63 | 55 | ||
64 | console.log('isActivatingTrial', isActivatingTrial); | ||
65 | |||
66 | return ( | 56 | return ( |
67 | <> | 57 | <> |
68 | <H3 className={classes.keyTerms}> | 58 | <H2>{intl.formatMessage(messages.teaserHeadline)}</H2> |
69 | {intl.formatMessage(messages.noStringsAttachedHeadline)} | 59 | <p>{intl.formatMessage(messages.teaserText)}</p> |
70 | </H3> | ||
71 | <ul> | ||
72 | <FeatureItem icon="👉" name={intl.formatMessage(messages.noCreditCard)} /> | ||
73 | <FeatureItem icon="👉" name={intl.formatMessage(messages.automaticTrialEnd)} /> | ||
74 | </ul> | ||
75 | |||
76 | <Button | 60 | <Button |
77 | label={intl.formatMessage(messages.submitButtonLabel)} | 61 | label={intl.formatMessage(messages.submitButtonLabel)} |
78 | className={classes.activateTrialButton} | 62 | className={classes.activateTrialButton} |
79 | busy={isActivatingTrial} | 63 | busy={isActivatingTrial} |
80 | onClick={activateTrial} | 64 | onClick={selectPlan} |
81 | stretch | 65 | stretch |
82 | /> | 66 | /> |
83 | <div className="subscription__premium-info"> | 67 | <div className="subscription__premium-info"> |
diff --git a/src/components/subscription/SubscriptionPopup.js b/src/components/subscription/SubscriptionPopup.js index 0f6f0260f..9404e9c19 100644 --- a/src/components/subscription/SubscriptionPopup.js +++ b/src/components/subscription/SubscriptionPopup.js | |||
@@ -43,7 +43,7 @@ export default @observer class SubscriptionPopup extends Component { | |||
43 | 43 | ||
44 | setTimeout(() => { | 44 | setTimeout(() => { |
45 | this.props.closeWindow(); | 45 | this.props.closeWindow(); |
46 | }, ms('4s')); | 46 | }, ms('1s')); |
47 | } | 47 | } |
48 | 48 | ||
49 | render() { | 49 | render() { |
@@ -61,8 +61,8 @@ export default @observer class SubscriptionPopup extends Component { | |||
61 | autosize | 61 | autosize |
62 | src={encodeURI(url)} | 62 | src={encodeURI(url)} |
63 | onDidNavigate={completeCheck} | 63 | onDidNavigate={completeCheck} |
64 | // onNewWindow={(event, url, frameName, options) => | 64 | // webpreferences="allowpopups" |
65 | // openWindow({ event, url, frameName, options })} | 65 | // onNewWindow={(event, url, frameName, options) => console.log(event, url)} |
66 | /> | 66 | /> |
67 | </div> | 67 | </div> |
68 | <div className="subscription-popup__toolbar franz-form"> | 68 | <div className="subscription-popup__toolbar franz-form"> |
diff --git a/src/components/subscription/TrialForm.js b/src/components/subscription/TrialForm.js new file mode 100644 index 000000000..9c512b5f2 --- /dev/null +++ b/src/components/subscription/TrialForm.js | |||
@@ -0,0 +1,99 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { observer } from 'mobx-react'; | ||
4 | import { defineMessages, intlShape } from 'react-intl'; | ||
5 | import injectSheet from 'react-jss'; | ||
6 | |||
7 | import { H3, H2 } from '@meetfranz/ui'; | ||
8 | |||
9 | import { Button } from '@meetfranz/forms'; | ||
10 | import { FeatureList } from '../ui/FeatureList'; | ||
11 | import { FeatureItem } from '../ui/FeatureItem'; | ||
12 | |||
13 | const messages = defineMessages({ | ||
14 | submitButtonLabel: { | ||
15 | id: 'subscription.cta.activateTrial', | ||
16 | defaultMessage: '!!!Yes, start the free Franz Professional trial', | ||
17 | }, | ||
18 | teaserHeadline: { | ||
19 | id: 'settings.account.headlineTrialUpgrade', | ||
20 | defaultMessage: '!!!Get the free 14 day Franz Professional Trial', | ||
21 | }, | ||
22 | includedFeatures: { | ||
23 | id: 'subscription.includedProFeatures', | ||
24 | defaultMessage: '!!!The Franz Professional Plan includes:', | ||
25 | }, | ||
26 | noStringsAttachedHeadline: { | ||
27 | id: 'pricing.trial.terms.headline', | ||
28 | defaultMessage: '!!!No strings attached', | ||
29 | }, | ||
30 | noCreditCard: { | ||
31 | id: 'pricing.trial.terms.noCreditCard', | ||
32 | defaultMessage: '!!!No credit card required', | ||
33 | }, | ||
34 | automaticTrialEnd: { | ||
35 | id: 'pricing.trial.terms.automaticTrialEnd', | ||
36 | defaultMessage: '!!!Your free trial ends automatically after 14 days', | ||
37 | }, | ||
38 | }); | ||
39 | |||
40 | const styles = () => ({ | ||
41 | activateTrialButton: { | ||
42 | margin: [40, 0, 50], | ||
43 | }, | ||
44 | keyTerms: { | ||
45 | marginTop: 20, | ||
46 | }, | ||
47 | }); | ||
48 | |||
49 | export default @observer @injectSheet(styles) class TrialForm extends Component { | ||
50 | static propTypes = { | ||
51 | activateTrial: PropTypes.func.isRequired, | ||
52 | isActivatingTrial: PropTypes.bool.isRequired, | ||
53 | classes: PropTypes.object.isRequired, | ||
54 | }; | ||
55 | |||
56 | static contextTypes = { | ||
57 | intl: intlShape, | ||
58 | }; | ||
59 | |||
60 | render() { | ||
61 | const { | ||
62 | isActivatingTrial, | ||
63 | activateTrial, | ||
64 | classes, | ||
65 | } = this.props; | ||
66 | const { intl } = this.context; | ||
67 | |||
68 | console.log('isActivatingTrial', isActivatingTrial); | ||
69 | |||
70 | return ( | ||
71 | <> | ||
72 | <H2>{intl.formatMessage(messages.teaserHeadline)}</H2> | ||
73 | <H3 className={classes.keyTerms}> | ||
74 | {intl.formatMessage(messages.noStringsAttachedHeadline)} | ||
75 | </H3> | ||
76 | <ul> | ||
77 | <FeatureItem icon="👉" name={intl.formatMessage(messages.noCreditCard)} /> | ||
78 | <FeatureItem icon="👉" name={intl.formatMessage(messages.automaticTrialEnd)} /> | ||
79 | </ul> | ||
80 | |||
81 | <Button | ||
82 | label={intl.formatMessage(messages.submitButtonLabel)} | ||
83 | className={classes.activateTrialButton} | ||
84 | busy={isActivatingTrial} | ||
85 | onClick={activateTrial} | ||
86 | stretch | ||
87 | /> | ||
88 | <div className="subscription__premium-info"> | ||
89 | <H3> | ||
90 | {intl.formatMessage(messages.includedFeatures)} | ||
91 | </H3> | ||
92 | <div className="subscription"> | ||
93 | <FeatureList /> | ||
94 | </div> | ||
95 | </div> | ||
96 | </> | ||
97 | ); | ||
98 | } | ||
99 | } | ||
diff --git a/src/containers/subscription/SubscriptionFormScreen.js b/src/containers/subscription/SubscriptionFormScreen.js index 7486cc498..587889e7f 100644 --- a/src/containers/subscription/SubscriptionFormScreen.js +++ b/src/containers/subscription/SubscriptionFormScreen.js | |||
@@ -1,4 +1,3 @@ | |||
1 | import { remote } from 'electron'; | ||
2 | import React, { Component } from 'react'; | 1 | import React, { Component } from 'react'; |
3 | import PropTypes from 'prop-types'; | 2 | import PropTypes from 'prop-types'; |
4 | import { inject, observer } from 'mobx-react'; | 3 | import { inject, observer } from 'mobx-react'; |
@@ -6,70 +5,31 @@ import { inject, observer } from 'mobx-react'; | |||
6 | import PaymentStore from '../../stores/PaymentStore'; | 5 | import PaymentStore from '../../stores/PaymentStore'; |
7 | 6 | ||
8 | import SubscriptionForm from '../../components/subscription/SubscriptionForm'; | 7 | import SubscriptionForm from '../../components/subscription/SubscriptionForm'; |
9 | 8 | import TrialForm from '../../components/subscription/TrialForm'; | |
10 | const { BrowserWindow } = remote; | ||
11 | 9 | ||
12 | export default @inject('stores', 'actions') @observer class SubscriptionFormScreen extends Component { | 10 | export default @inject('stores', 'actions') @observer class SubscriptionFormScreen extends Component { |
13 | static propTypes = { | 11 | async openBrowser() { |
14 | onCloseWindow: PropTypes.func, | ||
15 | content: PropTypes.node, | ||
16 | showSkipOption: PropTypes.bool, | ||
17 | skipAction: PropTypes.func, | ||
18 | skipButtonLabel: PropTypes.string, | ||
19 | hideInfo: PropTypes.bool, | ||
20 | } | ||
21 | |||
22 | static defaultProps = { | ||
23 | onCloseWindow: () => null, | ||
24 | content: '', | ||
25 | showSkipOption: false, | ||
26 | skipAction: () => null, | ||
27 | skipButtonLabel: '', | ||
28 | hideInfo: false, | ||
29 | } | ||
30 | |||
31 | async handlePayment(plan) { | ||
32 | const { | 12 | const { |
33 | actions, | 13 | actions, |
34 | stores, | 14 | stores, |
35 | onCloseWindow, | ||
36 | } = this.props; | 15 | } = this.props; |
37 | 16 | ||
38 | const interval = plan; | 17 | const { |
18 | user, | ||
19 | features, | ||
20 | } = stores; | ||
21 | |||
22 | let hostedPageURL = user.data.hadSubscription ? features.features.planSelectionURL : features.features.subscribeURL; | ||
23 | const url = new URL(hostedPageURL); | ||
24 | const params = new URLSearchParams(url.search.slice(1)); | ||
39 | 25 | ||
40 | const { id } = stores.payment.plan[interval]; | 26 | params.append('authToken', user.authToken); |
41 | actions.payment.createHostedPage({ | ||
42 | planId: id, | ||
43 | }); | ||
44 | 27 | ||
45 | const hostedPage = await stores.payment.createHostedPageRequest; | 28 | hostedPageURL = `${url.origin}${url.pathname}?${params.toString()}`; |
46 | 29 | ||
47 | if (hostedPage.url) { | 30 | actions.app.openExternalUrl({ url: hostedPageURL }); |
48 | if (hostedPage.legacyCheckoutFlow) { | ||
49 | const paymentWindow = new BrowserWindow({ | ||
50 | parent: remote.getCurrentWindow(), | ||
51 | modal: true, | ||
52 | title: '🔒 Franz Supporter License', | ||
53 | width: 600, | ||
54 | height: window.innerHeight - 100, | ||
55 | maxWidth: 600, | ||
56 | minWidth: 600, | ||
57 | webPreferences: { | ||
58 | nodeIntegration: true, | ||
59 | webviewTag: true, | ||
60 | }, | ||
61 | }); | ||
62 | paymentWindow.loadURL(`file://${__dirname}/../../index.html#/payment/${encodeURIComponent(hostedPage.url)}`); | ||
63 | 31 | ||
64 | paymentWindow.on('closed', () => { | 32 | console.log('hostedPage', hostedPageURL); |
65 | onCloseWindow(); | ||
66 | }); | ||
67 | } else { | ||
68 | actions.app.openExternalUrl({ | ||
69 | url: hostedPage.url, | ||
70 | }); | ||
71 | } | ||
72 | } | ||
73 | } | 33 | } |
74 | 34 | ||
75 | render() { | 35 | render() { |
@@ -77,8 +37,21 @@ export default @inject('stores', 'actions') @observer class SubscriptionFormScre | |||
77 | actions, | 37 | actions, |
78 | stores, | 38 | stores, |
79 | } = this.props; | 39 | } = this.props; |
40 | |||
41 | const { data: user } = stores.user; | ||
42 | |||
43 | if (user.hadSubscription) { | ||
44 | return ( | ||
45 | <SubscriptionForm | ||
46 | plan={stores.payment.plan} | ||
47 | selectPlan={() => this.openBrowser()} | ||
48 | isActivatingTrial={stores.user.activateTrialRequest.isExecuting || stores.user.getUserInfoRequest.isExecuting} | ||
49 | /> | ||
50 | ); | ||
51 | } | ||
52 | |||
80 | return ( | 53 | return ( |
81 | <SubscriptionForm | 54 | <TrialForm |
82 | plan={stores.payment.plan} | 55 | plan={stores.payment.plan} |
83 | activateTrial={() => actions.user.activateTrial({ planId: stores.features.features.defaultTrialPlan })} | 56 | activateTrial={() => actions.user.activateTrial({ planId: stores.features.features.defaultTrialPlan })} |
84 | isActivatingTrial={stores.user.activateTrialRequest.isExecuting || stores.user.getUserInfoRequest.isExecuting} | 57 | isActivatingTrial={stores.user.activateTrialRequest.isExecuting || stores.user.getUserInfoRequest.isExecuting} |
diff --git a/src/containers/subscription/SubscriptionPopupScreen.js b/src/containers/subscription/SubscriptionPopupScreen.js index f76d6c5a6..0de5a87c4 100644 --- a/src/containers/subscription/SubscriptionPopupScreen.js +++ b/src/containers/subscription/SubscriptionPopupScreen.js | |||
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types'; | |||
3 | import { inject, observer } from 'mobx-react'; | 3 | import { inject, observer } from 'mobx-react'; |
4 | 4 | ||
5 | import SubscriptionPopup from '../../components/subscription/SubscriptionPopup'; | 5 | import SubscriptionPopup from '../../components/subscription/SubscriptionPopup'; |
6 | import { isDevMode } from '../../environment'; | ||
6 | 7 | ||
7 | 8 | ||
8 | export default @inject('stores', 'actions') @observer class SubscriptionPopupScreen extends Component { | 9 | export default @inject('stores', 'actions') @observer class SubscriptionPopupScreen extends Component { |
@@ -13,7 +14,7 @@ export default @inject('stores', 'actions') @observer class SubscriptionPopupScr | |||
13 | completeCheck(event) { | 14 | completeCheck(event) { |
14 | const { url } = event; | 15 | const { url } = event; |
15 | 16 | ||
16 | if ((url.includes('recurly') && url.includes('confirmation')) || (url.includes('meetfranz') && url.includes('success'))) { | 17 | if ((url.includes('recurly') && url.includes('confirmation')) || ((url.includes('meetfranz') || isDevMode) && url.includes('success'))) { |
17 | this.setState({ | 18 | this.setState({ |
18 | complete: true, | 19 | complete: true, |
19 | }); | 20 | }); |
diff --git a/src/features/workspaces/store.js b/src/features/workspaces/store.js index caa73619e..e44569be9 100644 --- a/src/features/workspaces/store.js +++ b/src/features/workspaces/store.js | |||
@@ -256,8 +256,8 @@ export default class WorkspacesStore extends FeatureStore { | |||
256 | const { features, user } = this.stores; | 256 | const { features, user } = this.stores; |
257 | const { isPremium } = user.data; | 257 | const { isPremium } = user.data; |
258 | const { isWorkspaceIncludedInCurrentPlan } = features.features; | 258 | const { isWorkspaceIncludedInCurrentPlan } = features.features; |
259 | this.isPremiumFeature = isWorkspaceIncludedInCurrentPlan; | 259 | this.isPremiumFeature = !isWorkspaceIncludedInCurrentPlan; |
260 | this.isPremiumUpgradeRequired = isWorkspaceIncludedInCurrentPlan && !isPremium; | 260 | this.isPremiumUpgradeRequired = !isWorkspaceIncludedInCurrentPlan && !isPremium; |
261 | }; | 261 | }; |
262 | 262 | ||
263 | _setWorkspaceBeingEditedReaction = () => { | 263 | _setWorkspaceBeingEditedReaction = () => { |
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index bdb1def11..e3c50f259 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json | |||
@@ -1242,247 +1242,234 @@ | |||
1242 | "defaultMessage": "!!!Account", | 1242 | "defaultMessage": "!!!Account", |
1243 | "end": { | 1243 | "end": { |
1244 | "column": 3, | 1244 | "column": 3, |
1245 | "line": 19 | 1245 | "line": 21 |
1246 | }, | 1246 | }, |
1247 | "file": "src/components/settings/account/AccountDashboard.js", | 1247 | "file": "src/components/settings/account/AccountDashboard.js", |
1248 | "id": "settings.account.headline", | 1248 | "id": "settings.account.headline", |
1249 | "start": { | 1249 | "start": { |
1250 | "column": 12, | 1250 | "column": 12, |
1251 | "line": 16 | 1251 | "line": 18 |
1252 | } | 1252 | } |
1253 | }, | 1253 | }, |
1254 | { | 1254 | { |
1255 | "defaultMessage": "!!!Your Subscription", | 1255 | "defaultMessage": "!!!Your Subscription", |
1256 | "end": { | 1256 | "end": { |
1257 | "column": 3, | 1257 | "column": 3, |
1258 | "line": 23 | 1258 | "line": 25 |
1259 | }, | 1259 | }, |
1260 | "file": "src/components/settings/account/AccountDashboard.js", | 1260 | "file": "src/components/settings/account/AccountDashboard.js", |
1261 | "id": "settings.account.headlineSubscription", | 1261 | "id": "settings.account.headlineSubscription", |
1262 | "start": { | 1262 | "start": { |
1263 | "column": 24, | 1263 | "column": 24, |
1264 | "line": 20 | 1264 | "line": 22 |
1265 | } | ||
1266 | }, | ||
1267 | { | ||
1268 | "defaultMessage": "!!!Upgrade your Account", | ||
1269 | "end": { | ||
1270 | "column": 3, | ||
1271 | "line": 27 | ||
1272 | }, | ||
1273 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1274 | "id": "settings.account.headlineUpgrade", | ||
1275 | "start": { | ||
1276 | "column": 19, | ||
1277 | "line": 24 | ||
1278 | } | 1265 | } |
1279 | }, | 1266 | }, |
1280 | { | 1267 | { |
1281 | "defaultMessage": "!!Danger Zone", | 1268 | "defaultMessage": "!!Danger Zone", |
1282 | "end": { | 1269 | "end": { |
1283 | "column": 3, | 1270 | "column": 3, |
1284 | "line": 31 | 1271 | "line": 29 |
1285 | }, | 1272 | }, |
1286 | "file": "src/components/settings/account/AccountDashboard.js", | 1273 | "file": "src/components/settings/account/AccountDashboard.js", |
1287 | "id": "settings.account.headlineDangerZone", | 1274 | "id": "settings.account.headlineDangerZone", |
1288 | "start": { | 1275 | "start": { |
1289 | "column": 22, | 1276 | "column": 22, |
1290 | "line": 28 | 1277 | "line": 26 |
1291 | } | 1278 | } |
1292 | }, | 1279 | }, |
1293 | { | 1280 | { |
1294 | "defaultMessage": "!!!Manage your subscription", | 1281 | "defaultMessage": "!!!Manage your subscription", |
1295 | "end": { | 1282 | "end": { |
1296 | "column": 3, | 1283 | "column": 3, |
1297 | "line": 35 | 1284 | "line": 33 |
1298 | }, | 1285 | }, |
1299 | "file": "src/components/settings/account/AccountDashboard.js", | 1286 | "file": "src/components/settings/account/AccountDashboard.js", |
1300 | "id": "settings.account.manageSubscription.label", | 1287 | "id": "settings.account.manageSubscription.label", |
1301 | "start": { | 1288 | "start": { |
1302 | "column": 33, | 1289 | "column": 33, |
1303 | "line": 32 | 1290 | "line": 30 |
1304 | } | 1291 | } |
1305 | }, | 1292 | }, |
1306 | { | 1293 | { |
1307 | "defaultMessage": "!!!Basic Account", | 1294 | "defaultMessage": "!!!Basic Account", |
1308 | "end": { | 1295 | "end": { |
1309 | "column": 3, | 1296 | "column": 3, |
1310 | "line": 39 | 1297 | "line": 37 |
1311 | }, | 1298 | }, |
1312 | "file": "src/components/settings/account/AccountDashboard.js", | 1299 | "file": "src/components/settings/account/AccountDashboard.js", |
1313 | "id": "settings.account.accountType.basic", | 1300 | "id": "settings.account.accountType.basic", |
1314 | "start": { | 1301 | "start": { |
1315 | "column": 20, | 1302 | "column": 20, |
1316 | "line": 36 | 1303 | "line": 34 |
1317 | } | 1304 | } |
1318 | }, | 1305 | }, |
1319 | { | 1306 | { |
1320 | "defaultMessage": "!!!Premium Supporter Account", | 1307 | "defaultMessage": "!!!Premium Supporter Account", |
1321 | "end": { | 1308 | "end": { |
1322 | "column": 3, | 1309 | "column": 3, |
1323 | "line": 43 | 1310 | "line": 41 |
1324 | }, | 1311 | }, |
1325 | "file": "src/components/settings/account/AccountDashboard.js", | 1312 | "file": "src/components/settings/account/AccountDashboard.js", |
1326 | "id": "settings.account.accountType.premium", | 1313 | "id": "settings.account.accountType.premium", |
1327 | "start": { | 1314 | "start": { |
1328 | "column": 22, | 1315 | "column": 22, |
1329 | "line": 40 | 1316 | "line": 38 |
1330 | } | 1317 | } |
1331 | }, | 1318 | }, |
1332 | { | 1319 | { |
1333 | "defaultMessage": "!!!Edit Account", | 1320 | "defaultMessage": "!!!Edit Account", |
1334 | "end": { | 1321 | "end": { |
1335 | "column": 3, | 1322 | "column": 3, |
1336 | "line": 47 | 1323 | "line": 45 |
1337 | }, | 1324 | }, |
1338 | "file": "src/components/settings/account/AccountDashboard.js", | 1325 | "file": "src/components/settings/account/AccountDashboard.js", |
1339 | "id": "settings.account.account.editButton", | 1326 | "id": "settings.account.account.editButton", |
1340 | "start": { | 1327 | "start": { |
1341 | "column": 21, | 1328 | "column": 21, |
1342 | "line": 44 | 1329 | "line": 42 |
1343 | } | 1330 | } |
1344 | }, | 1331 | }, |
1345 | { | 1332 | { |
1346 | "defaultMessage": "!!Invoices", | 1333 | "defaultMessage": "!!Invoices", |
1347 | "end": { | 1334 | "end": { |
1348 | "column": 3, | 1335 | "column": 3, |
1349 | "line": 51 | 1336 | "line": 49 |
1350 | }, | 1337 | }, |
1351 | "file": "src/components/settings/account/AccountDashboard.js", | 1338 | "file": "src/components/settings/account/AccountDashboard.js", |
1352 | "id": "settings.account.headlineInvoices", | 1339 | "id": "settings.account.headlineInvoices", |
1353 | "start": { | 1340 | "start": { |
1354 | "column": 18, | 1341 | "column": 18, |
1355 | "line": 48 | 1342 | "line": 46 |
1356 | } | 1343 | } |
1357 | }, | 1344 | }, |
1358 | { | 1345 | { |
1359 | "defaultMessage": "!!!Download", | 1346 | "defaultMessage": "!!!Download", |
1360 | "end": { | 1347 | "end": { |
1361 | "column": 3, | 1348 | "column": 3, |
1362 | "line": 55 | 1349 | "line": 53 |
1363 | }, | 1350 | }, |
1364 | "file": "src/components/settings/account/AccountDashboard.js", | 1351 | "file": "src/components/settings/account/AccountDashboard.js", |
1365 | "id": "settings.account.invoiceDownload", | 1352 | "id": "settings.account.invoiceDownload", |
1366 | "start": { | 1353 | "start": { |
1367 | "column": 19, | 1354 | "column": 19, |
1368 | "line": 52 | 1355 | "line": 50 |
1369 | } | 1356 | } |
1370 | }, | 1357 | }, |
1371 | { | 1358 | { |
1372 | "defaultMessage": "!!!Could not load user information", | 1359 | "defaultMessage": "!!!Could not load user information", |
1373 | "end": { | 1360 | "end": { |
1374 | "column": 3, | 1361 | "column": 3, |
1375 | "line": 59 | 1362 | "line": 57 |
1376 | }, | 1363 | }, |
1377 | "file": "src/components/settings/account/AccountDashboard.js", | 1364 | "file": "src/components/settings/account/AccountDashboard.js", |
1378 | "id": "settings.account.userInfoRequestFailed", | 1365 | "id": "settings.account.userInfoRequestFailed", |
1379 | "start": { | 1366 | "start": { |
1380 | "column": 25, | 1367 | "column": 25, |
1381 | "line": 56 | 1368 | "line": 54 |
1382 | } | 1369 | } |
1383 | }, | 1370 | }, |
1384 | { | 1371 | { |
1385 | "defaultMessage": "!!!Try again", | 1372 | "defaultMessage": "!!!Try again", |
1386 | "end": { | 1373 | "end": { |
1387 | "column": 3, | 1374 | "column": 3, |
1388 | "line": 63 | 1375 | "line": 61 |
1389 | }, | 1376 | }, |
1390 | "file": "src/components/settings/account/AccountDashboard.js", | 1377 | "file": "src/components/settings/account/AccountDashboard.js", |
1391 | "id": "settings.account.tryReloadUserInfoRequest", | 1378 | "id": "settings.account.tryReloadUserInfoRequest", |
1392 | "start": { | 1379 | "start": { |
1393 | "column": 28, | 1380 | "column": 28, |
1394 | "line": 60 | 1381 | "line": 58 |
1395 | } | 1382 | } |
1396 | }, | 1383 | }, |
1397 | { | 1384 | { |
1398 | "defaultMessage": "!!!Delete account", | 1385 | "defaultMessage": "!!!Delete account", |
1399 | "end": { | 1386 | "end": { |
1400 | "column": 3, | 1387 | "column": 3, |
1401 | "line": 67 | 1388 | "line": 65 |
1402 | }, | 1389 | }, |
1403 | "file": "src/components/settings/account/AccountDashboard.js", | 1390 | "file": "src/components/settings/account/AccountDashboard.js", |
1404 | "id": "settings.account.deleteAccount", | 1391 | "id": "settings.account.deleteAccount", |
1405 | "start": { | 1392 | "start": { |
1406 | "column": 17, | 1393 | "column": 17, |
1407 | "line": 64 | 1394 | "line": 62 |
1408 | } | 1395 | } |
1409 | }, | 1396 | }, |
1410 | { | 1397 | { |
1411 | "defaultMessage": "!!!If you don't need your Franz account any longer, you can delete your account and all related data here.", | 1398 | "defaultMessage": "!!!If you don't need your Franz account any longer, you can delete your account and all related data here.", |
1412 | "end": { | 1399 | "end": { |
1413 | "column": 3, | 1400 | "column": 3, |
1414 | "line": 71 | 1401 | "line": 69 |
1415 | }, | 1402 | }, |
1416 | "file": "src/components/settings/account/AccountDashboard.js", | 1403 | "file": "src/components/settings/account/AccountDashboard.js", |
1417 | "id": "settings.account.deleteInfo", | 1404 | "id": "settings.account.deleteInfo", |
1418 | "start": { | 1405 | "start": { |
1419 | "column": 14, | 1406 | "column": 14, |
1420 | "line": 68 | 1407 | "line": 66 |
1421 | } | 1408 | } |
1422 | }, | 1409 | }, |
1423 | { | 1410 | { |
1424 | "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", | 1411 | "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", |
1425 | "end": { | 1412 | "end": { |
1426 | "column": 3, | 1413 | "column": 3, |
1427 | "line": 75 | 1414 | "line": 73 |
1428 | }, | 1415 | }, |
1429 | "file": "src/components/settings/account/AccountDashboard.js", | 1416 | "file": "src/components/settings/account/AccountDashboard.js", |
1430 | "id": "settings.account.deleteEmailSent", | 1417 | "id": "settings.account.deleteEmailSent", |
1431 | "start": { | 1418 | "start": { |
1432 | "column": 19, | 1419 | "column": 19, |
1433 | "line": 72 | 1420 | "line": 70 |
1434 | } | 1421 | } |
1435 | }, | 1422 | }, |
1436 | { | 1423 | { |
1437 | "defaultMessage": "!!!Free Trial", | 1424 | "defaultMessage": "!!!Free Trial", |
1438 | "end": { | 1425 | "end": { |
1439 | "column": 3, | 1426 | "column": 3, |
1440 | "line": 79 | 1427 | "line": 77 |
1441 | }, | 1428 | }, |
1442 | "file": "src/components/settings/account/AccountDashboard.js", | 1429 | "file": "src/components/settings/account/AccountDashboard.js", |
1443 | "id": "settings.account.trial", | 1430 | "id": "settings.account.trial", |
1444 | "start": { | 1431 | "start": { |
1445 | "column": 9, | 1432 | "column": 9, |
1446 | "line": 76 | 1433 | "line": 74 |
1447 | } | 1434 | } |
1448 | }, | 1435 | }, |
1449 | { | 1436 | { |
1450 | "defaultMessage": "!!!Your license:", | 1437 | "defaultMessage": "!!!Your license:", |
1451 | "end": { | 1438 | "end": { |
1452 | "column": 3, | 1439 | "column": 3, |
1453 | "line": 83 | 1440 | "line": 81 |
1454 | }, | 1441 | }, |
1455 | "file": "src/components/settings/account/AccountDashboard.js", | 1442 | "file": "src/components/settings/account/AccountDashboard.js", |
1456 | "id": "settings.account.yourLicense", | 1443 | "id": "settings.account.yourLicense", |
1457 | "start": { | 1444 | "start": { |
1458 | "column": 15, | 1445 | "column": 15, |
1459 | "line": 80 | 1446 | "line": 78 |
1460 | } | 1447 | } |
1461 | }, | 1448 | }, |
1462 | { | 1449 | { |
1463 | "defaultMessage": "!!!Your free trial ends in {duration}.", | 1450 | "defaultMessage": "!!!Your free trial ends in {duration}.", |
1464 | "end": { | 1451 | "end": { |
1465 | "column": 3, | 1452 | "column": 3, |
1466 | "line": 87 | 1453 | "line": 85 |
1467 | }, | 1454 | }, |
1468 | "file": "src/components/settings/account/AccountDashboard.js", | 1455 | "file": "src/components/settings/account/AccountDashboard.js", |
1469 | "id": "settings.account.trialEndsIn", | 1456 | "id": "settings.account.trialEndsIn", |
1470 | "start": { | 1457 | "start": { |
1471 | "column": 15, | 1458 | "column": 15, |
1472 | "line": 84 | 1459 | "line": 82 |
1473 | } | 1460 | } |
1474 | }, | 1461 | }, |
1475 | { | 1462 | { |
1476 | "defaultMessage": "!!!Please update your billing info to continue using {license} after your trial period.", | 1463 | "defaultMessage": "!!!Please update your billing info to continue using {license} after your trial period.", |
1477 | "end": { | 1464 | "end": { |
1478 | "column": 3, | 1465 | "column": 3, |
1479 | "line": 91 | 1466 | "line": 89 |
1480 | }, | 1467 | }, |
1481 | "file": "src/components/settings/account/AccountDashboard.js", | 1468 | "file": "src/components/settings/account/AccountDashboard.js", |
1482 | "id": "settings.account.trialUpdateBillingInfo", | 1469 | "id": "settings.account.trialUpdateBillingInfo", |
1483 | "start": { | 1470 | "start": { |
1484 | "column": 33, | 1471 | "column": 33, |
1485 | "line": 88 | 1472 | "line": 86 |
1486 | } | 1473 | } |
1487 | } | 1474 | } |
1488 | ], | 1475 | ], |
@@ -2706,220 +2693,173 @@ | |||
2706 | { | 2693 | { |
2707 | "descriptors": [ | 2694 | "descriptors": [ |
2708 | { | 2695 | { |
2709 | "defaultMessage": "!!!Support the development of Franz", | 2696 | "defaultMessage": "!!!Choose your plan", |
2710 | "end": { | 2697 | "end": { |
2711 | "column": 3, | 2698 | "column": 3, |
2712 | "line": 17 | 2699 | "line": 16 |
2713 | }, | 2700 | }, |
2714 | "file": "src/components/subscription/SubscriptionForm.js", | 2701 | "file": "src/components/subscription/SubscriptionForm.js", |
2715 | "id": "subscription.submit.label", | 2702 | "id": "subscription.cta.choosePlan", |
2716 | "start": { | 2703 | "start": { |
2717 | "column": 21, | 2704 | "column": 21, |
2718 | "line": 14 | 2705 | "line": 13 |
2719 | } | ||
2720 | }, | ||
2721 | { | ||
2722 | "defaultMessage": "!!!Could not initialize payment form", | ||
2723 | "end": { | ||
2724 | "column": 3, | ||
2725 | "line": 21 | ||
2726 | }, | ||
2727 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2728 | "id": "subscription.paymentSessionError", | ||
2729 | "start": { | ||
2730 | "column": 23, | ||
2731 | "line": 18 | ||
2732 | } | ||
2733 | }, | ||
2734 | { | ||
2735 | "defaultMessage": "!!!free", | ||
2736 | "end": { | ||
2737 | "column": 3, | ||
2738 | "line": 25 | ||
2739 | }, | ||
2740 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2741 | "id": "subscription.type.free", | ||
2742 | "start": { | ||
2743 | "column": 12, | ||
2744 | "line": 22 | ||
2745 | } | 2706 | } |
2746 | }, | 2707 | }, |
2747 | { | 2708 | { |
2748 | "defaultMessage": "!!!month", | 2709 | "defaultMessage": "!!!Upgrade your account and get the full Franz experience", |
2749 | "end": { | 2710 | "end": { |
2750 | "column": 3, | 2711 | "column": 3, |
2751 | "line": 29 | 2712 | "line": 20 |
2752 | }, | 2713 | }, |
2753 | "file": "src/components/subscription/SubscriptionForm.js", | 2714 | "file": "src/components/subscription/SubscriptionForm.js", |
2754 | "id": "subscription.type.month", | 2715 | "id": "settings.account.headlineUpgradeAccount", |
2755 | "start": { | 2716 | "start": { |
2756 | "column": 15, | 2717 | "column": 18, |
2757 | "line": 26 | 2718 | "line": 17 |
2758 | } | 2719 | } |
2759 | }, | 2720 | }, |
2760 | { | 2721 | { |
2761 | "defaultMessage": "!!!year", | 2722 | "defaultMessage": "!!!Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", |
2762 | "end": { | 2723 | "end": { |
2763 | "column": 3, | 2724 | "column": 3, |
2764 | "line": 33 | 2725 | "line": 24 |
2765 | }, | 2726 | }, |
2766 | "file": "src/components/subscription/SubscriptionForm.js", | 2727 | "file": "src/components/subscription/SubscriptionForm.js", |
2767 | "id": "subscription.type.year", | 2728 | "id": "subscription.teaser.intro", |
2768 | "start": { | 2729 | "start": { |
2769 | "column": 14, | 2730 | "column": 14, |
2770 | "line": 30 | 2731 | "line": 21 |
2771 | } | 2732 | } |
2772 | }, | 2733 | }, |
2773 | { | 2734 | { |
2774 | "defaultMessage": "!!!The Franz Premium Supporter Account includes", | 2735 | "defaultMessage": "!!!Paid Franz Plans include:", |
2775 | "end": { | 2736 | "end": { |
2776 | "column": 3, | 2737 | "column": 3, |
2777 | "line": 37 | 2738 | "line": 28 |
2778 | }, | 2739 | }, |
2779 | "file": "src/components/subscription/SubscriptionForm.js", | 2740 | "file": "src/components/subscription/SubscriptionForm.js", |
2780 | "id": "subscription.includedFeatures", | 2741 | "id": "subscription.teaser.includedFeatures", |
2781 | "start": { | 2742 | "start": { |
2782 | "column": 20, | 2743 | "column": 20, |
2783 | "line": 34 | 2744 | "line": 25 |
2784 | } | ||
2785 | }, | ||
2786 | { | ||
2787 | "defaultMessage": "!!!Add on-premise/hosted services like Mattermost", | ||
2788 | "end": { | ||
2789 | "column": 3, | ||
2790 | "line": 41 | ||
2791 | }, | ||
2792 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2793 | "id": "subscription.features.onpremise.mattermost", | ||
2794 | "start": { | ||
2795 | "column": 13, | ||
2796 | "line": 38 | ||
2797 | } | 2745 | } |
2798 | }, | 2746 | } |
2747 | ], | ||
2748 | "path": "src/components/subscription/SubscriptionForm.json" | ||
2749 | }, | ||
2750 | { | ||
2751 | "descriptors": [ | ||
2799 | { | 2752 | { |
2800 | "defaultMessage": "!!!No app delays & nagging to upgrade license", | 2753 | "defaultMessage": "!!!Cancel", |
2801 | "end": { | 2754 | "end": { |
2802 | "column": 3, | 2755 | "column": 3, |
2803 | "line": 45 | 2756 | "line": 14 |
2804 | }, | 2757 | }, |
2805 | "file": "src/components/subscription/SubscriptionForm.js", | 2758 | "file": "src/components/subscription/SubscriptionPopup.js", |
2806 | "id": "subscription.features.noInterruptions", | 2759 | "id": "subscriptionPopup.buttonCancel", |
2807 | "start": { | 2760 | "start": { |
2808 | "column": 19, | 2761 | "column": 16, |
2809 | "line": 42 | 2762 | "line": 11 |
2810 | } | 2763 | } |
2811 | }, | 2764 | }, |
2812 | { | 2765 | { |
2813 | "defaultMessage": "!!!Proxy support for services", | 2766 | "defaultMessage": "!!!Done", |
2814 | "end": { | 2767 | "end": { |
2815 | "column": 3, | 2768 | "column": 3, |
2816 | "line": 49 | 2769 | "line": 18 |
2817 | }, | 2770 | }, |
2818 | "file": "src/components/subscription/SubscriptionForm.js", | 2771 | "file": "src/components/subscription/SubscriptionPopup.js", |
2819 | "id": "subscription.features.proxy", | 2772 | "id": "subscriptionPopup.buttonDone", |
2820 | "start": { | 2773 | "start": { |
2821 | "column": 9, | 2774 | "column": 14, |
2822 | "line": 46 | 2775 | "line": 15 |
2823 | } | 2776 | } |
2824 | }, | 2777 | } |
2778 | ], | ||
2779 | "path": "src/components/subscription/SubscriptionPopup.json" | ||
2780 | }, | ||
2781 | { | ||
2782 | "descriptors": [ | ||
2825 | { | 2783 | { |
2826 | "defaultMessage": "!!!Support for Spellchecker", | 2784 | "defaultMessage": "!!!Yes, start the free Franz Professional trial", |
2827 | "end": { | 2785 | "end": { |
2828 | "column": 3, | 2786 | "column": 3, |
2829 | "line": 53 | 2787 | "line": 17 |
2830 | }, | 2788 | }, |
2831 | "file": "src/components/subscription/SubscriptionForm.js", | 2789 | "file": "src/components/subscription/TrialForm.js", |
2832 | "id": "subscription.features.spellchecker", | 2790 | "id": "subscription.cta.activateTrial", |
2833 | "start": { | 2791 | "start": { |
2834 | "column": 16, | 2792 | "column": 21, |
2835 | "line": 50 | 2793 | "line": 14 |
2836 | } | 2794 | } |
2837 | }, | 2795 | }, |
2838 | { | 2796 | { |
2839 | "defaultMessage": "!!!Organize your services in workspaces", | 2797 | "defaultMessage": "!!!Get the free 14 day Franz Professional Trial", |
2840 | "end": { | 2798 | "end": { |
2841 | "column": 3, | 2799 | "column": 3, |
2842 | "line": 57 | 2800 | "line": 21 |
2843 | }, | 2801 | }, |
2844 | "file": "src/components/subscription/SubscriptionForm.js", | 2802 | "file": "src/components/subscription/TrialForm.js", |
2845 | "id": "subscription.features.workspaces", | 2803 | "id": "settings.account.headlineTrialUpgrade", |
2846 | "start": { | 2804 | "start": { |
2847 | "column": 14, | 2805 | "column": 18, |
2848 | "line": 54 | 2806 | "line": 18 |
2849 | } | 2807 | } |
2850 | }, | 2808 | }, |
2851 | { | 2809 | { |
2852 | "defaultMessage": "!!!No ads, ever!", | 2810 | "defaultMessage": "!!!The Franz Professional Plan includes:", |
2853 | "end": { | 2811 | "end": { |
2854 | "column": 3, | 2812 | "column": 3, |
2855 | "line": 61 | 2813 | "line": 25 |
2856 | }, | 2814 | }, |
2857 | "file": "src/components/subscription/SubscriptionForm.js", | 2815 | "file": "src/components/subscription/TrialForm.js", |
2858 | "id": "subscription.features.ads", | 2816 | "id": "subscription.includedProFeatures", |
2859 | "start": { | 2817 | "start": { |
2860 | "column": 7, | 2818 | "column": 20, |
2861 | "line": 58 | 2819 | "line": 22 |
2862 | } | 2820 | } |
2863 | }, | 2821 | }, |
2864 | { | 2822 | { |
2865 | "defaultMessage": "!!!coming soon", | 2823 | "defaultMessage": "!!!No strings attached", |
2866 | "end": { | 2824 | "end": { |
2867 | "column": 3, | 2825 | "column": 3, |
2868 | "line": 65 | 2826 | "line": 29 |
2869 | }, | 2827 | }, |
2870 | "file": "src/components/subscription/SubscriptionForm.js", | 2828 | "file": "src/components/subscription/TrialForm.js", |
2871 | "id": "subscription.features.comingSoon", | 2829 | "id": "pricing.trial.terms.headline", |
2872 | "start": { | 2830 | "start": { |
2873 | "column": 14, | 2831 | "column": 29, |
2874 | "line": 62 | 2832 | "line": 26 |
2875 | } | 2833 | } |
2876 | }, | 2834 | }, |
2877 | { | 2835 | { |
2878 | "defaultMessage": "!!!EU residents: local sales tax may apply", | 2836 | "defaultMessage": "!!!No credit card required", |
2879 | "end": { | ||
2880 | "column": 3, | ||
2881 | "line": 69 | ||
2882 | }, | ||
2883 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2884 | "id": "subscription.euTaxInfo", | ||
2885 | "start": { | ||
2886 | "column": 13, | ||
2887 | "line": 66 | ||
2888 | } | ||
2889 | } | ||
2890 | ], | ||
2891 | "path": "src/components/subscription/SubscriptionForm.json" | ||
2892 | }, | ||
2893 | { | ||
2894 | "descriptors": [ | ||
2895 | { | ||
2896 | "defaultMessage": "!!!Cancel", | ||
2897 | "end": { | 2837 | "end": { |
2898 | "column": 3, | 2838 | "column": 3, |
2899 | "line": 14 | 2839 | "line": 33 |
2900 | }, | 2840 | }, |
2901 | "file": "src/components/subscription/SubscriptionPopup.js", | 2841 | "file": "src/components/subscription/TrialForm.js", |
2902 | "id": "subscriptionPopup.buttonCancel", | 2842 | "id": "pricing.trial.terms.noCreditCard", |
2903 | "start": { | 2843 | "start": { |
2904 | "column": 16, | 2844 | "column": 16, |
2905 | "line": 11 | 2845 | "line": 30 |
2906 | } | 2846 | } |
2907 | }, | 2847 | }, |
2908 | { | 2848 | { |
2909 | "defaultMessage": "!!!Done", | 2849 | "defaultMessage": "!!!Your free trial ends automatically after 14 days", |
2910 | "end": { | 2850 | "end": { |
2911 | "column": 3, | 2851 | "column": 3, |
2912 | "line": 18 | 2852 | "line": 37 |
2913 | }, | 2853 | }, |
2914 | "file": "src/components/subscription/SubscriptionPopup.js", | 2854 | "file": "src/components/subscription/TrialForm.js", |
2915 | "id": "subscriptionPopup.buttonDone", | 2855 | "id": "pricing.trial.terms.automaticTrialEnd", |
2916 | "start": { | 2856 | "start": { |
2917 | "column": 14, | 2857 | "column": 21, |
2918 | "line": 15 | 2858 | "line": 34 |
2919 | } | 2859 | } |
2920 | } | 2860 | } |
2921 | ], | 2861 | ], |
2922 | "path": "src/components/subscription/SubscriptionPopup.json" | 2862 | "path": "src/components/subscription/TrialForm.json" |
2923 | }, | 2863 | }, |
2924 | { | 2864 | { |
2925 | "descriptors": [ | 2865 | "descriptors": [ |
@@ -4254,81 +4194,55 @@ | |||
4254 | { | 4194 | { |
4255 | "descriptors": [ | 4195 | "descriptors": [ |
4256 | { | 4196 | { |
4257 | "defaultMessage": "!!!Franz Professional Yearly", | 4197 | "defaultMessage": "!!!Franz Professional", |
4258 | "end": { | 4198 | "end": { |
4259 | "column": 3, | 4199 | "column": 3, |
4260 | "line": 8 | 4200 | "line": 8 |
4261 | }, | 4201 | }, |
4262 | "file": "src/helpers/plan-helpers.js", | 4202 | "file": "src/helpers/plan-helpers.js", |
4263 | "id": "pricing.plan.pro-yearly", | 4203 | "id": "pricing.plan.pro", |
4264 | "start": { | 4204 | "start": { |
4265 | "column": 22, | 4205 | "column": 15, |
4266 | "line": 5 | 4206 | "line": 5 |
4267 | } | 4207 | } |
4268 | }, | 4208 | }, |
4269 | { | 4209 | { |
4270 | "defaultMessage": "!!!Franz Professional Monthly", | 4210 | "defaultMessage": "!!!Franz Personal", |
4271 | "end": { | 4211 | "end": { |
4272 | "column": 3, | 4212 | "column": 3, |
4273 | "line": 12 | 4213 | "line": 12 |
4274 | }, | 4214 | }, |
4275 | "file": "src/helpers/plan-helpers.js", | 4215 | "file": "src/helpers/plan-helpers.js", |
4276 | "id": "pricing.plan.pro-monthly", | 4216 | "id": "pricing.plan.personal", |
4277 | "start": { | 4217 | "start": { |
4278 | "column": 23, | 4218 | "column": 20, |
4279 | "line": 9 | 4219 | "line": 9 |
4280 | } | 4220 | } |
4281 | }, | 4221 | }, |
4282 | { | 4222 | { |
4283 | "defaultMessage": "!!!Franz Personal Yearly", | ||
4284 | "end": { | ||
4285 | "column": 3, | ||
4286 | "line": 16 | ||
4287 | }, | ||
4288 | "file": "src/helpers/plan-helpers.js", | ||
4289 | "id": "pricing.plan.personal-yearly", | ||
4290 | "start": { | ||
4291 | "column": 27, | ||
4292 | "line": 13 | ||
4293 | } | ||
4294 | }, | ||
4295 | { | ||
4296 | "defaultMessage": "!!!Franz Personal Monthly", | ||
4297 | "end": { | ||
4298 | "column": 3, | ||
4299 | "line": 20 | ||
4300 | }, | ||
4301 | "file": "src/helpers/plan-helpers.js", | ||
4302 | "id": "pricing.plan.personal-monthly", | ||
4303 | "start": { | ||
4304 | "column": 28, | ||
4305 | "line": 17 | ||
4306 | } | ||
4307 | }, | ||
4308 | { | ||
4309 | "defaultMessage": "!!!Franz Free", | 4223 | "defaultMessage": "!!!Franz Free", |
4310 | "end": { | 4224 | "end": { |
4311 | "column": 3, | 4225 | "column": 3, |
4312 | "line": 24 | 4226 | "line": 16 |
4313 | }, | 4227 | }, |
4314 | "file": "src/helpers/plan-helpers.js", | 4228 | "file": "src/helpers/plan-helpers.js", |
4315 | "id": "pricing.plan.free", | 4229 | "id": "pricing.plan.free", |
4316 | "start": { | 4230 | "start": { |
4317 | "column": 16, | 4231 | "column": 16, |
4318 | "line": 21 | 4232 | "line": 13 |
4319 | } | 4233 | } |
4320 | }, | 4234 | }, |
4321 | { | 4235 | { |
4322 | "defaultMessage": "!!!Franz Premium", | 4236 | "defaultMessage": "!!!Franz Premium", |
4323 | "end": { | 4237 | "end": { |
4324 | "column": 3, | 4238 | "column": 3, |
4325 | "line": 28 | 4239 | "line": 20 |
4326 | }, | 4240 | }, |
4327 | "file": "src/helpers/plan-helpers.js", | 4241 | "file": "src/helpers/plan-helpers.js", |
4328 | "id": "pricing.plan.legacy", | 4242 | "id": "pricing.plan.legacy", |
4329 | "start": { | 4243 | "start": { |
4330 | "column": 18, | 4244 | "column": 18, |
4331 | "line": 25 | 4245 | "line": 17 |
4332 | } | 4246 | } |
4333 | } | 4247 | } |
4334 | ], | 4248 | ], |
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index a4c828f92..57785b74a 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json | |||
@@ -123,7 +123,11 @@ | |||
123 | "pricing.plan.free": "Franz Free", | 123 | "pricing.plan.free": "Franz Free", |
124 | "pricing.plan.legacy": "Franz Premium", | 124 | "pricing.plan.legacy": "Franz Premium", |
125 | "pricing.plan.personal": "Franz Personal", | 125 | "pricing.plan.personal": "Franz Personal", |
126 | "pricing.plan.personal-monthly": "Franz Personal Monthly", | ||
127 | "pricing.plan.personal-yearly": "Franz Personal Yearly", | ||
126 | "pricing.plan.pro": "Franz Professional", | 128 | "pricing.plan.pro": "Franz Professional", |
129 | "pricing.plan.pro-monthly": "Franz Professional Monthly", | ||
130 | "pricing.plan.pro-yearly": "Franz Professional Yearly", | ||
127 | "pricing.trial.cta.accept": "Yes, upgrade my account to Franz Professional", | 131 | "pricing.trial.cta.accept": "Yes, upgrade my account to Franz Professional", |
128 | "pricing.trial.cta.skip": "Continue to Franz", | 132 | "pricing.trial.cta.skip": "Continue to Franz", |
129 | "pricing.trial.error": "Sorry, we could not activate your trial!", | 133 | "pricing.trial.error": "Sorry, we could not activate your trial!", |
@@ -166,7 +170,8 @@ | |||
166 | "settings.account.headlinePassword": "Change password", | 170 | "settings.account.headlinePassword": "Change password", |
167 | "settings.account.headlineProfile": "Update profile", | 171 | "settings.account.headlineProfile": "Update profile", |
168 | "settings.account.headlineSubscription": "Your subscription", | 172 | "settings.account.headlineSubscription": "Your subscription", |
169 | "settings.account.headlineUpgrade": "Upgrade your account & support Franz", | 173 | "settings.account.headlineTrialUpgrade": "Get the free 14 day Franz Professional Trial", |
174 | "settings.account.headlineUpgradeAccount": "Upgrade your account & get the full Franz experience", | ||
170 | "settings.account.invoiceDownload": "Download", | 175 | "settings.account.invoiceDownload": "Download", |
171 | "settings.account.manageSubscription.label": "Manage your subscription", | 176 | "settings.account.manageSubscription.label": "Manage your subscription", |
172 | "settings.account.successInfo": "Your changes have been saved", | 177 | "settings.account.successInfo": "Your changes have been saved", |
@@ -327,20 +332,11 @@ | |||
327 | "signup.link.login": "Already have an account, sign in?", | 332 | "signup.link.login": "Already have an account, sign in?", |
328 | "signup.password.label": "Password", | 333 | "signup.password.label": "Password", |
329 | "signup.submit.label": "Create account", | 334 | "signup.submit.label": "Create account", |
330 | "subscription.euTaxInfo": "EU residents: local sales tax may apply", | 335 | "subscription.cta.activateTrial": "Yes, start the free Franz Professional trial", |
331 | "subscription.features.ads": "No ads, ever!", | 336 | "subscription.cta.choosePlan": "Choose your plan", |
332 | "subscription.features.comingSoon": "coming soon", | 337 | "subscription.includedProFeatures": "The Franz Professional Plan includes:", |
333 | "subscription.features.noInterruptions": "No app delays & nagging to upgrade license", | 338 | "subscription.teaser.includedFeatures": "Paid Franz Plans include:", |
334 | "subscription.features.onpremise.mattermost": "Add on-premise/hosted services like Mattermost", | 339 | "subscription.teaser.intro": "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", |
335 | "subscription.features.proxy": "Proxy support for services", | ||
336 | "subscription.features.spellchecker": "Support for spellchecker", | ||
337 | "subscription.features.workspaces": "Organize your services in workspaces", | ||
338 | "subscription.includedFeatures": "Paid Franz Premium Supporter Account includes", | ||
339 | "subscription.paymentSessionError": "Could not initialize payment form", | ||
340 | "subscription.submit.label": "I want to support the development of Franz", | ||
341 | "subscription.type.free": "free", | ||
342 | "subscription.type.month": "month", | ||
343 | "subscription.type.year": "year", | ||
344 | "subscriptionPopup.buttonCancel": "Cancel", | 340 | "subscriptionPopup.buttonCancel": "Cancel", |
345 | "subscriptionPopup.buttonDone": "Done", | 341 | "subscriptionPopup.buttonDone": "Done", |
346 | "tabs.item.deleteService": "Delete service", | 342 | "tabs.item.deleteService": "Delete service", |
diff --git a/src/i18n/messages/src/components/settings/account/AccountDashboard.json b/src/i18n/messages/src/components/settings/account/AccountDashboard.json index 1e21bad69..68d3e6dd1 100644 --- a/src/i18n/messages/src/components/settings/account/AccountDashboard.json +++ b/src/i18n/messages/src/components/settings/account/AccountDashboard.json | |||
@@ -26,28 +26,15 @@ | |||
26 | } | 26 | } |
27 | }, | 27 | }, |
28 | { | 28 | { |
29 | "id": "settings.account.headlineTrialUpgrade", | ||
30 | "defaultMessage": "!!!Get the free 14 day Franz Professional Trial", | ||
31 | "file": "src/components/settings/account/AccountDashboard.js", | ||
32 | "start": { | ||
33 | "line": 26, | ||
34 | "column": 19 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 29, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "settings.account.headlineDangerZone", | 29 | "id": "settings.account.headlineDangerZone", |
43 | "defaultMessage": "!!Danger Zone", | 30 | "defaultMessage": "!!Danger Zone", |
44 | "file": "src/components/settings/account/AccountDashboard.js", | 31 | "file": "src/components/settings/account/AccountDashboard.js", |
45 | "start": { | 32 | "start": { |
46 | "line": 30, | 33 | "line": 26, |
47 | "column": 22 | 34 | "column": 22 |
48 | }, | 35 | }, |
49 | "end": { | 36 | "end": { |
50 | "line": 33, | 37 | "line": 29, |
51 | "column": 3 | 38 | "column": 3 |
52 | } | 39 | } |
53 | }, | 40 | }, |
@@ -56,11 +43,11 @@ | |||
56 | "defaultMessage": "!!!Manage your subscription", | 43 | "defaultMessage": "!!!Manage your subscription", |
57 | "file": "src/components/settings/account/AccountDashboard.js", | 44 | "file": "src/components/settings/account/AccountDashboard.js", |
58 | "start": { | 45 | "start": { |
59 | "line": 34, | 46 | "line": 30, |
60 | "column": 33 | 47 | "column": 33 |
61 | }, | 48 | }, |
62 | "end": { | 49 | "end": { |
63 | "line": 37, | 50 | "line": 33, |
64 | "column": 3 | 51 | "column": 3 |
65 | } | 52 | } |
66 | }, | 53 | }, |
@@ -69,11 +56,11 @@ | |||
69 | "defaultMessage": "!!!Basic Account", | 56 | "defaultMessage": "!!!Basic Account", |
70 | "file": "src/components/settings/account/AccountDashboard.js", | 57 | "file": "src/components/settings/account/AccountDashboard.js", |
71 | "start": { | 58 | "start": { |
72 | "line": 38, | 59 | "line": 34, |
73 | "column": 20 | 60 | "column": 20 |
74 | }, | 61 | }, |
75 | "end": { | 62 | "end": { |
76 | "line": 41, | 63 | "line": 37, |
77 | "column": 3 | 64 | "column": 3 |
78 | } | 65 | } |
79 | }, | 66 | }, |
@@ -82,11 +69,11 @@ | |||
82 | "defaultMessage": "!!!Premium Supporter Account", | 69 | "defaultMessage": "!!!Premium Supporter Account", |
83 | "file": "src/components/settings/account/AccountDashboard.js", | 70 | "file": "src/components/settings/account/AccountDashboard.js", |
84 | "start": { | 71 | "start": { |
85 | "line": 42, | 72 | "line": 38, |
86 | "column": 22 | 73 | "column": 22 |
87 | }, | 74 | }, |
88 | "end": { | 75 | "end": { |
89 | "line": 45, | 76 | "line": 41, |
90 | "column": 3 | 77 | "column": 3 |
91 | } | 78 | } |
92 | }, | 79 | }, |
@@ -95,11 +82,11 @@ | |||
95 | "defaultMessage": "!!!Edit Account", | 82 | "defaultMessage": "!!!Edit Account", |
96 | "file": "src/components/settings/account/AccountDashboard.js", | 83 | "file": "src/components/settings/account/AccountDashboard.js", |
97 | "start": { | 84 | "start": { |
98 | "line": 46, | 85 | "line": 42, |
99 | "column": 21 | 86 | "column": 21 |
100 | }, | 87 | }, |
101 | "end": { | 88 | "end": { |
102 | "line": 49, | 89 | "line": 45, |
103 | "column": 3 | 90 | "column": 3 |
104 | } | 91 | } |
105 | }, | 92 | }, |
@@ -108,11 +95,11 @@ | |||
108 | "defaultMessage": "!!Invoices", | 95 | "defaultMessage": "!!Invoices", |
109 | "file": "src/components/settings/account/AccountDashboard.js", | 96 | "file": "src/components/settings/account/AccountDashboard.js", |
110 | "start": { | 97 | "start": { |
111 | "line": 50, | 98 | "line": 46, |
112 | "column": 18 | 99 | "column": 18 |
113 | }, | 100 | }, |
114 | "end": { | 101 | "end": { |
115 | "line": 53, | 102 | "line": 49, |
116 | "column": 3 | 103 | "column": 3 |
117 | } | 104 | } |
118 | }, | 105 | }, |
@@ -121,11 +108,11 @@ | |||
121 | "defaultMessage": "!!!Download", | 108 | "defaultMessage": "!!!Download", |
122 | "file": "src/components/settings/account/AccountDashboard.js", | 109 | "file": "src/components/settings/account/AccountDashboard.js", |
123 | "start": { | 110 | "start": { |
124 | "line": 54, | 111 | "line": 50, |
125 | "column": 19 | 112 | "column": 19 |
126 | }, | 113 | }, |
127 | "end": { | 114 | "end": { |
128 | "line": 57, | 115 | "line": 53, |
129 | "column": 3 | 116 | "column": 3 |
130 | } | 117 | } |
131 | }, | 118 | }, |
@@ -134,11 +121,11 @@ | |||
134 | "defaultMessage": "!!!Could not load user information", | 121 | "defaultMessage": "!!!Could not load user information", |
135 | "file": "src/components/settings/account/AccountDashboard.js", | 122 | "file": "src/components/settings/account/AccountDashboard.js", |
136 | "start": { | 123 | "start": { |
137 | "line": 58, | 124 | "line": 54, |
138 | "column": 25 | 125 | "column": 25 |
139 | }, | 126 | }, |
140 | "end": { | 127 | "end": { |
141 | "line": 61, | 128 | "line": 57, |
142 | "column": 3 | 129 | "column": 3 |
143 | } | 130 | } |
144 | }, | 131 | }, |
@@ -147,11 +134,11 @@ | |||
147 | "defaultMessage": "!!!Try again", | 134 | "defaultMessage": "!!!Try again", |
148 | "file": "src/components/settings/account/AccountDashboard.js", | 135 | "file": "src/components/settings/account/AccountDashboard.js", |
149 | "start": { | 136 | "start": { |
150 | "line": 62, | 137 | "line": 58, |
151 | "column": 28 | 138 | "column": 28 |
152 | }, | 139 | }, |
153 | "end": { | 140 | "end": { |
154 | "line": 65, | 141 | "line": 61, |
155 | "column": 3 | 142 | "column": 3 |
156 | } | 143 | } |
157 | }, | 144 | }, |
@@ -160,11 +147,11 @@ | |||
160 | "defaultMessage": "!!!Delete account", | 147 | "defaultMessage": "!!!Delete account", |
161 | "file": "src/components/settings/account/AccountDashboard.js", | 148 | "file": "src/components/settings/account/AccountDashboard.js", |
162 | "start": { | 149 | "start": { |
163 | "line": 66, | 150 | "line": 62, |
164 | "column": 17 | 151 | "column": 17 |
165 | }, | 152 | }, |
166 | "end": { | 153 | "end": { |
167 | "line": 69, | 154 | "line": 65, |
168 | "column": 3 | 155 | "column": 3 |
169 | } | 156 | } |
170 | }, | 157 | }, |
@@ -173,11 +160,11 @@ | |||
173 | "defaultMessage": "!!!If you don't need your Franz account any longer, you can delete your account and all related data here.", | 160 | "defaultMessage": "!!!If you don't need your Franz account any longer, you can delete your account and all related data here.", |
174 | "file": "src/components/settings/account/AccountDashboard.js", | 161 | "file": "src/components/settings/account/AccountDashboard.js", |
175 | "start": { | 162 | "start": { |
176 | "line": 70, | 163 | "line": 66, |
177 | "column": 14 | 164 | "column": 14 |
178 | }, | 165 | }, |
179 | "end": { | 166 | "end": { |
180 | "line": 73, | 167 | "line": 69, |
181 | "column": 3 | 168 | "column": 3 |
182 | } | 169 | } |
183 | }, | 170 | }, |
@@ -186,11 +173,11 @@ | |||
186 | "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", | 173 | "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", |
187 | "file": "src/components/settings/account/AccountDashboard.js", | 174 | "file": "src/components/settings/account/AccountDashboard.js", |
188 | "start": { | 175 | "start": { |
189 | "line": 74, | 176 | "line": 70, |
190 | "column": 19 | 177 | "column": 19 |
191 | }, | 178 | }, |
192 | "end": { | 179 | "end": { |
193 | "line": 77, | 180 | "line": 73, |
194 | "column": 3 | 181 | "column": 3 |
195 | } | 182 | } |
196 | }, | 183 | }, |
@@ -199,11 +186,11 @@ | |||
199 | "defaultMessage": "!!!Free Trial", | 186 | "defaultMessage": "!!!Free Trial", |
200 | "file": "src/components/settings/account/AccountDashboard.js", | 187 | "file": "src/components/settings/account/AccountDashboard.js", |
201 | "start": { | 188 | "start": { |
202 | "line": 78, | 189 | "line": 74, |
203 | "column": 9 | 190 | "column": 9 |
204 | }, | 191 | }, |
205 | "end": { | 192 | "end": { |
206 | "line": 81, | 193 | "line": 77, |
207 | "column": 3 | 194 | "column": 3 |
208 | } | 195 | } |
209 | }, | 196 | }, |
@@ -212,11 +199,11 @@ | |||
212 | "defaultMessage": "!!!Your license:", | 199 | "defaultMessage": "!!!Your license:", |
213 | "file": "src/components/settings/account/AccountDashboard.js", | 200 | "file": "src/components/settings/account/AccountDashboard.js", |
214 | "start": { | 201 | "start": { |
215 | "line": 82, | 202 | "line": 78, |
216 | "column": 15 | 203 | "column": 15 |
217 | }, | 204 | }, |
218 | "end": { | 205 | "end": { |
219 | "line": 85, | 206 | "line": 81, |
220 | "column": 3 | 207 | "column": 3 |
221 | } | 208 | } |
222 | }, | 209 | }, |
@@ -225,11 +212,11 @@ | |||
225 | "defaultMessage": "!!!Your free trial ends in {duration}.", | 212 | "defaultMessage": "!!!Your free trial ends in {duration}.", |
226 | "file": "src/components/settings/account/AccountDashboard.js", | 213 | "file": "src/components/settings/account/AccountDashboard.js", |
227 | "start": { | 214 | "start": { |
228 | "line": 86, | 215 | "line": 82, |
229 | "column": 15 | 216 | "column": 15 |
230 | }, | 217 | }, |
231 | "end": { | 218 | "end": { |
232 | "line": 89, | 219 | "line": 85, |
233 | "column": 3 | 220 | "column": 3 |
234 | } | 221 | } |
235 | }, | 222 | }, |
@@ -238,11 +225,11 @@ | |||
238 | "defaultMessage": "!!!Please update your billing info to continue using {license} after your trial period.", | 225 | "defaultMessage": "!!!Please update your billing info to continue using {license} after your trial period.", |
239 | "file": "src/components/settings/account/AccountDashboard.js", | 226 | "file": "src/components/settings/account/AccountDashboard.js", |
240 | "start": { | 227 | "start": { |
241 | "line": 90, | 228 | "line": 86, |
242 | "column": 33 | 229 | "column": 33 |
243 | }, | 230 | }, |
244 | "end": { | 231 | "end": { |
245 | "line": 93, | 232 | "line": 89, |
246 | "column": 3 | 233 | "column": 3 |
247 | } | 234 | } |
248 | } | 235 | } |
diff --git a/src/i18n/messages/src/components/subscription/SubscriptionForm.json b/src/i18n/messages/src/components/subscription/SubscriptionForm.json index 224a78c4c..6d235254e 100644 --- a/src/i18n/messages/src/components/subscription/SubscriptionForm.json +++ b/src/i18n/messages/src/components/subscription/SubscriptionForm.json | |||
@@ -1,66 +1,53 @@ | |||
1 | [ | 1 | [ |
2 | { | 2 | { |
3 | "id": "subscription.cta.activateTrial", | 3 | "id": "subscription.cta.choosePlan", |
4 | "defaultMessage": "!!!Yes, upgrade my account to Franz Professional", | 4 | "defaultMessage": "!!!Choose your plan", |
5 | "file": "src/components/subscription/SubscriptionForm.js", | 5 | "file": "src/components/subscription/SubscriptionForm.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 14, | 7 | "line": 13, |
8 | "column": 21 | 8 | "column": 21 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 17, | 11 | "line": 16, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
15 | { | 15 | { |
16 | "id": "subscription.includedProFeatures", | 16 | "id": "settings.account.headlineUpgradeAccount", |
17 | "defaultMessage": "!!!The Franz Professional Plan includes:", | 17 | "defaultMessage": "!!!Upgrade your account and get the full Franz experience", |
18 | "file": "src/components/subscription/SubscriptionForm.js", | 18 | "file": "src/components/subscription/SubscriptionForm.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 18, | 20 | "line": 17, |
21 | "column": 20 | 21 | "column": 18 |
22 | }, | ||
23 | "end": { | ||
24 | "line": 21, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "pricing.trial.terms.headline", | ||
30 | "defaultMessage": "!!!No strings attached", | ||
31 | "file": "src/components/subscription/SubscriptionForm.js", | ||
32 | "start": { | ||
33 | "line": 22, | ||
34 | "column": 29 | ||
35 | }, | 22 | }, |
36 | "end": { | 23 | "end": { |
37 | "line": 25, | 24 | "line": 20, |
38 | "column": 3 | 25 | "column": 3 |
39 | } | 26 | } |
40 | }, | 27 | }, |
41 | { | 28 | { |
42 | "id": "pricing.trial.terms.noCreditCard", | 29 | "id": "subscription.teaser.intro", |
43 | "defaultMessage": "!!!No credit card required", | 30 | "defaultMessage": "!!!Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", |
44 | "file": "src/components/subscription/SubscriptionForm.js", | 31 | "file": "src/components/subscription/SubscriptionForm.js", |
45 | "start": { | 32 | "start": { |
46 | "line": 26, | 33 | "line": 21, |
47 | "column": 16 | 34 | "column": 14 |
48 | }, | 35 | }, |
49 | "end": { | 36 | "end": { |
50 | "line": 29, | 37 | "line": 24, |
51 | "column": 3 | 38 | "column": 3 |
52 | } | 39 | } |
53 | }, | 40 | }, |
54 | { | 41 | { |
55 | "id": "pricing.trial.terms.automaticTrialEnd", | 42 | "id": "subscription.teaser.includedFeatures", |
56 | "defaultMessage": "!!!Your free trial ends automatically after 14 days", | 43 | "defaultMessage": "!!!Paid Franz Plans include:", |
57 | "file": "src/components/subscription/SubscriptionForm.js", | 44 | "file": "src/components/subscription/SubscriptionForm.js", |
58 | "start": { | 45 | "start": { |
59 | "line": 30, | 46 | "line": 25, |
60 | "column": 21 | 47 | "column": 20 |
61 | }, | 48 | }, |
62 | "end": { | 49 | "end": { |
63 | "line": 33, | 50 | "line": 28, |
64 | "column": 3 | 51 | "column": 3 |
65 | } | 52 | } |
66 | } | 53 | } |
diff --git a/src/i18n/messages/src/components/subscription/TrialForm.json b/src/i18n/messages/src/components/subscription/TrialForm.json new file mode 100644 index 000000000..da1f01518 --- /dev/null +++ b/src/i18n/messages/src/components/subscription/TrialForm.json | |||
@@ -0,0 +1,80 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "subscription.cta.activateTrial", | ||
4 | "defaultMessage": "!!!Yes, start the free Franz Professional trial", | ||
5 | "file": "src/components/subscription/TrialForm.js", | ||
6 | "start": { | ||
7 | "line": 14, | ||
8 | "column": 21 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 17, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "settings.account.headlineTrialUpgrade", | ||
17 | "defaultMessage": "!!!Get the free 14 day Franz Professional Trial", | ||
18 | "file": "src/components/subscription/TrialForm.js", | ||
19 | "start": { | ||
20 | "line": 18, | ||
21 | "column": 18 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 21, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "subscription.includedProFeatures", | ||
30 | "defaultMessage": "!!!The Franz Professional Plan includes:", | ||
31 | "file": "src/components/subscription/TrialForm.js", | ||
32 | "start": { | ||
33 | "line": 22, | ||
34 | "column": 20 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 25, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "pricing.trial.terms.headline", | ||
43 | "defaultMessage": "!!!No strings attached", | ||
44 | "file": "src/components/subscription/TrialForm.js", | ||
45 | "start": { | ||
46 | "line": 26, | ||
47 | "column": 29 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 29, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "pricing.trial.terms.noCreditCard", | ||
56 | "defaultMessage": "!!!No credit card required", | ||
57 | "file": "src/components/subscription/TrialForm.js", | ||
58 | "start": { | ||
59 | "line": 30, | ||
60 | "column": 16 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 33, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "pricing.trial.terms.automaticTrialEnd", | ||
69 | "defaultMessage": "!!!Your free trial ends automatically after 14 days", | ||
70 | "file": "src/components/subscription/TrialForm.js", | ||
71 | "start": { | ||
72 | "line": 34, | ||
73 | "column": 21 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 37, | ||
77 | "column": 3 | ||
78 | } | ||
79 | } | ||
80 | ] \ No newline at end of file | ||
diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js index e7516e6e6..03679a163 100644 --- a/src/stores/UserStore.js +++ b/src/stores/UserStore.js | |||
@@ -350,8 +350,6 @@ export default class UserStore extends Store { | |||
350 | if (this.hasActivatedTrial) { | 350 | if (this.hasActivatedTrial) { |
351 | await sleep(ms('12s')); | 351 | await sleep(ms('12s')); |
352 | 352 | ||
353 | console.log('resetting this.hasActivatedTrial', this.hasActivatedTrial); | ||
354 | |||
355 | this.hasActivatedTrial = false; | 353 | this.hasActivatedTrial = false; |
356 | } | 354 | } |
357 | } | 355 | } |