index.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. const getGQL = url =>
  2. (query, variables={}) => fetch(url, {
  3. method: 'POST',
  4. headers: {
  5. //Accept: "application/json",
  6. "Content-Type": "application/json",
  7. ...(localStorage.authToken ? {Authorization: "Bearer " + localStorage.authToken } : {})
  8. },
  9. body: JSON.stringify({query, variables})
  10. }).then(res => res.json())
  11. export const actionPending = name => ({type: 'PROMISE', status: 'PENDING', name})
  12. export const actionResolved = (name, payload) => ({type: 'PROMISE', status: 'RESOLVED', name, payload})
  13. export const actionRejected = (name, error) => ({type: 'PROMISE', status: 'REJECTED', name, error})
  14. let shopGQL = getGQL('http://marketplace.asmer.fs.a-level.com.ua/graphql')
  15. export const actionPromise = (name, promise) =>
  16. async dispatch => {
  17. dispatch(actionPending(name))
  18. try{
  19. let payload = await promise
  20. dispatch(actionResolved(name, payload))
  21. return payload
  22. }
  23. catch(error){
  24. dispatch(actionRejected(name, error))
  25. }
  26. }
  27. const actionAuthLogin = token => ({type:'LOGIN', token})
  28. export const actionAuthLogout = () => ({type:"LOGOUT"})
  29. let log = async (login, password) => {
  30. let query = `query log($l: String!, $p: String!) {
  31. login(login: $l, password: $p)
  32. }`
  33. let variables = {
  34. "l": login,
  35. "p": password
  36. }
  37. let token = await shopGQL(query, variables)
  38. console.log(token)
  39. return token.data.login
  40. }
  41. const actionLogin = (login, password) => actionPromise("login", log(login, password))
  42. export const actionFullLogin = (login, password) => {
  43. return async (dispatch) => {
  44. let result = await dispatch(actionLogin(login, password))
  45. if(result)
  46. dispatch(actionAuthLogin(result))
  47. }
  48. }
  49. // const actionRegister = (login,password) =>
  50. // actionPromise('reg',shopGQL(`mutation reg($login: String!, $password: String!){
  51. // createUser(login:$login, password: $password){
  52. // _id login
  53. // }
  54. // }`,{query: {login,password}}))
  55. // export const actionFullRegister = (login,password) =>
  56. // async dispatch => {
  57. // let payload = await dispatch(actionRegister(login,password))
  58. // if(payload.data.UserUpsert != null){
  59. // await dispatch(actionFullLogin(login,password))
  60. // }
  61. // }
  62. export const actionReg = (login, password) =>
  63. async dispatch => {
  64. let loginData = await dispatch(actionPromise('reg', shopGQL(
  65. `mutation reg($login: String!, $password: String!){
  66. createUser(login:$login, password: $password){
  67. _id
  68. }
  69. }`, { login, password })))
  70. if (loginData && loginData.data && (loginData.data.createUser != null)) {
  71. dispatch(actionLogin(login, password))
  72. console.log(loginData.data)
  73. }
  74. }
  75. export const actionTypeAd = () =>
  76. actionPromise('type Ad', shopGQL(`
  77. query Ad($query:String){
  78. type AdFind(query:$query){
  79. _id
  80. owner
  81. images
  82. comments
  83. createdAt
  84. title
  85. description
  86. tags
  87. address
  88. price
  89. }
  90. }
  91. `, {query: JSON.stringify([{parent:null}])}))