diff options
Diffstat (limited to 'src/components/services/content/Services.js')
-rw-r--r-- | src/components/services/content/Services.js | 55 |
1 files changed, 49 insertions, 6 deletions
diff --git a/src/components/services/content/Services.js b/src/components/services/content/Services.js index b6291666b..80f17d8f2 100644 --- a/src/components/services/content/Services.js +++ b/src/components/services/content/Services.js | |||
@@ -1,6 +1,6 @@ | |||
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, PropTypes as MobxPropTypes } from 'mobx-react'; | 3 | import { observer, PropTypes as MobxPropTypes, inject } from 'mobx-react'; |
4 | import { Link } from 'react-router'; | 4 | import { Link } from 'react-router'; |
5 | import { defineMessages, intlShape } from 'react-intl'; | 5 | import { defineMessages, intlShape } from 'react-intl'; |
6 | import Confetti from 'react-confetti'; | 6 | import Confetti from 'react-confetti'; |
@@ -9,16 +9,29 @@ import injectSheet from 'react-jss'; | |||
9 | 9 | ||
10 | import ServiceView from './ServiceView'; | 10 | import ServiceView from './ServiceView'; |
11 | import Appear from '../../ui/effects/Appear'; | 11 | import Appear from '../../ui/effects/Appear'; |
12 | import serverlessLogin from '../../../helpers/serverless-helpers'; | ||
12 | 13 | ||
13 | const messages = defineMessages({ | 14 | const messages = defineMessages({ |
14 | welcome: { | 15 | welcome: { |
15 | id: 'services.welcome', | 16 | id: 'services.welcome', |
16 | defaultMessage: '!!!Welcome to Franz', | 17 | defaultMessage: '!!!Welcome to Ferdi', |
17 | }, | 18 | }, |
18 | getStarted: { | 19 | getStarted: { |
19 | id: 'services.getStarted', | 20 | id: 'services.getStarted', |
20 | defaultMessage: '!!!Get started', | 21 | defaultMessage: '!!!Get started', |
21 | }, | 22 | }, |
23 | login: { | ||
24 | id: 'services.login', | ||
25 | defaultMessage: '!!!Please login to use Ferdi.', | ||
26 | }, | ||
27 | serverless: { | ||
28 | id: 'services.serverless', | ||
29 | defaultMessage: '!!!Use Ferdi without an Account', | ||
30 | }, | ||
31 | serverInfo: { | ||
32 | id: 'services.serverInfo', | ||
33 | defaultMessage: '!!!Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.', | ||
34 | }, | ||
22 | }); | 35 | }); |
23 | 36 | ||
24 | 37 | ||
@@ -31,7 +44,7 @@ const styles = { | |||
31 | }, | 44 | }, |
32 | }; | 45 | }; |
33 | 46 | ||
34 | export default @observer @injectSheet(styles) class Services extends Component { | 47 | export default @injectSheet(styles) @inject('actions') @observer class Services extends Component { |
35 | static propTypes = { | 48 | static propTypes = { |
36 | services: MobxPropTypes.arrayOrObservableArray, | 49 | services: MobxPropTypes.arrayOrObservableArray, |
37 | setWebviewReference: PropTypes.func.isRequired, | 50 | setWebviewReference: PropTypes.func.isRequired, |
@@ -44,6 +57,7 @@ export default @observer @injectSheet(styles) class Services extends Component { | |||
44 | userHasCompletedSignup: PropTypes.bool.isRequired, | 57 | userHasCompletedSignup: PropTypes.bool.isRequired, |
45 | hasActivatedTrial: PropTypes.bool.isRequired, | 58 | hasActivatedTrial: PropTypes.bool.isRequired, |
46 | classes: PropTypes.object.isRequired, | 59 | classes: PropTypes.object.isRequired, |
60 | actions: PropTypes.object.isRequired, | ||
47 | }; | 61 | }; |
48 | 62 | ||
49 | static defaultProps = { | 63 | static defaultProps = { |
@@ -60,6 +74,12 @@ export default @observer @injectSheet(styles) class Services extends Component { | |||
60 | 74 | ||
61 | _confettiTimeout = null; | 75 | _confettiTimeout = null; |
62 | 76 | ||
77 | constructor(props) { | ||
78 | super(props); | ||
79 | |||
80 | this.useLocalServer = this.useLocalServer.bind(this); | ||
81 | } | ||
82 | |||
63 | componentDidMount() { | 83 | componentDidMount() { |
64 | this._confettiTimeout = window.setTimeout(() => { | 84 | this._confettiTimeout = window.setTimeout(() => { |
65 | this.setState({ | 85 | this.setState({ |
@@ -74,6 +94,10 @@ export default @observer @injectSheet(styles) class Services extends Component { | |||
74 | } | 94 | } |
75 | } | 95 | } |
76 | 96 | ||
97 | useLocalServer() { | ||
98 | serverlessLogin(this.props.actions); | ||
99 | } | ||
100 | |||
77 | render() { | 101 | render() { |
78 | const { | 102 | const { |
79 | services, | 103 | services, |
@@ -94,6 +118,7 @@ export default @observer @injectSheet(styles) class Services extends Component { | |||
94 | } = this.state; | 118 | } = this.state; |
95 | 119 | ||
96 | const { intl } = this.context; | 120 | const { intl } = this.context; |
121 | const isLoggedIn = Boolean(localStorage.getItem('authToken')); | ||
97 | 122 | ||
98 | return ( | 123 | return ( |
99 | <div className="services"> | 124 | <div className="services"> |
@@ -112,15 +137,33 @@ export default @observer @injectSheet(styles) class Services extends Component { | |||
112 | transitionName="slideUp" | 137 | transitionName="slideUp" |
113 | > | 138 | > |
114 | <div className="services__no-service"> | 139 | <div className="services__no-service"> |
115 | <img src="./assets/images/logo.svg" alt="" /> | 140 | <img src="./assets/images/logo.svg" alt="Logo" style={{ maxHeight: '50vh' }} /> |
116 | <h1>{intl.formatMessage(messages.welcome)}</h1> | 141 | <h1>{intl.formatMessage(messages.welcome)}</h1> |
142 | { !isLoggedIn && ( | ||
143 | <> | ||
144 | <p>{intl.formatMessage(messages.login)}</p> | ||
145 | <p>{intl.formatMessage(messages.serverInfo)}</p> | ||
146 | </> | ||
147 | ) } | ||
117 | <Appear | 148 | <Appear |
118 | timeout={300} | 149 | timeout={300} |
119 | transitionName="slideUp" | 150 | transitionName="slideUp" |
120 | > | 151 | > |
121 | <Link to="/settings/recipes" className="button"> | 152 | <Link to={isLoggedIn ? '/settings/services' : '/auth/welcome'} className="button"> |
122 | {intl.formatMessage(messages.getStarted)} | 153 | { isLoggedIn ? intl.formatMessage(messages.getStarted) : 'Login' } |
123 | </Link> | 154 | </Link> |
155 | {!isLoggedIn && ( | ||
156 | <button | ||
157 | type="button" | ||
158 | className="button" | ||
159 | style={{ | ||
160 | marginLeft: 10, | ||
161 | }} | ||
162 | onClick={this.useLocalServer} | ||
163 | > | ||
164 | {intl.formatMessage(messages.serverless)} | ||
165 | </button> | ||
166 | )} | ||
124 | </Appear> | 167 | </Appear> |
125 | </div> | 168 | </div> |
126 | </Appear> | 169 | </Appear> |