index.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import { actionAuthLogin } from "../redux/auth-reducer";
  2. import { gql } from "../helpers";
  3. const actionPending = name => ({ type: 'PROMISE', status: 'PENDING', name })
  4. const actionResolved = (name, payload) => ({ type: 'PROMISE', status: 'RESOLVED', name, payload })
  5. const actionRejected = (name, error) => ({ type: 'PROMISE', status: 'REJECTED', name, error })
  6. export const actionPromise = (name, promise) =>
  7. async dispatch => {
  8. dispatch(actionPending(name))
  9. try {
  10. let data = await promise
  11. dispatch(actionResolved(name, data))
  12. return data
  13. }
  14. catch (error) {
  15. dispatch(actionRejected(name, error))
  16. }
  17. }
  18. export const actionLogin = (login, password) =>
  19. actionPromise('login', gql(`query login($login:String!, $password:String!){
  20. login(login:$login, password:$password)
  21. }`, { login, password }))
  22. export const actionFullLogin = (login, password, remember) =>
  23. async dispatch => {
  24. let token = await dispatch(actionLogin(login, password))
  25. if (token) {
  26. dispatch(actionAuthLogin(token, remember))
  27. }
  28. }
  29. const actionRegister = (login, password) =>
  30. actionPromise('register', gql(`mutation rega ($login:String!, $password:String!){
  31. createUser(login: $login, password: $password){
  32. _id login
  33. }
  34. }`, { login, password }))
  35. export const actionFullRegister = (login, password, remember) =>
  36. async dispatch => {
  37. await actionRegister(login, password)
  38. let token = await dispatch(actionLogin(login, password))
  39. if (token) {
  40. dispatch(actionAuthLogin(token, remember))
  41. }
  42. }
  43. export const actionProfilData = (_id) =>
  44. actionPromise('dataProfileAuth', gql(`query userOned($id:String!){
  45. UserFindOne(query: $id){
  46. _id login avatar{ _id url }
  47. following{_id}
  48. } LikeFind(query:$id){
  49. _id
  50. post { _id}
  51. }
  52. }`, { id: JSON.stringify([{ ___owner: _id }]) }))
  53. export const actionAddLikePost = (_id) =>
  54. actionPromise('likePost', gql(`mutation LikePost($like:LikeInput){
  55. LikeUpsert(like:$like){
  56. _id
  57. }
  58. }`, { like: { post: { _id } } }))
  59. export const actionRemoveLikePost = (_id) =>
  60. actionPromise('removelikePost', gql(`mutation LikeRemove($like:LikeInput){
  61. LikeDelete(like:$like){
  62. _id
  63. }
  64. }`, { like: { _id } }))
  65. export const actionLikeUpdatePost = (id) =>
  66. actionPromise('likeUpdatePost', gql(`query userOned($id: String!) {
  67. PostFindOne(query: $id) {
  68. likes {_id}
  69. }
  70. }`, { id: JSON.stringify([{ _id: id }]) }))