aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/actions/user.js4
-rw-r--r--src/api/server/ServerApi.js2
-rw-r--r--src/components/auth/Pricing.js92
-rw-r--r--src/containers/auth/PricingScreen.js17
-rw-r--r--src/containers/auth/SignupScreen.js22
-rw-r--r--src/i18n/locales/defaultMessages.json94
-rw-r--r--src/i18n/locales/en-US.json6
-rw-r--r--src/i18n/messages/src/components/auth/Pricing.json81
-rw-r--r--src/stores/FeaturesStore.js1
-rw-r--r--src/stores/UserStore.js4
10 files changed, 245 insertions, 78 deletions
diff --git a/src/actions/user.js b/src/actions/user.js
index 5d7d9a899..7061a367a 100644
--- a/src/actions/user.js
+++ b/src/actions/user.js
@@ -11,8 +11,10 @@ export default {
11 lastname: PropTypes.string.isRequired, 11 lastname: PropTypes.string.isRequired,
12 email: PropTypes.string.isRequired, 12 email: PropTypes.string.isRequired,
13 password: PropTypes.string.isRequired, 13 password: PropTypes.string.isRequired,
14 accountType: PropTypes.string.isRequired, 14 accountType: PropTypes.string,
15 company: PropTypes.string, 15 company: PropTypes.string,
16 plan: PropTypes.string,
17 currency: PropTypes.string,
16 }, 18 },
17 retrievePassword: { 19 retrievePassword: {
18 email: PropTypes.string.isRequired, 20 email: PropTypes.string.isRequired,
diff --git a/src/api/server/ServerApi.js b/src/api/server/ServerApi.js
index f56c7b6e4..1f538368d 100644
--- a/src/api/server/ServerApi.js
+++ b/src/api/server/ServerApi.js
@@ -87,7 +87,7 @@ export default class ServerApi {
87 } 87 }
88 const trial = await request.json(); 88 const trial = await request.json();
89 89
90 debug('ServerApi::signup resolves', trial); 90 debug('ServerApi::activateTrial resolves', trial);
91 return true; 91 return true;
92 } 92 }
93 93
diff --git a/src/components/auth/Pricing.js b/src/components/auth/Pricing.js
index 67af04470..86b6a4263 100644
--- a/src/components/auth/Pricing.js
+++ b/src/components/auth/Pricing.js
@@ -13,12 +13,20 @@ import { FeatureList } from '../ui/FeatureList';
13 13
14const messages = defineMessages({ 14const messages = defineMessages({
15 headline: { 15 headline: {
16 id: 'pricing.trial.headline', 16 id: 'pricing.trial.headline.pro',
17 defaultMessage: '!!!Franz Professional', 17 defaultMessage: '!!!Hi {name}, welcome to Franz',
18 }, 18 },
19 personalOffer: { 19 specialTreat: {
20 id: 'pricing.trial.subheadline', 20 id: 'pricing.trial.intro.specialTreat',
21 defaultMessage: '!!!Here\'s a special welcome for you:', 21 defaultMessage: '!!!We have a special treat for you.',
22 },
23 tryPro: {
24 id: 'pricing.trial.intro.tryPro',
25 defaultMessage: '!!!Enjoy the full Franz Professional experience completely free for 14 days.',
26 },
27 happyMessaging: {
28 id: 'pricing.trial.intro.happyMessaging',
29 defaultMessage: '!!!Happy messaging,',
22 }, 30 },
23 noStringsAttachedHeadline: { 31 noStringsAttachedHeadline: {
24 id: 'pricing.trial.terms.headline', 32 id: 'pricing.trial.terms.headline',
@@ -44,6 +52,10 @@ const messages = defineMessages({
44 id: 'pricing.trial.cta.accept', 52 id: 'pricing.trial.cta.accept',
45 defaultMessage: '!!!Start my 14-day Franz Professional Trial ', 53 defaultMessage: '!!!Start my 14-day Franz Professional Trial ',
46 }, 54 },
55 ctaStart: {
56 id: 'pricing.trial.cta.start',
57 defaultMessage: '!!!Start using Franz',
58 },
47 ctaSkip: { 59 ctaSkip: {
48 id: 'pricing.trial.cta.skip', 60 id: 'pricing.trial.cta.skip',
49 defaultMessage: '!!!Continue to Franz', 61 defaultMessage: '!!!Continue to Franz',
@@ -98,6 +110,34 @@ const styles = theme => ({
98 margin: [20, 0, 0], 110 margin: [20, 0, 0],
99 color: theme.styleTypes.danger.accent, 111 color: theme.styleTypes.danger.accent,
100 }, 112 },
113 priceContainer: {
114 display: 'flex',
115 justifyContent: 'space-evenly',
116 margin: [10, 0, 15],
117 },
118 price: {
119 '& sup': {
120 verticalAlign: 14,
121 fontSize: 20,
122 },
123 },
124 figure: {
125 fontSize: 40,
126 },
127 regularPrice: {
128 position: 'relative',
129
130 '&:before': {
131 content: '" "',
132 position: 'absolute',
133 width: '130%',
134 height: 1,
135 top: 14,
136 left: -12,
137 borderBottom: [3, 'solid', 'red'],
138 transform: 'rotateZ(-20deg)',
139 },
140 },
101}); 141});
102 142
103export default @observer @injectSheet(styles) class Signup extends Component { 143export default @observer @injectSheet(styles) class Signup extends Component {
@@ -129,6 +169,8 @@ export default @observer @injectSheet(styles) class Signup extends Component {
129 } = this.props; 169 } = this.props;
130 const { intl } = this.context; 170 const { intl } = this.context;
131 171
172 const [intPart, fractionPart] = (price).toString().split('.');
173
132 return ( 174 return (
133 <div className={classnames('auth__scroll-container', classes.container)}> 175 <div className={classnames('auth__scroll-container', classes.container)}>
134 <div className={classnames('auth__container', 'auth__container--signup', classes.content)}> 176 <div className={classnames('auth__container', 'auth__container--signup', classes.content)}>
@@ -140,25 +182,39 @@ export default @observer @injectSheet(styles) class Signup extends Component {
140 alt="" 182 alt=""
141 /> 183 />
142 )} 184 )}
143 <p className={classes.welcomeOffer}>{intl.formatMessage(messages.personalOffer)}</p> 185 <h1>{intl.formatMessage(messages.headline, { name: 'Stefan' })}</h1>
144 <h1>{intl.formatMessage(messages.headline)}</h1>
145 <div className="auth__letter"> 186 <div className="auth__letter">
146 <p> 187 <p>
147 We built Franz with a lot of effort, manpower and love, 188 {intl.formatMessage(messages.specialTreat)}
148 to boost up your messaging experience.
149 <br /> 189 <br />
150 </p> 190 </p>
151 <p> 191 <p>
152 For the next 14 days, we are going to give you the full Franz Professional experience so you can watch your communication evolve! 192 {intl.formatMessage(messages.tryPro)}
153 <br /> 193 <br />
154 </p> 194 </p>
155 <p> 195 <p>
156 Thanks for being a hero. 196 {intl.formatMessage(messages.happyMessaging)}
157 </p> 197 </p>
158 <p> 198 <p>
159 <strong>Stefan Malzner</strong> 199 <strong>Stefan Malzner</strong>
160 </p> 200 </p>
161 </div> 201 </div>
202 <div className={classes.priceContainer}>
203 <p className={classnames(classes.price, classes.regularPrice)}>
204 <span className={classes.figure}>
205 {currency}
206 {intPart}
207 </span>
208 <sup>{fractionPart}</sup>
209 </p>
210 <p className={classnames(classes.price, classes.trialPrice)}>
211 <span className={classes.figure}>
212 {currency}
213 0
214 </span>
215 <sup>00</sup>
216 </p>
217 </div>
162 <div className={classes.keyTerms}> 218 <div className={classes.keyTerms}>
163 <H2> 219 <H2>
164 {intl.formatMessage(messages.noStringsAttachedHeadline)} 220 {intl.formatMessage(messages.noStringsAttachedHeadline)}
@@ -179,7 +235,7 @@ export default @observer @injectSheet(styles) class Signup extends Component {
179 <p className={classes.error}>{intl.formatMessage(messages.activationError)}</p> 235 <p className={classes.error}>{intl.formatMessage(messages.activationError)}</p>
180 )} 236 )}
181 <Button 237 <Button
182 label={intl.formatMessage(messages.ctaAccept)} 238 label={intl.formatMessage(!canSkipTrial ? messages.ctaStart : messages.ctaAccept)}
183 className={classes.cta} 239 className={classes.cta}
184 onClick={onSubmit} 240 onClick={onSubmit}
185 busy={isActivatingTrial} 241 busy={isActivatingTrial}
@@ -196,18 +252,6 @@ export default @observer @injectSheet(styles) class Signup extends Component {
196 <H2> 252 <H2>
197 {intl.formatMessage(messages.featuresHeadline)} 253 {intl.formatMessage(messages.featuresHeadline)}
198 </H2> 254 </H2>
199 {/* <ul className={classes.features}>
200 <FeatureItem name="Add unlimited services" className={classes.featureItem} />
201 <FeatureItem name="Spellchecker support" className={classes.featureItem} />
202 <FeatureItem name="Workspaces" className={classes.featureItem} />
203 <FeatureItem name="Add Custom Websites" className={classes.featureItem} />
204 <FeatureItem name="On-premise & other Hosted Services" className={classes.featureItem} />
205 <FeatureItem name="Install 3rd party services" className={classes.featureItem} />
206 <FeatureItem name="Service Proxies" className={classes.featureItem} />
207 <FeatureItem name="Team Management" className={classes.featureItem} />
208 <FeatureItem name="No Waiting Screens" className={classes.featureItem} />
209 <FeatureItem name="Forever ad-free" className={classes.featureItem} />
210 </ul> */}
211 <FeatureList /> 255 <FeatureList />
212 </div> 256 </div>
213 </div> 257 </div>
diff --git a/src/containers/auth/PricingScreen.js b/src/containers/auth/PricingScreen.js
index ff378bd8b..55811ed23 100644
--- a/src/containers/auth/PricingScreen.js
+++ b/src/containers/auth/PricingScreen.js
@@ -20,14 +20,19 @@ export default @inject('stores', 'actions') @observer class PricingScreen extend
20 } = this.props; 20 } = this.props;
21 21
22 const { activateTrialRequest } = stores.user; 22 const { activateTrialRequest } = stores.user;
23 const { defaultTrialPlan } = stores.features.features; 23 const { defaultTrialPlan, canSkipTrial } = stores.features.anonymousFeatures;
24 24
25 actions.user.activateTrial({ planId: defaultTrialPlan }); 25 if (!canSkipTrial) {
26 await activateTrialRequest._promise;
27
28 if (!activateTrialRequest.isError) {
29 stores.router.push('/'); 26 stores.router.push('/');
30 stores.user.hasCompletedSignup = true; 27 stores.user.hasCompletedSignup = true;
28 } else {
29 actions.user.activateTrial({ planId: defaultTrialPlan });
30 await activateTrialRequest._promise;
31
32 if (!activateTrialRequest.isError) {
33 stores.router.push('/');
34 stores.user.hasCompletedSignup = true;
35 }
31 } 36 }
32 } 37 }
33 38
@@ -43,7 +48,7 @@ export default @inject('stores', 'actions') @observer class PricingScreen extend
43 const { pricingConfig } = features; 48 const { pricingConfig } = features;
44 49
45 let currency = '$'; 50 let currency = '$';
46 let price = '5.99'; 51 let price = 5.99;
47 if (pricingConfig) { 52 if (pricingConfig) {
48 ({ currency } = pricingConfig); 53 ({ currency } = pricingConfig);
49 ({ price } = pricingConfig.plans.pro.yearly); 54 ({ price } = pricingConfig.plans.pro.yearly);
diff --git a/src/containers/auth/SignupScreen.js b/src/containers/auth/SignupScreen.js
index efc7ea4c1..f93498be2 100644
--- a/src/containers/auth/SignupScreen.js
+++ b/src/containers/auth/SignupScreen.js
@@ -4,6 +4,7 @@ import { inject, observer } from 'mobx-react';
4 4
5import Signup from '../../components/auth/Signup'; 5import Signup from '../../components/auth/Signup';
6import UserStore from '../../stores/UserStore'; 6import UserStore from '../../stores/UserStore';
7import FeaturesStore from '../../stores/FeaturesStore';
7 8
8import { globalError as globalErrorPropType } from '../../prop-types'; 9import { globalError as globalErrorPropType } from '../../prop-types';
9 10
@@ -12,11 +13,27 @@ export default @inject('stores', 'actions') @observer class SignupScreen extends
12 error: globalErrorPropType.isRequired, 13 error: globalErrorPropType.isRequired,
13 }; 14 };
14 15
16 onSignup(values) {
17 const { actions, stores } = this.props;
18
19 const { canSkipTrial, defaultTrialPlan, pricingConfig } = stores.features.anonymousFeatures;
20
21 if (!canSkipTrial) {
22 Object.assign(values, {
23 plan: defaultTrialPlan,
24 currency: pricingConfig.currencyID,
25 });
26 }
27
28 actions.user.signup(values);
29 }
30
15 render() { 31 render() {
16 const { actions, stores, error } = this.props; 32 const { stores, error } = this.props;
33
17 return ( 34 return (
18 <Signup 35 <Signup
19 onSubmit={actions.user.signup} 36 onSubmit={values => this.onSignup(values)}
20 isSubmitting={stores.user.signupRequest.isExecuting} 37 isSubmitting={stores.user.signupRequest.isExecuting}
21 loginRoute={stores.user.loginRoute} 38 loginRoute={stores.user.loginRoute}
22 error={error} 39 error={error}
@@ -33,5 +50,6 @@ SignupScreen.wrappedComponent.propTypes = {
33 }).isRequired, 50 }).isRequired,
34 stores: PropTypes.shape({ 51 stores: PropTypes.shape({
35 user: PropTypes.instanceOf(UserStore).isRequired, 52 user: PropTypes.instanceOf(UserStore).isRequired,
53 features: PropTypes.instanceOf(FeaturesStore).isRequired,
36 }).isRequired, 54 }).isRequired,
37}; 55};
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json
index cd876c0ea..e46c69d67 100644
--- a/src/i18n/locales/defaultMessages.json
+++ b/src/i18n/locales/defaultMessages.json
@@ -417,133 +417,185 @@
417 { 417 {
418 "descriptors": [ 418 "descriptors": [
419 { 419 {
420 "defaultMessage": "!!!Franz Professional", 420 "defaultMessage": "!!!Hi {name}, welcome to Franz",
421 "end": { 421 "end": {
422 "column": 3, 422 "column": 3,
423 "line": 18 423 "line": 18
424 }, 424 },
425 "file": "src/components/auth/Pricing.js", 425 "file": "src/components/auth/Pricing.js",
426 "id": "pricing.trial.headline", 426 "id": "pricing.trial.headline.pro",
427 "start": { 427 "start": {
428 "column": 12, 428 "column": 12,
429 "line": 15 429 "line": 15
430 } 430 }
431 }, 431 },
432 { 432 {
433 "defaultMessage": "!!!Here's a special welcome for you:", 433 "defaultMessage": "!!!We have a special treat for you.",
434 "end": { 434 "end": {
435 "column": 3, 435 "column": 3,
436 "line": 22 436 "line": 22
437 }, 437 },
438 "file": "src/components/auth/Pricing.js", 438 "file": "src/components/auth/Pricing.js",
439 "id": "pricing.trial.intro.specialTreat",
440 "start": {
441 "column": 16,
442 "line": 19
443 }
444 },
445 {
446 "defaultMessage": "!!!Try out the full Franz Professional experience completely free for 14 days.",
447 "end": {
448 "column": 3,
449 "line": 26
450 },
451 "file": "src/components/auth/Pricing.js",
452 "id": "pricing.trial.intro.tryPro",
453 "start": {
454 "column": 10,
455 "line": 23
456 }
457 },
458 {
459 "defaultMessage": "!!!Happy messaging,",
460 "end": {
461 "column": 3,
462 "line": 30
463 },
464 "file": "src/components/auth/Pricing.js",
465 "id": "pricing.trial.intro.happyMessaging",
466 "start": {
467 "column": 18,
468 "line": 27
469 }
470 },
471 {
472 "defaultMessage": "!!!Here's a special welcome for you:",
473 "end": {
474 "column": 3,
475 "line": 34
476 },
477 "file": "src/components/auth/Pricing.js",
439 "id": "pricing.trial.subheadline", 478 "id": "pricing.trial.subheadline",
440 "start": { 479 "start": {
441 "column": 17, 480 "column": 17,
442 "line": 19 481 "line": 31
443 } 482 }
444 }, 483 },
445 { 484 {
446 "defaultMessage": "!!!No strings attached", 485 "defaultMessage": "!!!No strings attached",
447 "end": { 486 "end": {
448 "column": 3, 487 "column": 3,
449 "line": 26 488 "line": 38
450 }, 489 },
451 "file": "src/components/auth/Pricing.js", 490 "file": "src/components/auth/Pricing.js",
452 "id": "pricing.trial.terms.headline", 491 "id": "pricing.trial.terms.headline",
453 "start": { 492 "start": {
454 "column": 29, 493 "column": 29,
455 "line": 23 494 "line": 35
456 } 495 }
457 }, 496 },
458 { 497 {
459 "defaultMessage": "!!!No credit card required", 498 "defaultMessage": "!!!No credit card required",
460 "end": { 499 "end": {
461 "column": 3, 500 "column": 3,
462 "line": 30 501 "line": 42
463 }, 502 },
464 "file": "src/components/auth/Pricing.js", 503 "file": "src/components/auth/Pricing.js",
465 "id": "pricing.trial.terms.noCreditCard", 504 "id": "pricing.trial.terms.noCreditCard",
466 "start": { 505 "start": {
467 "column": 16, 506 "column": 16,
468 "line": 27 507 "line": 39
469 } 508 }
470 }, 509 },
471 { 510 {
472 "defaultMessage": "!!!Your free trial ends automatically after 14 days", 511 "defaultMessage": "!!!Your free trial ends automatically after 14 days",
473 "end": { 512 "end": {
474 "column": 3, 513 "column": 3,
475 "line": 34 514 "line": 46
476 }, 515 },
477 "file": "src/components/auth/Pricing.js", 516 "file": "src/components/auth/Pricing.js",
478 "id": "pricing.trial.terms.automaticTrialEnd", 517 "id": "pricing.trial.terms.automaticTrialEnd",
479 "start": { 518 "start": {
480 "column": 21, 519 "column": 21,
481 "line": 31 520 "line": 43
482 } 521 }
483 }, 522 },
484 { 523 {
485 "defaultMessage": "!!!Free trial (normally {currency}{price} per month)", 524 "defaultMessage": "!!!Free trial (normally {currency}{price} per month)",
486 "end": { 525 "end": {
487 "column": 3, 526 "column": 3,
488 "line": 38 527 "line": 50
489 }, 528 },
490 "file": "src/components/auth/Pricing.js", 529 "file": "src/components/auth/Pricing.js",
491 "id": "pricing.trial.terms.trialWorth", 530 "id": "pricing.trial.terms.trialWorth",
492 "start": { 531 "start": {
493 "column": 14, 532 "column": 14,
494 "line": 35 533 "line": 47
495 } 534 }
496 }, 535 },
497 { 536 {
498 "defaultMessage": "!!!Sorry, we could not activate your trial!", 537 "defaultMessage": "!!!Sorry, we could not activate your trial!",
499 "end": { 538 "end": {
500 "column": 3, 539 "column": 3,
501 "line": 42 540 "line": 54
502 }, 541 },
503 "file": "src/components/auth/Pricing.js", 542 "file": "src/components/auth/Pricing.js",
504 "id": "pricing.trial.error", 543 "id": "pricing.trial.error",
505 "start": { 544 "start": {
506 "column": 19, 545 "column": 19,
507 "line": 39 546 "line": 51
508 } 547 }
509 }, 548 },
510 { 549 {
511 "defaultMessage": "!!!Start my 14-day Franz Professional Trial", 550 "defaultMessage": "!!!Start my 14-day Franz Professional Trial",
512 "end": { 551 "end": {
513 "column": 3, 552 "column": 3,
514 "line": 46 553 "line": 58
515 }, 554 },
516 "file": "src/components/auth/Pricing.js", 555 "file": "src/components/auth/Pricing.js",
517 "id": "pricing.trial.cta.accept", 556 "id": "pricing.trial.cta.accept",
518 "start": { 557 "start": {
519 "column": 13, 558 "column": 13,
520 "line": 43 559 "line": 55
560 }
561 },
562 {
563 "defaultMessage": "!!!Start using Franz",
564 "end": {
565 "column": 3,
566 "line": 62
567 },
568 "file": "src/components/auth/Pricing.js",
569 "id": "pricing.trial.cta.start",
570 "start": {
571 "column": 12,
572 "line": 59
521 } 573 }
522 }, 574 },
523 { 575 {
524 "defaultMessage": "!!!Continue to Franz", 576 "defaultMessage": "!!!Continue to Franz",
525 "end": { 577 "end": {
526 "column": 3, 578 "column": 3,
527 "line": 50 579 "line": 66
528 }, 580 },
529 "file": "src/components/auth/Pricing.js", 581 "file": "src/components/auth/Pricing.js",
530 "id": "pricing.trial.cta.skip", 582 "id": "pricing.trial.cta.skip",
531 "start": { 583 "start": {
532 "column": 11, 584 "column": 11,
533 "line": 47 585 "line": 63
534 } 586 }
535 }, 587 },
536 { 588 {
537 "defaultMessage": "!!!Franz Professional includes:", 589 "defaultMessage": "!!!Franz Professional includes:",
538 "end": { 590 "end": {
539 "column": 3, 591 "column": 3,
540 "line": 54 592 "line": 70
541 }, 593 },
542 "file": "src/components/auth/Pricing.js", 594 "file": "src/components/auth/Pricing.js",
543 "id": "pricing.trial.features.headline", 595 "id": "pricing.trial.features.headline",
544 "start": { 596 "start": {
545 "column": 20, 597 "column": 20,
546 "line": 51 598 "line": 67
547 } 599 }
548 } 600 }
549 ], 601 ],
@@ -3956,7 +4008,7 @@
3956 { 4008 {
3957 "descriptors": [ 4009 "descriptors": [
3958 { 4010 {
3959 "defaultMessage": "!!!Welcome back, {name}", 4011 "defaultMessage": "!!!Are you ready to choose, {name}",
3960 "end": { 4012 "end": {
3961 "column": 3, 4013 "column": 3,
3962 "line": 20 4014 "line": 20
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index 8af42554b..6b0aebb13 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -170,9 +170,13 @@
170 "pricing.plan.pro-yearly": "Professional Yearly", 170 "pricing.plan.pro-yearly": "Professional Yearly",
171 "pricing.trial.cta.accept": "Start my 14-day Franz Professional Trial ", 171 "pricing.trial.cta.accept": "Start my 14-day Franz Professional Trial ",
172 "pricing.trial.cta.skip": "Continue to Franz", 172 "pricing.trial.cta.skip": "Continue to Franz",
173 "pricing.trial.cta.start": "Start using Franz",
173 "pricing.trial.error": "Sorry, we could not activate your trial!", 174 "pricing.trial.error": "Sorry, we could not activate your trial!",
174 "pricing.trial.features.headline": "Franz Professional includes:", 175 "pricing.trial.features.headline": "Franz Professional includes:",
175 "pricing.trial.headline": "Franz Professional", 176 "pricing.trial.headline.pro": "Hi {name}, welcome to Franz",
177 "pricing.trial.intro.happyMessaging": "Happy messaging,",
178 "pricing.trial.intro.specialTreat": "We have a special treat for you.",
179 "pricing.trial.intro.tryPro": "Enjoy the full Franz Professional experience completely free for 14 days.",
176 "pricing.trial.subheadline": "Here's a special welcome for you:", 180 "pricing.trial.subheadline": "Here's a special welcome for you:",
177 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", 181 "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days",
178 "pricing.trial.terms.headline": "No strings attached", 182 "pricing.trial.terms.headline": "No strings attached",
diff --git a/src/i18n/messages/src/components/auth/Pricing.json b/src/i18n/messages/src/components/auth/Pricing.json
index 3f0cf4e86..6db39148c 100644
--- a/src/i18n/messages/src/components/auth/Pricing.json
+++ b/src/i18n/messages/src/components/auth/Pricing.json
@@ -1,7 +1,7 @@
1[ 1[
2 { 2 {
3 "id": "pricing.trial.headline", 3 "id": "pricing.trial.headline.pro",
4 "defaultMessage": "!!!Franz Professional", 4 "defaultMessage": "!!!Hi {name}, welcome to Franz",
5 "file": "src/components/auth/Pricing.js", 5 "file": "src/components/auth/Pricing.js",
6 "start": { 6 "start": {
7 "line": 15, 7 "line": 15,
@@ -13,12 +13,12 @@
13 } 13 }
14 }, 14 },
15 { 15 {
16 "id": "pricing.trial.subheadline", 16 "id": "pricing.trial.intro.specialTreat",
17 "defaultMessage": "!!!Here's a special welcome for you:", 17 "defaultMessage": "!!!We have a special treat for you.",
18 "file": "src/components/auth/Pricing.js", 18 "file": "src/components/auth/Pricing.js",
19 "start": { 19 "start": {
20 "line": 19, 20 "line": 19,
21 "column": 17 21 "column": 16
22 }, 22 },
23 "end": { 23 "end": {
24 "line": 22, 24 "line": 22,
@@ -26,15 +26,41 @@
26 } 26 }
27 }, 27 },
28 { 28 {
29 "id": "pricing.trial.intro.tryPro",
30 "defaultMessage": "!!!Enjoy the full Franz Professional experience completely free for 14 days.",
31 "file": "src/components/auth/Pricing.js",
32 "start": {
33 "line": 23,
34 "column": 10
35 },
36 "end": {
37 "line": 26,
38 "column": 3
39 }
40 },
41 {
42 "id": "pricing.trial.intro.happyMessaging",
43 "defaultMessage": "!!!Happy messaging,",
44 "file": "src/components/auth/Pricing.js",
45 "start": {
46 "line": 27,
47 "column": 18
48 },
49 "end": {
50 "line": 30,
51 "column": 3
52 }
53 },
54 {
29 "id": "pricing.trial.terms.headline", 55 "id": "pricing.trial.terms.headline",
30 "defaultMessage": "!!!No strings attached", 56 "defaultMessage": "!!!No strings attached",
31 "file": "src/components/auth/Pricing.js", 57 "file": "src/components/auth/Pricing.js",
32 "start": { 58 "start": {
33 "line": 23, 59 "line": 31,
34 "column": 29 60 "column": 29
35 }, 61 },
36 "end": { 62 "end": {
37 "line": 26, 63 "line": 34,
38 "column": 3 64 "column": 3
39 } 65 }
40 }, 66 },
@@ -43,11 +69,11 @@
43 "defaultMessage": "!!!No credit card required", 69 "defaultMessage": "!!!No credit card required",
44 "file": "src/components/auth/Pricing.js", 70 "file": "src/components/auth/Pricing.js",
45 "start": { 71 "start": {
46 "line": 27, 72 "line": 35,
47 "column": 16 73 "column": 16
48 }, 74 },
49 "end": { 75 "end": {
50 "line": 30, 76 "line": 38,
51 "column": 3 77 "column": 3
52 } 78 }
53 }, 79 },
@@ -56,11 +82,11 @@
56 "defaultMessage": "!!!Your free trial ends automatically after 14 days", 82 "defaultMessage": "!!!Your free trial ends automatically after 14 days",
57 "file": "src/components/auth/Pricing.js", 83 "file": "src/components/auth/Pricing.js",
58 "start": { 84 "start": {
59 "line": 31, 85 "line": 39,
60 "column": 21 86 "column": 21
61 }, 87 },
62 "end": { 88 "end": {
63 "line": 34, 89 "line": 42,
64 "column": 3 90 "column": 3
65 } 91 }
66 }, 92 },
@@ -69,11 +95,11 @@
69 "defaultMessage": "!!!Free trial (normally {currency}{price} per month)", 95 "defaultMessage": "!!!Free trial (normally {currency}{price} per month)",
70 "file": "src/components/auth/Pricing.js", 96 "file": "src/components/auth/Pricing.js",
71 "start": { 97 "start": {
72 "line": 35, 98 "line": 43,
73 "column": 14 99 "column": 14
74 }, 100 },
75 "end": { 101 "end": {
76 "line": 38, 102 "line": 46,
77 "column": 3 103 "column": 3
78 } 104 }
79 }, 105 },
@@ -82,11 +108,11 @@
82 "defaultMessage": "!!!Sorry, we could not activate your trial!", 108 "defaultMessage": "!!!Sorry, we could not activate your trial!",
83 "file": "src/components/auth/Pricing.js", 109 "file": "src/components/auth/Pricing.js",
84 "start": { 110 "start": {
85 "line": 39, 111 "line": 47,
86 "column": 19 112 "column": 19
87 }, 113 },
88 "end": { 114 "end": {
89 "line": 42, 115 "line": 50,
90 "column": 3 116 "column": 3
91 } 117 }
92 }, 118 },
@@ -95,11 +121,24 @@
95 "defaultMessage": "!!!Start my 14-day Franz Professional Trial", 121 "defaultMessage": "!!!Start my 14-day Franz Professional Trial",
96 "file": "src/components/auth/Pricing.js", 122 "file": "src/components/auth/Pricing.js",
97 "start": { 123 "start": {
98 "line": 43, 124 "line": 51,
99 "column": 13 125 "column": 13
100 }, 126 },
101 "end": { 127 "end": {
102 "line": 46, 128 "line": 54,
129 "column": 3
130 }
131 },
132 {
133 "id": "pricing.trial.cta.start",
134 "defaultMessage": "!!!Start using Franz",
135 "file": "src/components/auth/Pricing.js",
136 "start": {
137 "line": 55,
138 "column": 12
139 },
140 "end": {
141 "line": 58,
103 "column": 3 142 "column": 3
104 } 143 }
105 }, 144 },
@@ -108,11 +147,11 @@
108 "defaultMessage": "!!!Continue to Franz", 147 "defaultMessage": "!!!Continue to Franz",
109 "file": "src/components/auth/Pricing.js", 148 "file": "src/components/auth/Pricing.js",
110 "start": { 149 "start": {
111 "line": 47, 150 "line": 59,
112 "column": 11 151 "column": 11
113 }, 152 },
114 "end": { 153 "end": {
115 "line": 50, 154 "line": 62,
116 "column": 3 155 "column": 3
117 } 156 }
118 }, 157 },
@@ -121,11 +160,11 @@
121 "defaultMessage": "!!!Franz Professional includes:", 160 "defaultMessage": "!!!Franz Professional includes:",
122 "file": "src/components/auth/Pricing.js", 161 "file": "src/components/auth/Pricing.js",
123 "start": { 162 "start": {
124 "line": 51, 163 "line": 63,
125 "column": 20 164 "column": 20
126 }, 165 },
127 "end": { 166 "end": {
128 "line": 54, 167 "line": 66,
129 "column": 3 168 "column": 3
130 } 169 }
131 } 170 }
diff --git a/src/stores/FeaturesStore.js b/src/stores/FeaturesStore.js
index 5d379fd3e..adbd401b4 100644
--- a/src/stores/FeaturesStore.js
+++ b/src/stores/FeaturesStore.js
@@ -67,6 +67,7 @@ export default class FeaturesStore extends Store {
67 if (this.stores.user.isLoggedIn) { 67 if (this.stores.user.isLoggedIn) {
68 this.featuresRequest.invalidate({ immediately: true }); 68 this.featuresRequest.invalidate({ immediately: true });
69 } else { 69 } else {
70 this.defaultFeaturesRequest.execute();
70 this.defaultFeaturesRequest.invalidate({ immediately: true }); 71 this.defaultFeaturesRequest.invalidate({ immediately: true });
71 } 72 }
72 } 73 }
diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js
index 735e8f886..297ea1121 100644
--- a/src/stores/UserStore.js
+++ b/src/stores/UserStore.js
@@ -205,7 +205,7 @@ export default class UserStore extends Store {
205 } 205 }
206 206
207 @action async _signup({ 207 @action async _signup({
208 firstname, lastname, email, password, accountType, company, 208 firstname, lastname, email, password, accountType, company, plan, currency,
209 }) { 209 }) {
210 const authToken = await this.signupRequest.execute({ 210 const authToken = await this.signupRequest.execute({
211 firstname, 211 firstname,
@@ -215,6 +215,8 @@ export default class UserStore extends Store {
215 accountType, 215 accountType,
216 company, 216 company,
217 locale: this.stores.app.locale, 217 locale: this.stores.app.locale,
218 plan,
219 currency,
218 }); 220 });
219 221
220 this.hasCompletedSignup = false; 222 this.hasCompletedSignup = false;