diff options
author | 2022-10-28 07:37:55 +0530 | |
---|---|---|
committer | 2022-10-28 02:07:55 +0000 | |
commit | d95573393206bc3931202d363bfb6c54974e0203 (patch) | |
tree | bd1428342f8d6124f747612a3711546a972108eb /src/components/auth | |
parent | 6.2.1-nightly.31 [skip ci] (diff) | |
download | ferdium-app-d95573393206bc3931202d363bfb6c54974e0203.tar.gz ferdium-app-d95573393206bc3931202d363bfb6c54974e0203.tar.zst ferdium-app-d95573393206bc3931202d363bfb6c54974e0203.zip |
Transform welcome component tree to TS (#715)v6.2.1-nightly.31
Diffstat (limited to 'src/components/auth')
-rw-r--r-- | src/components/auth/Welcome.tsx (renamed from src/components/auth/Welcome.jsx) | 61 |
1 files changed, 35 insertions, 26 deletions
diff --git a/src/components/auth/Welcome.jsx b/src/components/auth/Welcome.tsx index 9e5d10126..1aa8da4d6 100644 --- a/src/components/auth/Welcome.jsx +++ b/src/components/auth/Welcome.tsx | |||
@@ -1,14 +1,14 @@ | |||
1 | /* eslint jsx-a11y/anchor-is-valid: 0 */ | 1 | import { Component, ReactElement } from 'react'; |
2 | import { Component } from 'react'; | 2 | import { observer, inject } from 'mobx-react'; |
3 | import PropTypes from 'prop-types'; | 3 | import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl'; |
4 | import { observer, PropTypes as MobxPropTypes, inject } from 'mobx-react'; | 4 | import { noop } from 'lodash'; |
5 | import { defineMessages, injectIntl } from 'react-intl'; | ||
6 | import serverlessLogin from '../../helpers/serverless-helpers'; | 5 | import serverlessLogin from '../../helpers/serverless-helpers'; |
7 | import shuffleArray from '../../helpers/array-helpers'; | 6 | import shuffleArray from '../../helpers/array-helpers'; |
8 | import { serverName } from '../../api/apiBase'; | 7 | import { serverName } from '../../api/apiBase'; |
9 | |||
10 | import Link from '../ui/Link'; | 8 | import Link from '../ui/Link'; |
11 | import { H1 } from '../ui/headline'; | 9 | import { H1 } from '../ui/headline'; |
10 | import { StoresProps } from '../../@types/ferdium-components.types'; | ||
11 | import RecipePreview from '../../models/RecipePreview'; | ||
12 | 12 | ||
13 | const messages = defineMessages({ | 13 | const messages = defineMessages({ |
14 | signupButton: { | 14 | signupButton: { |
@@ -34,24 +34,28 @@ const messages = defineMessages({ | |||
34 | }, | 34 | }, |
35 | }); | 35 | }); |
36 | 36 | ||
37 | class Welcome extends Component { | 37 | interface IProps extends Partial<StoresProps>, WrappedComponentProps { |
38 | static propTypes = { | 38 | loginRoute: string; |
39 | loginRoute: PropTypes.string.isRequired, | 39 | signupRoute: string; |
40 | signupRoute: PropTypes.string.isRequired, | 40 | changeServerRoute: string; |
41 | changeServerRoute: PropTypes.string.isRequired, | 41 | recipes: RecipePreview[]; |
42 | recipes: MobxPropTypes.arrayOrObservableArray.isRequired, | 42 | } |
43 | actions: PropTypes.object.isRequired, | ||
44 | }; | ||
45 | 43 | ||
46 | useLocalServer() { | 44 | @inject('actions') |
45 | @observer | ||
46 | class Welcome extends Component<IProps> { | ||
47 | constructor(props: IProps) { | ||
48 | super(props); | ||
49 | } | ||
50 | |||
51 | useLocalServer(): void { | ||
47 | serverlessLogin(this.props.actions); | 52 | serverlessLogin(this.props.actions); |
48 | } | 53 | } |
49 | 54 | ||
50 | render() { | 55 | render(): ReactElement { |
51 | const { intl } = this.props; | 56 | const { loginRoute, signupRoute, changeServerRoute, intl } = this.props; |
52 | const { loginRoute, signupRoute, changeServerRoute } = this.props; | ||
53 | let { recipes } = this.props; | 57 | let { recipes } = this.props; |
54 | recipes = shuffleArray(recipes); | 58 | recipes = shuffleArray<RecipePreview>(recipes); |
55 | recipes.length = 8 * 2; | 59 | recipes.length = 8 * 2; |
56 | 60 | ||
57 | let serverNameParse = serverName(); | 61 | let serverNameParse = serverName(); |
@@ -87,17 +91,22 @@ class Welcome extends Component { | |||
87 | <span>{intl.formatMessage(messages.changeServer)}</span> | 91 | <span>{intl.formatMessage(messages.changeServer)}</span> |
88 | </Link> | 92 | </Link> |
89 | </div> | 93 | </div> |
90 | <br /> | 94 | <hr |
91 | <hr /> | 95 | className="settings__hr-sections" |
92 | <br /> | 96 | style={{ marginTop: 24, marginBottom: 24, borderStyle: 'solid' }} |
93 | <a className="button" onClick={this.useLocalServer.bind(this)}> | 97 | /> |
98 | <button | ||
99 | className="button" | ||
100 | onClick={this.useLocalServer.bind(this)} | ||
101 | onKeyDown={noop} | ||
102 | > | ||
94 | {intl.formatMessage(messages.serverless)} | 103 | {intl.formatMessage(messages.serverless)} |
95 | </a> | 104 | </button> |
96 | </div> | 105 | </div> |
97 | <div className="welcome__featured-services"> | 106 | <div className="welcome__featured-services"> |
98 | {recipes.map(recipe => ( | 107 | {recipes.map(recipe => ( |
99 | <div key={recipe.id} className="welcome__featured-service"> | 108 | <div key={recipe.id} className="welcome__featured-service"> |
100 | <img key={recipe.id} src={recipe.icons.svg} alt="" /> | 109 | <img key={recipe.id} src={recipe.icons?.svg} alt="" /> |
101 | </div> | 110 | </div> |
102 | ))} | 111 | ))} |
103 | </div> | 112 | </div> |
@@ -106,4 +115,4 @@ class Welcome extends Component { | |||
106 | } | 115 | } |
107 | } | 116 | } |
108 | 117 | ||
109 | export default injectIntl(inject('actions')(observer(Welcome))); | 118 | export default injectIntl(Welcome); |