Browse Source

first commit

DeJaVu 2 years ago
parent
commit
f281637fbe
4 changed files with 32 additions and 178 deletions
  1. 0 148
      src/App.js
  2. 26 26
      src/actions/index.js
  3. 2 2
      src/pages/Sign.js
  4. 4 2
      src/reducers/index.js

+ 0 - 148
src/App.js

@@ -23,155 +23,7 @@ import {Login} from "./pages/Login";
 import {Instruction} from "./pages/Instriction";
 import {Advertisment} from "./pages/Advertisment";
 
-// const store = createStore((state, action) => { //единственный редьюсер данного хранилища
-//   if (state === undefined){ //redux запускает редьюсер хотя бы раз, что бы инициализировать хранилище
-//       return {counter: 0};  //обязательно вернуть новый объект, а не изменить текущий state
-//   }
-//   if (action.type === 'COUNTER_INC'){ //в каждом action должен быть type
-//       return {counter: state.counter +1} //создаем новый объект базируясь на данных из предыдущего состояния
-//   }
-//   if (action.type === 'COUNTER_DEC'){
-//       return {counter: state.counter -1}
-//   }
-//   return state; //редьюсеров может быть несколько, в таком случае вызываются все редьюсеры, но далеко не всегда action.type будет относится к этому редьюсеру. Тогда редьюсер должен вернуть state как есть. 
-// })
 
-// store.subscribe(()=> console.log(store.getState())) // подписка на обновления store
-
-// store.dispatch({
-//   type: 'COUNTER_INC'
-// })
-
-// store.dispatch({
-//   type: 'COUNTER_DEC'
-// })
-
-// const actiononInc = () => ({type: 'COUNTER_INC'})
-// const actiononDec = () => ({type: 'COUNTER_DEC'})
-// store.dispatch(actiononInc())
-// store.dispatch(actiononDec())
-
-// const Counter = ({i=0,onInc,onDec}) => {
-//   return (
-//     <>
-//       <h4>{i}</h4>
-//       <button onClick={onInc}>+</button>
-//       <button disabled={i <= 0} onClick={onDec}>-</button>
-//     </>
-//   )
-// }
-
-// const ConnectedCounter = connect(state => ({i: state.counter}), {onInc: actiononInc ,onDec: actiononDec})(Counter)
-
-// const getGQL = url => 
-//     (query, variables={}) => fetch(url, {
-//         method: 'POST',
-//         headers: {
-//             //Accept: "application/json",
-//             "Content-Type": "application/json",
-//             ...(localStorage.authToken ? {Authorization: "Bearer " + localStorage.authToken } : {})
-//         },
-//         body: JSON.stringify({query, variables})
-//     }).then(res => res.json())
-
-// const actionPending = name => ({type: 'PROMISE', status: 'PENDING', name})
-// const actionResolved = (name, payload) => ({type: 'PROMISE', status: 'RESOLVED', name, payload})
-// const actionRejected = (name, error) => ({type: 'PROMISE', status: 'REJECTED', name, error})
-
-// let shopGQL = getGQL('http://shop-roles.asmer.fs.a-level.com.ua/graphql')
-// const actionPromise = (name, promise) => 
-//     async dispatch => {
-//         dispatch(actionPending(name))
-//         try{
-//             let payload = await promise
-//             dispatch(actionResolved(name, payload)) 
-//             return payload
-//         }
-//         catch(error){
-//              dispatch(actionRejected(name, error))
-//         }
-//     }
-
-
-// const combineReducer = combineReducers({auth: authReducer, promise: promiseReducer})
-//  function authReducer(state, action){
-//     if(state === undefined){
-//         if(localStorage.authToken || localStorage.authToken === 'null'){
-//             action.type = 'LOGIN'
-//             action.token = localStorage.authToken
-//         }
-//         else {
-//             return {}
-//         }
-//     }
-//     if(action.type === 'LOGIN'){
-//         console.log('LOGIN')
-//         localStorage.authToken = action.token
-//         let tok = localStorage.authToken.split('.')[1]
-//         let decoded = JSON.parse(atob((tok)))
-//         return {token:action.token, payload: decoded}
-//     }
-//     if(action.type === 'LOGOUT'){
-//         console.log("LOGOUT")
-//         localStorage.authToken = ''
-//         return {}
-//     }
-//     return state
-//   }
-//   function promiseReducer(state={}, {type, status, payload, error, name}){
-//       if (type === 'PROMISE'){
-//           return {
-//               ...state,
-//               [name]:{status, payload, error}
-//           }
-//       }
-//       return state
-//   }
-
-// const store = createStore(combineReducer, applyMiddleware(thunk)) 
-
-// const actionAuthLogin = token => ({type:'LOGIN', token})
-// const actionAuthLogout = () => ({type:"LOGOUT"})
-
-// let log = async (login, password) => {
-//   let query = `query log($l: String, $p: String) {
-//         login(login: $l, password: $p)
-//       }`
-
-//   let variables = {
-//       "l": login,
-//       "p": password
-//   }
-
-//   let token = await shopGQL(query, variables)
-//   console.log(token)
-//   return token.data.login
-// }
-
-// const actionLogin = (login, password) => actionPromise("login", log(login, password))
-
-// const actionFullLogin = (login, password) => {
-//   return async (dispatch) => {
-//       let result = await dispatch(actionLogin(login, password))
-//       if(result)
-//           dispatch(actionAuthLogin(result))
-//   }
-// }
-
-// const LoginForm = ({onLogin}) => {
-//   const [login,setLogin] = useState('')
-//   const [password,setPassword] = useState('')
-//   return (
-//     <div>
-//       <input value={login} onChange={e => setLogin(e.target.value)} ></input>
-//       <input value={password} onChange={e => setPassword(e.target.value)} type="password"></input>
-//       <button onClick={() => onLogin(login,password)}>Send</button>
-//     </div>
-//   )
-// }
-
-
-// const ConnectLog = connect(null, {onLogin: actionFullLogin})(LoginForm)
 // const ConnectLogout = connect(state => ({children: 'logout'}),{onClick: actionAuthLogout})('button')
 
 function App() {

+ 26 - 26
src/actions/index.js

@@ -56,34 +56,34 @@ export const actionFullLogin = (login, password) => {
   }
 }
 
