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