From d41c6de1c6bdec6243aebb2af1f88ec62ce601ee Mon Sep 17 00:00:00 2001 From: Ismail <msiamil.official@gmail.com> Date: Thu, 20 Aug 2020 17:02:05 +0500 Subject: [PATCH] Logout function completed! shift reducer created --- employeemanagement/package-lock.json | 5 +++++ employeemanagement/package.json | 1 + employeemanagement/src/components/auth/SignIn.js | 2 +- employeemanagement/src/components/layout/Navbar.js | 11 +++++++++-- employeemanagement/src/index.js | 4 ++-- employeemanagement/src/store/actions/authAction.js | 12 ++++++++++++ employeemanagement/src/store/actions/shiftAction.js | 0 employeemanagement/src/store/reducers/authReducer.js | 7 ++++++- employeemanagement/src/store/reducers/rootReducer.js | 2 ++ .../src/store/reducers/shiftReducer.js | 6 ++++++ 10 files changed, 44 insertions(+), 6 deletions(-) create mode 100644 employeemanagement/src/store/actions/shiftAction.js create mode 100644 employeemanagement/src/store/reducers/shiftReducer.js diff --git a/employeemanagement/package-lock.json b/employeemanagement/package-lock.json index c4852ca..84b6d28 100644 --- a/employeemanagement/package-lock.json +++ b/employeemanagement/package-lock.json @@ -8752,6 +8752,11 @@ "minimist": "^1.2.5" } }, + "moment": { + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", + "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", diff --git a/employeemanagement/package.json b/employeemanagement/package.json index 708dc4a..fbe6fd1 100644 --- a/employeemanagement/package.json +++ b/employeemanagement/package.json @@ -7,6 +7,7 @@ "@testing-library/react": "^9.5.0", "@testing-library/user-event": "^7.2.1", "firebase": "^7.18.0", + "moment": "^2.27.0", "react": "^16.13.1", "react-dom": "^16.13.1", "react-redux": "^7.2.1", diff --git a/employeemanagement/src/components/auth/SignIn.js b/employeemanagement/src/components/auth/SignIn.js index e7c085b..1e7c2e0 100644 --- a/employeemanagement/src/components/auth/SignIn.js +++ b/employeemanagement/src/components/auth/SignIn.js @@ -40,7 +40,7 @@ class Signin extends Component { </div> <button className="btn btn-primary">Submit</button> <div className="form-group"> - { authError ?<label className="error text-danger">{authError} </label>: null} + { authError ? <label className="error text-danger"> { authError } </label> : null } </div> </form> </div> diff --git a/employeemanagement/src/components/layout/Navbar.js b/employeemanagement/src/components/layout/Navbar.js index 4628989..7bd0ec3 100644 --- a/employeemanagement/src/components/layout/Navbar.js +++ b/employeemanagement/src/components/layout/Navbar.js @@ -1,4 +1,6 @@ import React from 'react' +import { connect } from 'react-redux'; +import { signOut } from '../../store/actions/authAction'; const Navbar = (props) => { return( @@ -6,10 +8,15 @@ const Navbar = (props) => { <div className="container"> <h5>Employee Management</h5> <h5 className="text-center">Welcome </h5> - <button type="button" className="btn btn-success btn-sm float-right btn-logout">Logout</button> + <button type="button" onClick={ props.signOut } className="btn btn-success btn-sm float-right btn-logout">Logout</button> </div> </nav> ) } -export default Navbar +const mapDispatchToProps = (dispatch) => { + return{ + signOut: () => dispatch(signOut()) + } +} +export default connect(null, mapDispatchToProps)(Navbar) diff --git a/employeemanagement/src/index.js b/employeemanagement/src/index.js index de54e34..f20d44a 100644 --- a/employeemanagement/src/index.js +++ b/employeemanagement/src/index.js @@ -4,11 +4,11 @@ import './index.css'; import App from './App'; import * as serviceWorker from './serviceWorker'; import { createStore, applyMiddleware, compose } from 'redux'; -import rootReducer from './store/reducers/authReducer'; +import rootReducer from './store/reducers/rootReducer'; import { Provider } from 'react-redux'; import thunk from 'redux-thunk'; import { reduxFirestore, getFirestore, createFirestoreInstance } from 'redux-firestore'; -import { ReactReduxFirebaseProvider, getFirebase } from 'react-redux-firebase'; +import { ReactReduxFirebaseProvider, getFirebase, reactReduxFirebase } from 'react-redux-firebase'; import fbConfig from './config/firebaseConfig'; import firebase from 'firebase/app'; diff --git a/employeemanagement/src/store/actions/authAction.js b/employeemanagement/src/store/actions/authAction.js index 759d978..c0b7830 100644 --- a/employeemanagement/src/store/actions/authAction.js +++ b/employeemanagement/src/store/actions/authAction.js @@ -11,4 +11,16 @@ export const signIn = (credentials) => { dispatch({ type: 'LOGIN_FAIL', err}) }) } +} + +export const signOut = () => { + return (dispatch, getState, { getFirebase }) => { + const firebase = getFirebase(); + + firebase.auth().signOut().then(() => { + dispatch({ type: 'LOGOUT_SUCCESS'}) + }).catch((err) => { + dispatch({ type: 'LOGOUT_FAIL', err}) + }); + } } \ No newline at end of file diff --git a/employeemanagement/src/store/actions/shiftAction.js b/employeemanagement/src/store/actions/shiftAction.js new file mode 100644 index 0000000..e69de29 diff --git a/employeemanagement/src/store/reducers/authReducer.js b/employeemanagement/src/store/reducers/authReducer.js index 74e057e..4262fcb 100644 --- a/employeemanagement/src/store/reducers/authReducer.js +++ b/employeemanagement/src/store/reducers/authReducer.js @@ -3,7 +3,6 @@ const initState = {} const authReducer = (state = initState, action) => { switch (action.type) { case 'LOGIN_FAIL': - console.log(state); return { ...state, authError: 'Login Failed' @@ -14,6 +13,12 @@ const authReducer = (state = initState, action) => { ...state, authError: null } + case 'LOGOUT_FAIL': + console.log('Log Out Error'); + return state; + case 'LOGOUT_SUCCESS': + console.log('Log Out success'); + return state; default: return state; } diff --git a/employeemanagement/src/store/reducers/rootReducer.js b/employeemanagement/src/store/reducers/rootReducer.js index 3d7ca29..eb1bb85 100644 --- a/employeemanagement/src/store/reducers/rootReducer.js +++ b/employeemanagement/src/store/reducers/rootReducer.js @@ -1,10 +1,12 @@ import authReducer from './authReducer' +import shiftReducer from './shiftReducer' import { combineReducers } from 'redux' import { firestoreReducer } from 'redux-firestore' import { firebaseReducer } from 'react-redux-firebase' const rootReducer = combineReducers({ auth: authReducer, + shift: shiftReducer, firestore: firestoreReducer, firebase: firebaseReducer }); diff --git a/employeemanagement/src/store/reducers/shiftReducer.js b/employeemanagement/src/store/reducers/shiftReducer.js new file mode 100644 index 0000000..788290d --- /dev/null +++ b/employeemanagement/src/store/reducers/shiftReducer.js @@ -0,0 +1,6 @@ +const initState = {} + +const shiftReducer = (state = initState, action) => { + return state +} +export default shiftReducer \ No newline at end of file -- GitLab