Browse Source

implement redux

amenpunk 2 years ago
parent
commit
09efcdeeed
6 changed files with 73 additions and 34 deletions
  1. 9 0
      src/Actions/index.js
  2. 25 26
      src/App.js
  3. 3 0
      src/Pages/HomeUser.jsx
  4. 12 4
      src/Pages/Logincs.jsx
  5. 12 0
      src/Reducers/token.js
  6. 12 4
      src/index.js

+ 9 - 0
src/Actions/index.js

1
+import { SET_TOKEN } from "./types";
2
+
3
+// NOTE:
4
+// lista de acciones -> as reducer
5
+
6
+export const setToken = (payload) =>  ({
7
+  type : SET_TOKEN,
8
+  payload
9
+})

+ 25 - 26
src/App.js

8
 import { QueryClient, QueryClientProvider } from 'react-query'
8
 import { QueryClient, QueryClientProvider } from 'react-query'
9
 
9
 
10
 import Routes from './Components/Routes'
10
 import Routes from './Components/Routes'
11
+
11
 const queryClient = new QueryClient({
12
 const queryClient = new QueryClient({
12
-    defaultOptions: {
13
-        queries: {
14
-            refetchOnWindowFocus: false,
15
-        },
13
+  defaultOptions: {
14
+    queries: {
15
+      refetchOnWindowFocus: false,
16
     },
16
     },
17
+  },
17
 })
18
 })
18
 
19
 
19
 const GATEWAY = {
20
 const GATEWAY = {
20
-    dev: {
21
-        API: 'http://localhost:8000',
22
-    },
23
-    pro: {
24
-        API: '',
25
-    }
21
+  dev: {
22
+    API: 'http://localhost:8000',
23
+  },
24
+  pro: {
25
+    API: '',
26
+  }
26
 }
27
 }
27
 
28
 
28
 export const API_GATEWAY = createContext(GATEWAY)
29
 export const API_GATEWAY = createContext(GATEWAY)
29
 
30
 
30
-function App() {
31
-    return (
32
-        <QueryClientProvider client={queryClient}>
33
-            <Router>
34
-                <AuthProvider>
35
-                    <API_GATEWAY.Provider value={GATEWAY.dev}>
36
-                        <Container fluid>
37
-                            <Routes />
38
-                        </Container>
39
-                    </API_GATEWAY.Provider>
40
-                </AuthProvider>
41
-            </Router>
42
-        </QueryClientProvider>
43
-    );
31
+export default function App() {
32
+  return (
33
+    <QueryClientProvider client={queryClient}>
34
+      <Router>
35
+        <AuthProvider>
36
+          <API_GATEWAY.Provider value={GATEWAY.dev}>
37
+            <Container fluid>
38
+              <Routes />
39
+            </Container>
40
+          </API_GATEWAY.Provider>
41
+        </AuthProvider>
42
+      </Router>
43
+    </QueryClientProvider>
44
+  );
44
 }
45
 }
45
-
46
-export default App;

+ 3 - 0
src/Pages/HomeUser.jsx

5
 import { Service } from '../Utils/HTTP.js';
5
 import { Service } from '../Utils/HTTP.js';
6
 
6
 
7
 import { TestCard } from '../Components/HomeUser/TestCard';
7
 import { TestCard } from '../Components/HomeUser/TestCard';
8
+import { useSelector } from 'react-redux';
8
 
9
 
