aboutsummaryrefslogtreecommitdiffstats
path: root/src/containers
diff options
context:
space:
mode:
authorLibravatar Ricardo Cino <ricardo@cino.io>2022-06-26 23:59:32 +0200
committerLibravatar GitHub <noreply@github.com>2022-06-26 21:59:32 +0000
commit6bff2bb5439d25e0ab2a24a8ca1b28b89ef40ff9 (patch)
tree1676f5eef42b8086d28476c7eaad62c7b1753120 /src/containers
parentReduce tab item layout shift (#376) (diff)
downloadferdium-app-6bff2bb5439d25e0ab2a24a8ca1b28b89ef40ff9.tar.gz
ferdium-app-6bff2bb5439d25e0ab2a24a8ca1b28b89ef40ff9.tar.zst
ferdium-app-6bff2bb5439d25e0ab2a24a8ca1b28b89ef40ff9.zip
chore: turned all auth containers into typescript (#375)
Diffstat (limited to 'src/containers')
-rw-r--r--src/containers/auth/AuthLayoutContainer.tsx (renamed from src/containers/auth/AuthLayoutContainer.js)45
-rw-r--r--src/containers/auth/ChangeServerScreen.tsx (renamed from src/containers/auth/ChangeServerScreen.js)24
-rw-r--r--src/containers/auth/ImportScreen.tsx19
-rw-r--r--src/containers/auth/InviteScreen.js22
-rw-r--r--src/containers/auth/InviteScreen.tsx14
-rw-r--r--src/containers/auth/LockedScreen.tsx19
-rw-r--r--src/containers/auth/LoginScreen.tsx (renamed from src/containers/auth/LoginScreen.js)26
-rw-r--r--src/containers/auth/PasswordScreen.tsx17
-rw-r--r--src/containers/auth/SetupAssistantScreen.tsx27
-rw-r--r--src/containers/auth/SignupScreen.js46
-rw-r--r--src/containers/auth/SignupScreen.tsx32
-rw-r--r--src/containers/auth/WelcomeScreen.tsx16
12 files changed, 91 insertions, 216 deletions
diff --git a/src/containers/auth/AuthLayoutContainer.js b/src/containers/auth/AuthLayoutContainer.tsx
index e6d6dcf8a..8d65ec6f4 100644
--- a/src/containers/auth/AuthLayoutContainer.js
+++ b/src/containers/auth/AuthLayoutContainer.tsx
@@ -1,28 +1,19 @@
1import { Component } from 'react'; 1import { Component, ReactElement, ReactNode } from 'react';
2import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react'; 2import { inject, observer } from 'mobx-react';
4import { ThemeProvider } from 'react-jss'; 3import { ThemeProvider } from 'react-jss';
5 4
5import { DefaultProps } from 'src/@types/ferdium-components.types';
6import { Location } from 'mobx-react-router';
6import AuthLayout from '../../components/auth/AuthLayout'; 7import AuthLayout from '../../components/auth/AuthLayout';
7import AppStore from '../../stores/AppStore';
8import UserStore from '../../stores/UserStore';
9import GlobalErrorStore from '../../stores/GlobalErrorStore';
10import UIStore from '../../stores/UIStore';
11import SettingsStore from '../../stores/SettingsStore';
12import AppLoader from '../../components/ui/AppLoader'; 8import AppLoader from '../../components/ui/AppLoader';
13 9
14import { oneOrManyChildElements } from '../../prop-types'; 10interface AuthLayoutContainerProps extends DefaultProps {
15import FeaturesStore from '../../stores/FeaturesStore'; 11 location: Location;
16 12 children: ReactNode[] | ReactNode;
17class AuthLayoutContainer extends Component { 13}
18 static propTypes = {
19 children: oneOrManyChildElements.isRequired,
20 location: PropTypes.shape({
21 pathname: PropTypes.string.isRequired,
22 }).isRequired,
23 };
24 14
25 render() { 15class AuthLayoutContainer extends Component<AuthLayoutContainerProps> {
16 render(): ReactElement {
26 const { stores, actions, children, location } = this.props; 17 const { stores, actions, children, location } = this.props;
27 const { app, features, globalError, user } = stores; 18 const { app, features, globalError, user } = stores;
28 19
@@ -33,7 +24,7 @@ class AuthLayoutContainer extends Component {
33 if (isLoadingBaseFeatures) { 24 if (isLoadingBaseFeatures) {
34 return ( 25 return (
35 <ThemeProvider theme={stores.ui.theme}> 26 <ThemeProvider theme={stores.ui.theme}>
36 <AppLoader /> 27 <AppLoader theme={stores.ui.theme} />
37 </ThemeProvider> 28 </ThemeProvider>
38 ); 29 );
39 } 30 }
@@ -42,7 +33,7 @@ class AuthLayoutContainer extends Component {
42 if (isLoggingOut) { 33 if (isLoggingOut) {
43 return ( 34 return (
44 <ThemeProvider theme={stores.ui.theme}> 35 <ThemeProvider theme={stores.ui.theme}>
45 <AppLoader texts={['Logging you out...']} /> 36 <AppLoader theme={stores.ui.theme} texts={['Logging you out...']} />
46 </ThemeProvider> 37 </ThemeProvider>
47 ); 38 );
48 } 39 }
@@ -69,18 +60,4 @@ class AuthLayoutContainer extends Component {
69 } 60 }
70} 61}
71 62
72AuthLayoutContainer.propTypes = {
73 stores: PropTypes.shape({
74 app: PropTypes.instanceOf(AppStore).isRequired,
75 features: PropTypes.instanceOf(FeaturesStore).isRequired,
76 globalError: PropTypes.instanceOf(GlobalErrorStore).isRequired,
77 user: PropTypes.instanceOf(UserStore).isRequired,
78 ui: PropTypes.instanceOf(UIStore).isRequired,
79 }).isRequired,
80 actions: PropTypes.shape({
81 app: PropTypes.instanceOf(AppStore).isRequired,
82 settings: PropTypes.instanceOf(SettingsStore).isRequired,
83 }).isRequired,
84};
85
86export default inject('stores', 'actions')(observer(AuthLayoutContainer)); 63export default inject('stores', 'actions')(observer(AuthLayoutContainer));
diff --git a/src/containers/auth/ChangeServerScreen.js b/src/containers/auth/ChangeServerScreen.tsx
index 60bfde088..6af87e4a1 100644
--- a/src/containers/auth/ChangeServerScreen.js
+++ b/src/containers/auth/ChangeServerScreen.tsx
@@ -1,18 +1,16 @@
1import { Component } from 'react'; 1import { Component, ReactElement } from 'react';
2import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react'; 2import { inject, observer } from 'mobx-react';
4import { RouterStore } from 'mobx-react-router'; 3import { DefaultProps } from 'src/@types/ferdium-components.types';
5import ChangeServer from '../../components/auth/ChangeServer'; 4import ChangeServer from '../../components/auth/ChangeServer';
6import SettingsStore from '../../stores/SettingsStore';
7 5
8class ChangeServerScreen extends Component { 6class ChangeServerScreen extends Component<DefaultProps> {
9 constructor(props) { 7 constructor(props: DefaultProps) {
10 super(props); 8 super(props);
11 9
12 this.onSubmit = this.onSubmit.bind(this); 10 this.onSubmit = this.onSubmit.bind(this);
13 } 11 }
14 12
15 onSubmit(values) { 13 onSubmit(values: any): void {
16 const { server } = values; 14 const { server } = values;
17 15
18 this.props.actions.settings.update({ 16 this.props.actions.settings.update({
@@ -24,7 +22,7 @@ class ChangeServerScreen extends Component {
24 this.props.stores.router.push('/auth'); 22 this.props.stores.router.push('/auth');
25 } 23 }
26 24
27 render() { 25 render(): ReactElement {
28 const { stores } = this.props; 26 const { stores } = this.props;
29 const { server } = stores.settings.all.app; 27 const { server } = stores.settings.all.app;
30 28
@@ -32,14 +30,4 @@ class ChangeServerScreen extends Component {
32 } 30 }
33} 31}
34 32
35ChangeServerScreen.propTypes = {
36 actions: PropTypes.shape({
37 settings: PropTypes.instanceOf(SettingsStore).isRequired,
38 }).isRequired,
39 stores: PropTypes.shape({
40 settings: PropTypes.instanceOf(SettingsStore).isRequired,
41 router: PropTypes.instanceOf(RouterStore).isRequired,
42 }).isRequired,
43};
44
45export default inject('stores', 'actions')(observer(ChangeServerScreen)); 33export default inject('stores', 'actions')(observer(ChangeServerScreen));
diff --git a/src/containers/auth/ImportScreen.tsx b/src/containers/auth/ImportScreen.tsx
index 8d318cb2d..c128dec14 100644
--- a/src/containers/auth/ImportScreen.tsx
+++ b/src/containers/auth/ImportScreen.tsx
@@ -1,21 +1,10 @@
1import { Component } from 'react'; 1import { Component, ReactElement } from 'react';
2import { inject, observer } from 'mobx-react'; 2import { inject, observer } from 'mobx-react';
3import { RouterStore } from 'mobx-react-router'; 3import { DefaultProps } from 'src/@types/ferdium-components.types';
4import { UserStore } from 'src/stores.types';
5import Import from '../../components/auth/Import'; 4import Import from '../../components/auth/Import';
6 5
7interface IProps { 6class ImportScreen extends Component<DefaultProps> {
8 actions: { 7 render(): ReactElement {
9 user: UserStore;
10 };
11 stores: {
12 user: UserStore;
13 router: RouterStore;
14 };
15}
16
17class ImportScreen extends Component<IProps> {
18 render() {
19 const { actions, stores } = this.props; 8 const { actions, stores } = this.props;
20 9
21 if (stores.user.isImportLegacyServicesCompleted) { 10 if (stores.user.isImportLegacyServicesCompleted) {
diff --git a/src/containers/auth/InviteScreen.js b/src/containers/auth/InviteScreen.js
deleted file mode 100644
index fc66227cc..000000000
--- a/src/containers/auth/InviteScreen.js
+++ /dev/null
@@ -1,22 +0,0 @@
1import { Component } from 'react';
2import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react';
4import Invite from '../../components/auth/Invite';
5
6class InviteScreen extends Component {
7 render() {
8 const { actions } = this.props;
9
10 return <Invite onSubmit={actions.user.invite} embed={false} />;
11 }
12}
13
14InviteScreen.propTypes = {
15 actions: PropTypes.shape({
16 user: PropTypes.shape({
17 invite: PropTypes.func.isRequired,
18 }).isRequired,
19 }).isRequired,
20};
21
22export default inject('stores', 'actions')(observer(InviteScreen));
diff --git a/src/containers/auth/InviteScreen.tsx b/src/containers/auth/InviteScreen.tsx
new file mode 100644
index 000000000..a2c684f41
--- /dev/null
+++ b/src/containers/auth/InviteScreen.tsx
@@ -0,0 +1,14 @@
1import { Component, ReactElement } from 'react';
2import { inject, observer } from 'mobx-react';
3import { DefaultProps } from 'src/@types/ferdium-components.types';
4import Invite from '../../components/auth/Invite';
5
6class InviteScreen extends Component<DefaultProps> {
7 render(): ReactElement {
8 const { actions } = this.props;
9
10 return <Invite onSubmit={actions.user.invite} embed={false} />;
11 }
12}
13
14export default inject('stores', 'actions')(observer(InviteScreen));
diff --git a/src/containers/auth/LockedScreen.tsx b/src/containers/auth/LockedScreen.tsx
index 500bff0d6..8e3c1ec49 100644
--- a/src/containers/auth/LockedScreen.tsx
+++ b/src/containers/auth/LockedScreen.tsx
@@ -1,34 +1,23 @@
1import { Component, ReactElement } from 'react'; 1import { Component, ReactElement } from 'react';
2import { inject, observer } from 'mobx-react'; 2import { inject, observer } from 'mobx-react';
3import { SettingsStore } from 'src/stores.types'; 3import { DefaultProps } from 'src/@types/ferdium-components.types';
4import Locked from '../../components/auth/Locked'; 4import Locked from '../../components/auth/Locked';
5 5
6import { hash } from '../../helpers/password-helpers'; 6import { hash } from '../../helpers/password-helpers';
7import UserStore from '../../stores/UserStore';
8 7
9interface IProps { 8class LockedScreen extends Component<DefaultProps> {
10 actions: {
11 settings: SettingsStore;
12 };
13 stores: {
14 settings: SettingsStore;
15 user: UserStore;
16 };
17}
18
19class LockedScreen extends Component<IProps> {
20 state = { 9 state = {
21 error: false, 10 error: false,
22 }; 11 };
23 12
24 constructor(props) { 13 constructor(props: DefaultProps) {
25 super(props); 14 super(props);
26 15
27 this.onSubmit = this.onSubmit.bind(this); 16 this.onSubmit = this.onSubmit.bind(this);
28 this.unlock = this.unlock.bind(this); 17 this.unlock = this.unlock.bind(this);
29 } 18 }
30 19
31 onSubmit(values): void { 20 onSubmit(values: any): void {
32 const { password } = values; 21 const { password } = values;
33 22
34 let correctPassword = this.props.stores.settings.all.app.lockedPassword; 23 let correctPassword = this.props.stores.settings.all.app.lockedPassword;
diff --git a/src/containers/auth/LoginScreen.js b/src/containers/auth/LoginScreen.tsx
index f8351f458..4c5271fe1 100644
--- a/src/containers/auth/LoginScreen.js
+++ b/src/containers/auth/LoginScreen.tsx
@@ -1,17 +1,14 @@
1import { Component } from 'react'; 1import { Component, ReactElement } from 'react';
2import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react'; 2import { inject, observer } from 'mobx-react';
3import { DefaultProps, GlobalError } from 'src/@types/ferdium-components.types';
4import Login from '../../components/auth/Login'; 4import Login from '../../components/auth/Login';
5import UserStore from '../../stores/UserStore';
6 5
7import { globalError as globalErrorPropType } from '../../prop-types'; 6interface LoginScreenProps extends DefaultProps {
8 7 error: GlobalError;
9class LoginScreen extends Component { 8}
10 static propTypes = {
11 error: globalErrorPropType.isRequired,
12 };
13 9
14 render() { 10class LoginScreen extends Component<LoginScreenProps> {
11 render(): ReactElement {
15 const { actions, stores, error } = this.props; 12 const { actions, stores, error } = this.props;
16 return ( 13 return (
17 <Login 14 <Login
@@ -29,13 +26,4 @@ class LoginScreen extends Component {
29 } 26 }
30} 27}
31 28
32LoginScreen.propTypes = {
33 actions: PropTypes.shape({
34 user: PropTypes.instanceOf(UserStore).isRequired,
35 }).isRequired,
36 stores: PropTypes.shape({
37 user: PropTypes.instanceOf(UserStore).isRequired,
38 }).isRequired,
39};
40
41export default inject('stores', 'actions')(observer(LoginScreen)); 29export default inject('stores', 'actions')(observer(LoginScreen));
diff --git a/src/containers/auth/PasswordScreen.tsx b/src/containers/auth/PasswordScreen.tsx
index d88549712..3176e5a8b 100644
--- a/src/containers/auth/PasswordScreen.tsx
+++ b/src/containers/auth/PasswordScreen.tsx
@@ -1,19 +1,10 @@
1import { Component } from 'react'; 1import { Component, ReactElement } from 'react';
2import { inject, observer } from 'mobx-react'; 2import { inject, observer } from 'mobx-react';
3import { UserStore } from 'src/stores.types'; 3import { DefaultProps } from 'src/@types/ferdium-components.types';
4import Password from '../../components/auth/Password'; 4import Password from '../../components/auth/Password';
5 5
6interface IProps { 6class PasswordScreen extends Component<DefaultProps> {
7 actions: { 7 render(): ReactElement {
8 user: UserStore;
9 };
10 stores: {
11 user: UserStore;
12 };
13};
14
15class PasswordScreen extends Component<IProps> {
16 render() {
17 const { actions, stores } = this.props; 8 const { actions, stores } = this.props;
18 9
19 return ( 10 return (
diff --git a/src/containers/auth/SetupAssistantScreen.tsx b/src/containers/auth/SetupAssistantScreen.tsx
index 8f1871776..92f12c0bc 100644
--- a/src/containers/auth/SetupAssistantScreen.tsx
+++ b/src/containers/auth/SetupAssistantScreen.tsx
@@ -1,29 +1,12 @@
1/* eslint-disable no-await-in-loop */ 1/* eslint-disable no-await-in-loop */
2import { Component } from 'react'; 2import { Component, ReactElement } from 'react';
3import { inject, observer } from 'mobx-react'; 3import { inject, observer } from 'mobx-react';
4 4
5import { RouterStore } from 'mobx-react-router'; 5import { DefaultProps } from 'src/@types/ferdium-components.types';
6import { sleep } from '../../helpers/async-helpers'; 6import { sleep } from '../../helpers/async-helpers';
7import SetupAssistant from '../../components/auth/SetupAssistant'; 7import SetupAssistant from '../../components/auth/SetupAssistant';
8import ServicesStore from '../../stores/ServicesStore';
9import RecipesStore from '../../stores/RecipesStore';
10import UserStore from '../../stores/UserStore';
11 8
12interface IProps { 9class SetupAssistantScreen extends Component<DefaultProps> {
13 stores: {
14 services: ServicesStore;
15 router: RouterStore;
16 recipes?: RecipesStore;
17 user?: UserStore;
18 };
19 actions: {
20 user: UserStore;
21 service: ServicesStore;
22 recipe: RecipesStore;
23 };
24};
25
26class SetupAssistantScreen extends Component<IProps> {
27 state = { 10 state = {
28 isSettingUpServices: false, 11 isSettingUpServices: false,
29 }; 12 };
@@ -68,7 +51,7 @@ class SetupAssistantScreen extends Component<IProps> {
68 }, 51 },
69 }; 52 };
70 53
71 async setupServices(serviceConfig) { 54 async setupServices(serviceConfig: any): Promise<void> {
72 const { 55 const {
73 stores: { services, router }, 56 stores: { services, router },
74 } = this.props; 57 } = this.props;
@@ -103,7 +86,7 @@ class SetupAssistantScreen extends Component<IProps> {
103 router.push('/'); 86 router.push('/');
104 } 87 }
105 88
106 render() { 89 render(): ReactElement {
107 return ( 90 return (
108 <SetupAssistant 91 <SetupAssistant
109 onSubmit={config => this.setupServices(config)} 92 onSubmit={config => this.setupServices(config)}
diff --git a/src/containers/auth/SignupScreen.js b/src/containers/auth/SignupScreen.js
deleted file mode 100644
index 3824e47d5..000000000
--- a/src/containers/auth/SignupScreen.js
+++ /dev/null
@@ -1,46 +0,0 @@
1import { Component } from 'react';
2import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react';
4
5import Signup from '../../components/auth/Signup';
6import UserStore from '../../stores/UserStore';
7import FeaturesStore from '../../stores/FeaturesStore';
8
9import { globalError as globalErrorPropType } from '../../prop-types';
10
11class SignupScreen extends Component {
12 static propTypes = {
13 error: globalErrorPropType.isRequired,
14 };
15
16 onSignup(values) {
17 const { actions } = this.props;
18
19 actions.user.signup(values);
20 }
21
22 render() {
23 const { stores, error } = this.props;
24
25 return (
26 <Signup
27 onSubmit={values => this.onSignup(values)}
28 isSubmitting={stores.user.signupRequest.isExecuting}
29 loginRoute={stores.user.loginRoute}
30 error={error}
31 />
32 );
33 }
34}
35
36SignupScreen.propTypes = {
37 actions: PropTypes.shape({
38 user: PropTypes.instanceOf(UserStore).isRequired,
39 }).isRequired,
40 stores: PropTypes.shape({
41 user: PropTypes.instanceOf(UserStore).isRequired,
42 features: PropTypes.instanceOf(FeaturesStore).isRequired,
43 }).isRequired,
44};
45
46export default inject('stores', 'actions')(observer(SignupScreen));
diff --git a/src/containers/auth/SignupScreen.tsx b/src/containers/auth/SignupScreen.tsx
new file mode 100644
index 000000000..1dac392ef
--- /dev/null
+++ b/src/containers/auth/SignupScreen.tsx
@@ -0,0 +1,32 @@
1import { Component, ReactElement } from 'react';
2import { inject, observer } from 'mobx-react';
3
4import { DefaultProps, GlobalError } from 'src/@types/ferdium-components.types';
5import Signup from '../../components/auth/Signup';
6
7interface SignUpScreenComponents extends DefaultProps {
8 error: GlobalError;
9}
10
11class SignupScreen extends Component<SignUpScreenComponents> {
12 onSignup(values: any): void {
13 const { actions } = this.props;
14
15 actions.user.signup(values);
16 }
17
18 render(): ReactElement {
19 const { stores, error } = this.props;
20
21 return (
22 <Signup
23 onSubmit={values => this.onSignup(values)}
24 isSubmitting={stores.user.signupRequest.isExecuting}
25 loginRoute={stores.user.loginRoute}
26 error={error}
27 />
28 );
29 }
30}
31
32export default inject('stores', 'actions')(observer(SignupScreen));
diff --git a/src/containers/auth/WelcomeScreen.tsx b/src/containers/auth/WelcomeScreen.tsx
index 944d288ad..bbd73f4a2 100644
--- a/src/containers/auth/WelcomeScreen.tsx
+++ b/src/containers/auth/WelcomeScreen.tsx
@@ -1,19 +1,11 @@
1import { Component } from 'react'; 1import { Component, ReactElement } from 'react';
2import { inject, observer } from 'mobx-react'; 2import { inject, observer } from 'mobx-react';
3 3
4import { DefaultProps } from 'src/@types/ferdium-components.types';
4import Welcome from '../../components/auth/Welcome'; 5import Welcome from '../../components/auth/Welcome';
5import UserStore from '../../stores/UserStore';
6import RecipePreviewsStore from '../../stores/RecipePreviewsStore';
7 6
8interface IProps { 7class WelcomeScreen extends Component<DefaultProps> {
9 stores: { 8 render(): ReactElement {
10 user: UserStore,
11 recipePreviews: RecipePreviewsStore,
12 },
13};
14
15class WelcomeScreen extends Component<IProps> {
16 render() {
17 const { user, recipePreviews } = this.props.stores; 9 const { user, recipePreviews } = this.props.stores;
18 10
19 return ( 11 return (