From bbd7299ac324c93078dd77c0c33e3c1309480735 Mon Sep 17 00:00:00 2001 From: DKizilov Date: Thu, 5 Jul 2018 14:23:50 +0300 Subject: [PATCH 1/4] Task1 --- admin/src/components/admin/user.js | 28 ++++++++++++++++ admin/src/config.js | 8 ++--- admin/src/ducks/admin.js | 54 ++++++++++++++++++++++++++++++ admin/src/redux/reducer.js | 4 ++- admin/src/routes/admin.js | 26 ++++++++++++-- 5 files changed, 113 insertions(+), 7 deletions(-) create mode 100644 admin/src/components/admin/user.js create mode 100644 admin/src/ducks/admin.js diff --git a/admin/src/components/admin/user.js b/admin/src/components/admin/user.js new file mode 100644 index 0000000..8e170e7 --- /dev/null +++ b/admin/src/components/admin/user.js @@ -0,0 +1,28 @@ +import React, { Component } from 'react' +import { reduxForm, Field } from 'redux-form' + +class UserForm extends Component { + render() { + return ( +
+

New User

+
+
+ First name: +
+
+ Last name: +
+
+ email: +
+ +
+
+ ) + } +} + +export default reduxForm({ + form: 'user' +})(UserForm) diff --git a/admin/src/config.js b/admin/src/config.js index baf47b0..aa9081b 100644 --- a/admin/src/config.js +++ b/admin/src/config.js @@ -1,15 +1,15 @@ import { initializeApp } from 'firebase/app' import 'firebase/auth' -export const appName = 'adv-react-25-06' +export const appName = 'adv-react-25-06-ff530' const config = { - apiKey: 'AIzaSyDzqwnZ_39QyqhxYZVPjVH8eBww7DUBmVc', + apiKey: 'AIzaSyAMDBrCJU6lXvZeDVzNtOlWWzhqiuJQVS0', authDomain: `${appName}.firebaseapp.com`, databaseURL: `https://${appName}.firebaseio.com`, projectId: appName, - storageBucket: '', - messagingSenderId: '874599443389' + storageBucket: `${appName}.appspot.com`, + messagingSenderId: '837192963884' } initializeApp(config) diff --git a/admin/src/ducks/admin.js b/admin/src/ducks/admin.js new file mode 100644 index 0000000..49ef03c --- /dev/null +++ b/admin/src/ducks/admin.js @@ -0,0 +1,54 @@ +import { appName } from '../config' +import { Record } from 'immutable' +import firebase from 'firebase/app' + +/** + * Constants + * */ +export const moduleName = 'admin' +const prefix = `${appName}/${moduleName}` + +export const ADD_USER_SUCCESS = `${prefix}/ADD_USER_SUCCESS` + +/** + * Reducer + * */ +export const ReducerRecord = Record({ + newUser: null +}) + +export default function reducer(state = new ReducerRecord(), action) { + const { type, payload } = action + + switch (type) { + case ADD_USER_SUCCESS: + return state.set('newUser', payload.newUser) + + default: + return state + } +} + +/** + * Selectors + * */ + +/** + * Action Creators + * */ + +export function addUser(firstName, lastName, email) { + return (dispatch) => { + dispatch({ + type: ADD_USER_SUCCESS, + payload: { newUser: { firstName, lastName, email } } + }) + } +} + +firebase.auth().onAuthStateChanged((user) => { + window.store.dispatch({ + type: ADD_USER_SUCCESS, + payload: { newUser: {} } + }) +}) diff --git a/admin/src/redux/reducer.js b/admin/src/redux/reducer.js index 78c74cf..a38bd91 100644 --- a/admin/src/redux/reducer.js +++ b/admin/src/redux/reducer.js @@ -1,8 +1,10 @@ import { combineReducers } from 'redux' import { reducer as form } from 'redux-form' import authReducer, { moduleName as authModule } from '../ducks/auth' +import adminReducer, { moduleName as adminModule } from '../ducks/admin' export default combineReducers({ form, - [authModule]: authReducer + [authModule]: authReducer, + [adminModule]: adminReducer }) diff --git a/admin/src/routes/admin.js b/admin/src/routes/admin.js index 3c28826..f08fab0 100644 --- a/admin/src/routes/admin.js +++ b/admin/src/routes/admin.js @@ -1,3 +1,25 @@ -import React from 'react' +import React, { Component } from 'react' +import { connect } from 'react-redux' +import UserForm from '../components/admin/user' +import { addUser } from '../ducks/admin' -export default () =>

Admin Page

+class AdminRoute extends Component { + render() { + return ( +
+

Admin Page

+ +
+ ) + } + + handleAddUser = ({ firstName, lastName, email }, dispatch, decor) => { + this.props.addUser(firstName, lastName, email) + decor.reset() + } +} + +export default connect( + null, + { addUser } +)(AdminRoute) From f7e47a02749d17c74a4a3b44cccc7b383a1d0502 Mon Sep 17 00:00:00 2001 From: DKizilov Date: Thu, 5 Jul 2018 14:53:48 +0300 Subject: [PATCH 2/4] ignore config --- admin/.gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/admin/.gitignore b/admin/.gitignore index d30f40e..bd9df4f 100644 --- a/admin/.gitignore +++ b/admin/.gitignore @@ -19,3 +19,6 @@ npm-debug.log* yarn-debug.log* yarn-error.log* + +#config +/admin/src/config.js \ No newline at end of file From 0bd005397ced4774eca84052e2cea1a1986af385 Mon Sep 17 00:00:00 2001 From: DKizilov Date: Fri, 6 Jul 2018 01:21:52 +0300 Subject: [PATCH 3/4] move reset to redux --- admin/src/routes/admin.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/admin/src/routes/admin.js b/admin/src/routes/admin.js index f08fab0..0fd95d7 100644 --- a/admin/src/routes/admin.js +++ b/admin/src/routes/admin.js @@ -13,10 +13,8 @@ class AdminRoute extends Component { ) } - handleAddUser = ({ firstName, lastName, email }, dispatch, decor) => { + handleAddUser = ({ firstName, lastName, email }) => this.props.addUser(firstName, lastName, email) - decor.reset() - } } export default connect( From 1f67a168becc19094b5d61c041f4aa98fedb54b4 Mon Sep 17 00:00:00 2001 From: DKizilov Date: Fri, 6 Jul 2018 01:24:04 +0300 Subject: [PATCH 4/4] move reset to redux --- admin/src/ducks/admin.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/admin/src/ducks/admin.js b/admin/src/ducks/admin.js index 49ef03c..1e13d05 100644 --- a/admin/src/ducks/admin.js +++ b/admin/src/ducks/admin.js @@ -1,5 +1,6 @@ import { appName } from '../config' import { Record } from 'immutable' +import { reset } from 'redux-form' import firebase from 'firebase/app' /** @@ -43,6 +44,7 @@ export function addUser(firstName, lastName, email) { type: ADD_USER_SUCCESS, payload: { newUser: { firstName, lastName, email } } }) + dispatch(reset('user')) } }