9
 export function HomeUser(){
10
 export function HomeUser(){
10
 
11
 
12
     const token = useRef(auth.getToken());
13
     const token = useRef(auth.getToken());
13
     const [tests, setTests] = useState([]);
14
     const [tests, setTests] = useState([]);
14
     const [password, setPasword] = useState({});
15
     const [password, setPasword] = useState({});
16
+    const R_token = useSelector( state => state.token);
17
+    console.log("Redux Token: ", R_token)
15
 
18
 
16
     useEffect(() => {
19
     useEffect(() => {
17
 
20
 

+ 12 - 4
src/Pages/Logincs.jsx

2
 import toast, { Toaster } from 'react-hot-toast';
2
 import toast, { Toaster } from 'react-hot-toast';
3
 import { useNavigate } from 'react-router-dom'
3
 import { useNavigate } from 'react-router-dom'
4
 import jwt_decode from "jwt-decode";
4
 import jwt_decode from "jwt-decode";
5
+import { 
6
+  // useSelector,
7
+  useDispatch } from "react-redux";
8
+// import { connect } from 'react-redux';
5
 
9
 
6
 import {
10
 import {
7
-  Paper, Box, Grid, Typography,
8
-  TextField, Button, Avatar,
11
+  Paper, Box, Grid, Typography, TextField, Button, Avatar,
9
   Backdrop, CircularProgress,
12
   Backdrop, CircularProgress,
10
 } from '@mui/material'
13
 } from '@mui/material'
11
 
14
 
12
 import { createTheme, ThemeProvider } from '@mui/material/styles';
15
 import { createTheme, ThemeProvider } from '@mui/material/styles';
13
 
16
 
14
 import PersonIcon from '@mui/icons-material/Person';
17
 import PersonIcon from '@mui/icons-material/Person';
15
-// import { useNavigate } from 'react-router-dom'
16
 import { Copyright } from '../Components/Footer.js'
18
 import { Copyright } from '../Components/Footer.js'
17
-// import { Link } from 'react-router-dom'
18
 import useAuth from '../Auth/useAuth';
19
 import useAuth from '../Auth/useAuth';
19
 
20
 
20
 import { useFormik } from 'formik';
21
 import { useFormik } from 'formik';
21
 import * as Yup from 'yup';
22
 import * as Yup from 'yup';
22
 
23
 
23
 import { Service } from '../Utils/HTTP.js'
24
 import { Service } from '../Utils/HTTP.js'
25
+import { setToken } from '../Actions/index.js';
24
 
26
 
25
 const LoginSchema = Yup.object().shape({
27
 const LoginSchema = Yup.object().shape({
26
   email: Yup
28
   email: Yup
41
   let navigate = useNavigate()
43
   let navigate = useNavigate()
42
 
44
 
43
   const [open, setOpen] = React.useState(false);
45
   const [open, setOpen] = React.useState(false);
46
+  // const token = useSelector(state => state.token)
47
+  const dispatch = useDispatch();
44
   const handleClose = () => false
48
   const handleClose = () => false
45
 
49
 
46
   const formik = useFormik({
50
   const formik = useFormik({
74
           body_token['pass'] = password;
78
           body_token['pass'] = password;
75
           body_token['passid'] = pass_id;
79
           body_token['passid'] = pass_id;
76
           console.log("BODY TOKEN: ", body_token)
80
           console.log("BODY TOKEN: ", body_token)
81
+          dispatch(setToken(token))
77
           // let timestamp = exp * 1000;
82
           // let timestamp = exp * 1000;
78
           // let restante = timestamp - Date.now();
83
           // let restante = timestamp - Date.now();
79
 
84
 
190
 
195
 
191
   );
196
   );
192
 }
197
 }
198
+
199
+
200
+// export default connect(mapStateToProps, mapDispatchToProps)(LoginCs);

+ 12 - 0
src/Reducers/token.js

1
+import { SET_TOKEN } from "../Actions/types"
2
+
3
+const initialState = { token : null }
4
+
5
+export const TokenReducer  = (state = initialState, action) => {
6
+  switch(action.type){
7
+    case SET_TOKEN:
8
+      return {...state, token: action.payload }
9
+    default:
10
+    return state;
11
+  }
12
+}

+ 12 - 4
src/index.js

3
 import './index.css';
3
 import './index.css';
4
 import App from './App';
4
 import App from './App';
5
 
5
 
6
+import { TokenReducer  } from '../src/Reducers/token.js';
7
+import { Provider } from 'react-redux';
8
+import { legacy_createStore as createStore } from 'redux';
9
+
10
+const store = createStore(TokenReducer)
11
+
6
 ReactDOM.render(
12
 ReactDOM.render(
7
-    <React.StrictMode>
8
-        <App />
9
-    </React.StrictMode>,
10
-    document.getElementById('root')
13
+  <React.StrictMode>
14
+    <Provider store={store}>
15
+      <App />
16
+    </Provider>
17
+  </React.StrictMode>,
18
+  document.getElementById('root')
11
 );
19
 );
12
 
20