123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- const getGQL = url =>
- (query, variables) => fetch(url, {
- method: 'POST',
- headers: {
- "Content-Type": "application/json",
- ...(localStorage.authToken ? {"Authorization": "Bearer " + localStorage.authToken} : {})
- },
- body: JSON.stringify({query, variables})
- }).then(res => res.json())
- .then(data => {
- if (data.data){
- return Object.values(data.data)[0]
- }
- else throw new Error(JSON.stringify(data.errors))
- })
- const backendURL = 'http://hipstagram.asmer.fs.a-level.com.ua';
- const gql = getGQL(backendURL + '/graphql');
- export const actionPromise = (name,promise) =>{
- const actionPending = name => ({name,type:"PROMISE",status:'PENDING'})
- const actionFulfiled = (name,payload) =>({name,type:"PROMISE",status:'FULFILLED',payload})
- const actionRejected = (name,error) => ({name,type:"PROMISE",status:'REJECTED',error})
- return async dispatch => {
- dispatch(actionPending(name))
- try{
- let payload = await promise
- dispatch(actionFulfiled(name,payload))
- return payload
- }
- catch(e){
- dispatch(actionRejected(name,e))
- }
- }
- }
- export const actionAuthLogin = (tokennn) =>({type:'AUTH_LOGIN',token:tokennn})
- export const actionAuthLogout= () => ({type: 'AUTH_LOGOUT'})
- export const actionFullRegister = (Login,password) =>
- actionPromise('fullRegister', gql(`mutation register($Login:String,$password:String){
- UserUpsert(user:{login:$Login,password:$password}){
- _id login
- }
- }`,{Login: Login, password: password}))
- export const actionFullLogin = (login,password) => async (dispatch) => {
- const tokennn = await dispatch(
- actionPromise('fullLogin', gql(`query login($login:String!,$password:String!){
- login(login:$login,password:$password)
- }`,{login:login,password:password}))
- );
- await dispatch(actionAuthLogin(tokennn));
- }
|