Volddemar4ik 2 лет назад
Родитель
Сommit
1d6af0c1e5

+ 35 - 1
js/Project/project/src/components/redux/action.js

@@ -114,4 +114,38 @@ export const actionfindPosts = () => actionPromise('PostsFind', gql(`query AllPo
   }
 }`, {
   allPosts: JSON.stringify([{}])
-}))
+}))
+
+
+// =================
+// акшон для логинизации
+const actionAuthLogin = token => ({ type: 'AUTH_LOGIN', token })
+// акшон для раззлогинивания
+const actionAuthLogout = () => ({ type: 'AUTH_LOGOUT' })
+
+// Запрос на логин
+export const actionLogin = (login, password) => actionPromise('login', gql(`query Login($login: String!, $password: String!) {
+login(login: $login, password: $password)
+}`, {
+  login,
+  password
+}))
+
+// Запрос на логин и последующую логинизацию в authReduser (thunk)
+export const actionFullLogin = (login, password) =>
+  async dispatch => {
+    const token = await dispatch(actionLogin(login, password))
+
+    try {
+      if (token != null) {
+        if (typeof (token) === 'string') {
+          dispatch(actionAuthLogin(token))
+          localStorage.authToken = token
+        }
+      }
+    }
+
+    catch (error) {
+      console.log(error)
+    }
+  }

+ 10 - 7
js/Project/project/src/components/redux/index.js

@@ -3,14 +3,14 @@ import thunk from "redux-thunk";
 
 import { promiseReducer, localStoredReducer, totalReducer, authReducer } from "./reducers";
 
-import { actionPending, actionFulfilled, actionRejected, actionPromise } from "./action";
+import { actionPending, actionFulfilled, actionRejected, actionPromise, actionFullLogin, actionLogin } from "./action";
 
 // объект со всеми редьюсерами
-const reducers = {
-    promise: localStoredReducer(promiseReducer, 'promise'),
-    auth: localStoredReducer(authReducer, 'auth'),
-    // cart: localStoredReducer(cartReducer, 'cart'),
-}
+// const reducers = {
+//     promise: localStoredReducer(promiseReducer, 'promise'),
+//     auth: localStoredReducer(authReducer, 'auth'),
+//     // cart: localStoredReducer(cartReducer, 'cart'),
+// }
 
 // const totalReducer = combineRedusers(reducers)
 
@@ -20,4 +20,7 @@ const reducers = {
 
 // 2 изменение
 export const store = createStore(totalReducer, applyMiddleware(thunk))
-store.subscribe(() => console.log(store.getState()))
+store.subscribe(() => console.log(store.getState()))
+
+// запрос на логинизацию
+store.dispatch(actionFullLogin('volddemar4ik', 'Qwerty1324'))

+ 1 - 1
js/Project/project/src/components/user/index.js

@@ -45,7 +45,7 @@ function User({ user = {}, loadUser }) {
 
                         <Container>
                             <Link to="/createpost" style={{ textDecoration: 'none' }}>
-                                <Button variant="contained" startIcon={<AddAPhotoRoundedIcon />} onClick={() => (console.log('click add'))}>
+                                <Button variant="contained" color='primary' startIcon={<AddAPhotoRoundedIcon />} onClick={() => (console.log('click add'))}>
                                     Добавить пост
                                 </Button>
                             </Link>