Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12,487 changes: 12,487 additions & 0 deletions admin/package-lock.json

Large diffs are not rendered by default.

9 changes: 6 additions & 3 deletions admin/src/App.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, {Component} from 'react'
import { Route } from 'react-router-dom'
import { Route, Redirect, Switch } from 'react-router-dom'
import ProtectedRoute from './components/common/protected-route'
import AuthPage from './routes/auth'
import AdminPage from './routes/admin'
Expand All @@ -8,8 +8,11 @@ class App extends Component {
render() {
return (
<div>
<Route path = "/auth" component = {AuthPage} />
<ProtectedRoute path = "/admin" component = {AdminPage} />
<Switch>
<Route path = "/auth" component = {AuthPage} />
<ProtectedRoute path = "/admin" component = {AdminPage} />
<Redirect exact path = "/" to = "/auth" />
</Switch>
</div>
)
}
Expand Down
43 changes: 43 additions & 0 deletions admin/src/components/admin/addPersonForm.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import React, { Component } from 'react'
import {Field, reduxForm} from 'redux-form'
import ErrorField from '../common/error-field'

class AddPersonForm extends Component {
render() {

return (
<form onSubmit={this.props.handleSubmit}>
<h2>Add Person</h2>
<div>
<Field
name="firstName"
component={ErrorField}
label="firstName"
/>
</div>
<div>
<Field
name="lastName"
component={ErrorField}
label="lastName"
/>
</div>
<div>
<Field
name="email"
component={ErrorField}
label="email"
/>
</div>
<div>
<button type="submit">submit</button>
</div>
</form>
)
}
}

export default reduxForm({
form: 'addPerson'
})(AddPersonForm)

2 changes: 1 addition & 1 deletion admin/src/components/common/error-field.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class ErrorField extends Component {
const errorMessage = touched && error && <h3 style = {{ color: 'red' }}>{error}</h3>
return (
<div>
{label}
<div>{label}</div>
<input {...input} type = {type}/>
{errorMessage}
</div>
Expand Down
6 changes: 3 additions & 3 deletions admin/src/config.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import firebase from 'firebase'

export const appName = 'advreact-10-05'
export const appName = 'advancedreact-f31cd'

export const config = {
apiKey: 'AIzaSyCbMQM0eQUSQ0SuLVAu9ZNPUcm4rdbiB8U',
apiKey: 'AIzaSyC4HchzzCItq1dPJRY_B-InXmnkIasqMVw',
authDomain: `${appName}.firebaseapp.com`,
databaseURL: `https://${appName}.firebaseio.com`,
projectId: appName,
storageBucket: "",
messagingSenderId: "1094825197832"
messagingSenderId: "71475877514"
}

firebase.initializeApp(config)
47 changes: 47 additions & 0 deletions admin/src/ducks/admin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import {appName} from '../config'
import {reset} from 'redux-form'
import {Record, List} from 'immutable'
import firebase from 'firebase'
import { createSelector } from 'reselect'

/**
* Constants
* */
export const moduleName = 'admin'
const prefix = `${appName}/${moduleName}`

export const ADD_PERSON_SUCCESS = `${prefix}/ADD_PERSON_SUCCESS`

/**
* Reducer
* */
export const ReducerRecord = Record({
persons: List()
})

export default function reducer(state = new ReducerRecord(), action) {
const {type, payload} = action

switch (type) {
case ADD_PERSON_SUCCESS:
return state.updateIn([ 'persons' ], persons => persons.push(payload))

default:
return state
}
}

/**
* Selectors
* */

/**
* Action Creators
* */

export function addPerson(personData) {
return (dispatch) => {
dispatch({type: ADD_PERSON_SUCCESS, payload: personData})
dispatch(reset('addPerson'))
}
}
15 changes: 11 additions & 4 deletions admin/src/ducks/auth.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import {appName} from '../config'
import {Record} from 'immutable'
import firebase from 'firebase'
import { push } from 'react-router-redux'
import { createSelector } from 'reselect'

/**
Expand Down Expand Up @@ -57,8 +58,14 @@ export function signIn(email, password) {
}

firebase.auth().onAuthStateChanged(user => {
user && window.store.dispatch({
type: SIGN_IN_SUCCESS,
payload: { user }
})
if (!!user) {
window.store.dispatch({
type: SIGN_IN_SUCCESS,
payload: { user }
})

window.store.dispatch(push('/admin'))
}


})
4 changes: 3 additions & 1 deletion admin/src/redux/reducer.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@ import {combineReducers} from 'redux'
import {routerReducer as router} from 'react-router-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({
router, form,
[authModule]: authReducer
[authModule]: authReducer,
[adminModule]: adminReducer
})
23 changes: 22 additions & 1 deletion admin/src/redux/store.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,31 @@
import {createStore, applyMiddleware} from 'redux'
import thunk from 'redux-thunk'
import logger from 'redux-logger'
import {createLogger} from 'redux-logger'
import {routerMiddleware} from 'react-router-redux'
import { isImmutable } from 'immutable'
import reducer from './reducer'
import history from '../history'

const stateTransformer = (state) => {
let newState = {};

for (var i of Object.keys(state)) {
if (isImmutable(state[i])) {
newState[i] = state[i].toJS();
} else {
newState[i] = state[i];
}
};

return newState;
};


const logger = createLogger({
collapsed: true,
stateTransformer
});

const enhancer = applyMiddleware(thunk, routerMiddleware(history), logger)

const store = createStore(reducer, enhancer)
Expand Down
11 changes: 10 additions & 1 deletion admin/src/routes/admin.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,26 @@
import React, { Component } from 'react'
import { connect } from 'react-redux'

import AddPersonForm from '../components/admin/addPersonForm'
import { addPerson } from '../ducks/admin'

class AdminPage extends Component {
static propTypes = {

}

onPersonSubmit = (data) => this.props.addPerson(data)

render() {

return (
<div>
<h1>Admin Page</h1>
<AddPersonForm onSubmit={this.onPersonSubmit}/>
</div>
)
}
}

export default AdminPage
export default connect(null, {addPerson})(AdminPage)