-// const actionRegister = (login,password) =>
-//     actionPromise('reg',shopGQL(`mutation reg($login: String!, $password: String!){
-//         createUser(login:$login, password: $password){
-//         _id login
-//     }
-// }`,{query: {login,password}}))
-
-// export const actionFullRegister = (login,password) => 
-//   async dispatch => {
-//     let payload = await dispatch(actionRegister(login,password))
-//     if(payload.data.UserUpsert != null){
-//       await dispatch(actionFullLogin(login,password))
-//     }
-//   }
+const actionRegister = (login,password) =>
+    actionPromise('reg',shopGQL(`mutation reg($login: String!, $password: String!){
+        createUser(login:$login, password: $password){
+        _id login
+    }
+}`,{query: {login,password}}))
 
-export const actionReg = (login, password) =>
-    async dispatch => {
-        let loginData = await dispatch(actionPromise('reg', shopGQL(
-            `mutation reg($login: String!, $password: String!){
-                createUser(login:$login, password: $password){
-                  _id
-                }
-              }`, { login, password })))
-        if (loginData && loginData.data && (loginData.data.createUser != null)) {
-            dispatch(actionLogin(login, password))
-            console.log(loginData.data)
-        }
+export const actionFullRegister = (login,password) => 
+  async dispatch => {
+    let payload = await dispatch(actionRegister(login,password))
+    if(payload.data.UserUpsert != null){
+      await dispatch(actionFullLogin(login,password))
     }
+  }
+
+// export const actionReg = (login, password) =>
+//     async dispatch => {
+//         let loginData = await dispatch(actionPromise('reg', shopGQL(
+//             `mutation reg($login: String!, $password: String!){
+//                 createUser(login:$login, password: $password){
+//                   _id
+//                 }
+//               }`, { login, password })))
+//         if (loginData && loginData.data && (loginData.data.createUser != null)) {
+//             dispatch(actionLogin(login, password))
+//             console.log(loginData.data)
+//         }
+//     }
 
 export const actionTypeAd = () =>
     actionPromise('type Ad', shopGQL(`

+ 2 - 2
src/pages/Sign.js

@@ -1,7 +1,7 @@
 import React from "react";
 import {connect}   from 'react-redux';
 import {useState} from "react";
-import {actionReg} from '../actions'
+import {actionFullRegister} from '../actions'
 import {Redirect} from 'react-router-dom';
 
 const Sign = ({onSign,loggedIn}) => {
@@ -27,5 +27,5 @@ const Sign = ({onSign,loggedIn}) => {
     )
 }
 
-const ConnectSign = connect(store => ({loggedIn: (store.authReducer.login || store.login)}) , {onSign: actionFullRegister})(Sign)
+const ConnectSign = connect(store=> ({loggedIn:store.authReducer.login }),{onSign: actionFullRegister})(Sign)
 export default ConnectSign

+ 4 - 2
src/reducers/index.js

@@ -25,7 +25,7 @@ import {createStore, combineReducers, applyMiddleware} from 'redux';
     }
     return state
   }
-  
+
   function promiseReducer(state={}, {type, status, payload, error, name}){
       if (type === 'PROMISE'){
           return {
@@ -38,7 +38,9 @@ import {createStore, combineReducers, applyMiddleware} from 'redux';
 
 
 
-const rootReducer = combineReducers({authReducer, promiseReducer});
+  const rootReducer = combineReducers({
+    promiseReducer,authReducer
+})
 const store = createStore(rootReducer, applyMiddleware(thunk)) 
 
 export default store