index.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454
  1. import { gql } from "../helpers";
  2. //*************** ACTIONS PROMISE ******************//
  3. export const actionPending = name => ({ type: 'PROMISE', status: 'PENDING', name })
  4. export const actionResolved = (name, payload) => ({ type: 'PROMISE', status: 'RESOLVED', name, payload })
  5. export const actionRejected = (name, error) => ({ type: 'PROMISE', status: 'REJECTED', name, error })
  6. export const actionClearPromise = (name) => ({ type: 'CLEAR-PROMISE', name })
  7. export const actionPromise = (name, promise) => ({ type: 'PROMISE_START', name, promise })
  8. //*************** ACTIONS AUTHORIZATION ******************//
  9. export const actionAuthLogin = (token, remember) => ({ type: 'AUTH-LOGIN', token, remember })
  10. export const actionAuthLogout = () => ({ type: 'AUTH-LOGOUT' })
  11. export const actionLogIn = (login, password) =>
  12. actionPromise('login', gql(`query login($login:String!, $password:String!){
  13. login(login:$login, password:$password)
  14. }`, { login, password }))
  15. export const actionFullLogIn = (login, password, remember) => ({ type: 'FULL_LOGIN', login, password, remember })
  16. export const actionFullRegister = (login, password, remember) => ({ type: 'FULL_REGISTER', login, password, remember })
  17. export const actionRegister = (login, password) =>
  18. actionPromise('register', gql(`mutation rega ($login:String!, $password:String!){
  19. createUser(login: $login, password: $password){
  20. _id login
  21. }
  22. }`, { login, password }))
  23. //*************** Action ABOUT ME ******************//
  24. export const actionAboutMeAC = (data) => ({ type: 'ABOUTME-DATA-ADD', data })
  25. export const actionFullAboutMe = () => ({ type: 'ABOUT_ME' })
  26. export const actionRemoveMyDataAC = () => ({ type: 'REMOVE-MYDATA' })
  27. export const actionFullAboutMeUpsert = (nick, login) => ({ type: 'ABOUT_ME_UPSERT', nick, login })
  28. export const actionAboutMe = (id) =>
  29. actionPromise('aboutMe', gql(`query userOned($myID:String!){
  30. UserFindOne(query: $myID){
  31. _id login nick
  32. avatar { _id url }
  33. following{ _id}
  34. }
  35. }`, { myID: JSON.stringify([{ _id: id }]) }))
  36. export const actionUpsertAboutMe = (myData) =>
  37. actionPromise('upsertAboutMe', gql(`mutation editAboutMe($user:UserInput){
  38. UserUpsert(user:$user){
  39. _id _id login nick
  40. avatar { _id url }
  41. following{ _id}
  42. }
  43. }`, { user: myData }))
  44. //*************** Action Posts Feed ******************//
  45. export const actionGetPostAC = (postData) => ({ type: 'GET-POST', newResult: postData })
  46. export const actionAddPostsFeedAC = (postsData, count) => ({ type: 'ADD-POSTS-FEED', newResult: postsData, count })
  47. export const actionRemovePostsFeedAC = () => ({ type: 'REMOVE-POSTS-FEED' })
  48. export const actionPostsFeed = () => ({ type: 'POSTS_FEED' })
  49. export const actionPostsMyFollowing = (skip, myFollowing) =>
  50. actionPromise('followingPosts',
  51. gql(`query allposts($query: String!){
  52. PostFind(query:$query){
  53. _id, text, title
  54. owner{_id, nick, login, avatar {url}}
  55. likes { _id owner {_id}}
  56. images{ url _id originalFileName }
  57. comments{_id text createdAt owner {_id login nick}}
  58. createdAt
  59. }
  60. }`, {
  61. query: JSON.stringify([{
  62. ___owner: { $in: myFollowing }
  63. },
  64. {
  65. sort: [{ _id: -1 }],
  66. skip: [skip || 0],
  67. limit: [10]
  68. }])
  69. }))
  70. export const actionPostsCount = (_id) =>
  71. actionPromise('userPostsCount', gql(` query userPostsCount($id:String!){
  72. PostCount(query:$id)
  73. }`, { id: JSON.stringify([{ ___owner: { $in: _id } }]) }))
  74. //*************** Action Posts Profile ******************//
  75. export const actionProfileDataAC = (postsData, count, userData) => ({ type: 'ADD-PROFILE-DATA', newResult: postsData, count, userData })
  76. export const actionProfilePageData = (id) => ({ type: 'DATA_PROFILE', id })
  77. export const actionProfileData = (_id) =>
  78. actionPromise('userOneData', gql(` query userOned($id:String!){
  79. UserFindOne(query: $id){
  80. _id login nick
  81. avatar { _id url }
  82. createdAt
  83. followers {_id }
  84. following {_id }}
  85. } `, { id: JSON.stringify([{ _id }]) }))
  86. export const actionProfilePagePost = (_id, skip) => actionPromise('userOneDataPosts', gql(` query userOned($id:String!){
  87. PostFind(query:$id){
  88. _id images{ url _id originalFileName }
  89. }
  90. }`, {
  91. id: JSON.stringify([{
  92. ___owner: _id
  93. },
  94. {
  95. sort: [{ _id: -1 }],
  96. skip: [skip || 0],
  97. limit: [24]
  98. }])
  99. }))
  100. //****************---All FIND POSTS---*************************//
  101. export const actionAllPosts = () => ({ type: 'ALL_POSTS' })
  102. export const actionGetAllPosts = (skip) =>
  103. actionPromise('allPosts', gql(` query allPosts($id:String!){
  104. PostFind(query:$id){
  105. _id images{url _id originalFileName}
  106. }
  107. }`, {
  108. id: JSON.stringify([{}, {
  109. sort: [{ _id: -1 }],
  110. skip: [skip || 0],
  111. limit: [36]
  112. }])
  113. }))
  114. export const actionAllPostsCount = () =>
  115. actionPromise('userPostsCount', gql(` query userPostsCount($id:String!){
  116. PostCount(query:$id)
  117. }`, { id: JSON.stringify([{}]) }))
  118. //****************---Action FindUsers ---*************************//
  119. export const actionSearchUsers = (value) => ({ type: 'SEARCH_USERS', value })
  120. export const actionLoadSearchUsers = (value) =>
  121. actionPromise('findUsersAll', gql(`query findUsersAll($query:String!) {
  122. UserFind(query: $query) {
  123. _id login nick
  124. avatar { _id url }
  125. }
  126. }`, {
  127. query: JSON.stringify([{
  128. $or: [{ nick: `/${value}/` }, { login: `/${value}/` }]
  129. },
  130. {
  131. sort: [{ login: 1 }]
  132. },
  133. ])
  134. }))
  135. //****************---Action Like Post ---*************************//
  136. export const actionAddLikePostAC = (findId, newResult) => ({ type: 'ADD-POST-LIKE', findId, newResult })
  137. export const actionRemoveLikePostAC = (findId, newResult) => ({ type: 'REMOVE-POST-LIKE', findId, newResult })
  138. export const actionLikePost = (postId) => ({ type: 'LIKE_POST', postId })
  139. export const actionDelLikePost = (likeId, postId) => ({ type: 'DEL_LIKE_POST', likeId, postId })
  140. export const actionAddLikePost = (_id) =>
  141. actionPromise('likePost', gql(`mutation LikePost($like:LikeInput){
  142. LikeUpsert(like:$like){
  143. _id
  144. }
  145. }`, { like: { post: { _id } } }))
  146. export const actionRemoveLikePost = (_id) =>
  147. actionPromise('removelikePost', gql(`mutation LikeRemove($like:LikeInput){
  148. LikeDelete(like:$like){
  149. _id
  150. }
  151. }`, { like: { _id } }))
  152. export const actionMyLikePost = (findId) =>
  153. actionPromise('myLikes', gql(`query likeFindPost ($id:String!){
  154. PostFindOne(query:$id){
  155. likes { _id owner {_id}}
  156. }
  157. }`, { id: JSON.stringify([{ _id: findId }]) }))
  158. //****************---Action Like Comment ---*************************//
  159. export const actionUpsertLikeCommentAC = (findId, newResult) => ({ type: 'UPSERT-LIKE-COMMENT', findId, newResult })
  160. export const actionLikeComment = (commentId) => ({ type: 'LIKE_COMMENT', commentId })
  161. export const actionDelLikeComment = (likeId, commentId) => ({ type: 'DEL_LIKE_COMMENT', likeId, commentId })
  162. export const actionAddLikeComment = (_id) =>
  163. actionPromise('likePost', gql(`mutation LikePost($like:LikeInput){
  164. LikeUpsert(like:$like){
  165. _id
  166. }
  167. }`, { like: { comment: { _id } } }))
  168. export const actionRemoveLikeComment = (_id) =>
  169. actionPromise('removelikeComment', gql(`mutation LikeRemove($like:LikeInput){
  170. LikeDelete(like:$like){_id}
  171. }`, { like: { _id } }))
  172. export const actionFindLikeComment = (findId) =>
  173. actionPromise('findLikeComment', gql(`query findLikeComment ($id:String!){
  174. CommentFindOne(query:$id){
  175. likes { _id owner {_id}}
  176. }
  177. }`, { id: JSON.stringify([{ _id: findId }]) }))
  178. //****************---Collection---*************************//
  179. export const actionUpsertCollectionAC = (data) => ({ type: 'UPSERT-COLLECTION', data })
  180. export const actionHandlerUpsertCollection = (_id, flag) => ({ type: 'HANDLER_UPSERT_COLLECTION', _id, flag })
  181. export const actionFullMyCollectionLoad = () => ({ type: 'LOAD_COLLECTION' })
  182. export const actionAddPostInCollections = (collectionId, newCollection) =>
  183. actionPromise('addInCollections', gql(`mutation addInCollections($collection:CollectionInput ){
  184. CollectionUpsert(collection:$collection){
  185. _id
  186. }
  187. }`, { collection: { _id: collectionId, posts: newCollection } }))
  188. export const actionFindMyCollections = (_id) =>
  189. actionPromise('findMyCollections', gql(`query findCollections($id:String! ){
  190. CollectionFindOne(query:$id){
  191. _id text posts{_id }
  192. }
  193. }`, { id: JSON.stringify([{ ___owner: _id }]) }))
  194. export const actionOnLoadMyCollection = (_id, skip) =>
  195. actionPromise('onLoadMyCollections', gql(`query loadCollections($id:String! ){
  196. CollectionFind(query:$id){
  197. posts { _id images{ _id url originalFileName}}
  198. }
  199. }`, {
  200. id: JSON.stringify([{ _id }, {
  201. sort: [{ _id: -1 }],
  202. skip: [skip || 0],
  203. limit: [36]
  204. }])
  205. }))
  206. //****************---Action Subscribe ---*************************//
  207. export const actionUpdateMyFollowingAC = (data) => ({ type: 'UPDATE-MY-FOLLOWING', data })
  208. export const actionUpdateFollowersAC = (newResult) => ({ type: 'UPDATE-FOLLOWERS', newResult })
  209. export const actionSubscribe = (userId) => ({ type: 'SUBSCRIBE', userId })
  210. export const actionUnSubscribe = (userId) => ({ type: 'UN_SUBSCRIBE', userId })
  211. export const actionLoadSubscribe = (myID, myFollowing, userId) =>
  212. actionPromise('subscribe', gql(`mutation following($user:UserInput){
  213. UserUpsert( user:$user){
  214. following{_id}
  215. }
  216. }`, { user: { _id: myID, following: [...myFollowing || [], { _id: userId }] } }))
  217. export const actionloadUnSubscribe = (myID, myFollowing) =>
  218. actionPromise('unSubscribe', gql(`mutation followingUn($user:UserInput){
  219. UserUpsert( user:$user){
  220. following{_id}
  221. }
  222. }`, { user: { _id: myID, following: [...myFollowing] } }))
  223. export const actionUpdateMyFollowing = (_id) =>
  224. actionPromise('upDateFollowing', gql(` query followers($id:String!){
  225. UserFindOne(query: $id){
  226. following {_id nick login}
  227. }
  228. }`, { id: JSON.stringify([{ _id }]) }))
  229. export const actionUpdateFollowers = (_id) =>
  230. actionPromise('upDateFollowers', gql(` query followers($id:String!){
  231. UserFindOne(query: $id){
  232. followers {_id nick login}
  233. }
  234. }`, { id: JSON.stringify([{ _id }]) }))
  235. //****************---Action Comments ---*************************//
  236. export const actionAddCommentAC = (findId, newResult) => ({ type: 'ADD-COMMENT', findId, newResult })
  237. export const actionUpdateSubCommentAC = (findId, newResult) => ({ type: 'UPDATE-SUBCOMMENT', findId, newResult })
  238. export const actionEditCommentAC = (findId, newResult) => ({ type: 'EDIT-COMMENT', findId, newResult })
  239. export const actionEditComment = (commentId, text) => ({ type: 'COMMENT_EDIT', commentId, text })
  240. export const actionFullAddComment = (postId, text) => ({ type: 'COMMENT_POST', postId, text })
  241. export const actionAddSubComment = (commentId, text) => ({ type: 'ADD_SUB_COMMENT', commentId, text })
  242. export const actionSubComment = (commentId) => ({ type: 'FIND_SUBCOMMENT', commentId })
  243. export const actionAddComment = (postId, text) =>
  244. actionPromise('addcomment', gql(`mutation addcomment($comment: CommentInput ){
  245. CommentUpsert(comment:$comment){
  246. _id text
  247. }
  248. }`, { comment: { post: { _id: postId }, text } }))
  249. export const actionFindComment = (findId) =>
  250. actionPromise('findCommentPost', gql(`query commentFindPost ($id:String!){
  251. PostFindOne(query:$id){
  252. comments {
  253. _id text createdAt
  254. owner{
  255. _id nick login
  256. avatar{
  257. _id url
  258. }
  259. }
  260. likes{_id}
  261. }
  262. }
  263. }`, { id: JSON.stringify([{ _id: findId }]) }))
  264. export const actionFindSubComment = (findId) =>
  265. actionPromise('subComments', gql(`query commentFindOne ($id:String!){
  266. CommentFindOne(query:$id){
  267. _id text answers {
  268. _id text
  269. post {_id }
  270. answers { _id}
  271. createdAt
  272. likes { _id owner { login nick } }
  273. owner {
  274. _id login nick
  275. avatar { url }
  276. }
  277. }
  278. }
  279. }`, {
  280. id: JSON.stringify([{ _id: findId }])
  281. }))
  282. export const actionSubAddComment = (commentId, text) =>
  283. actionPromise('addSubcomment', gql(`mutation addSubcomment($comment: CommentInput ){
  284. CommentUpsert(comment:$comment){
  285. _id text
  286. }
  287. }`, { comment: { answerTo: { _id: commentId }, text } }))
  288. export const actionFindCommentText = (findId) =>
  289. actionPromise('subComments', gql(`query commentFindOne ($id:String!){
  290. CommentFindOne(query:$id){
  291. _id text
  292. }
  293. }`, {
  294. id: JSON.stringify([{ _id: findId }])
  295. }))
  296. export const actionUpsertEditComment = (commentId, text) =>
  297. actionPromise('editcomment', gql(`mutation addSubcomment($comment: CommentInput ){
  298. CommentUpsert(comment:$comment){
  299. _id text
  300. }
  301. }`, { comment: { _id: commentId, text } }))
  302. //****************---Action Udate Avatar ---*************************//
  303. export const actionUpdateAvatar = (file) => ({ type: 'UPDATE_AVATAR', file })
  304. export const actionUpdateMyAvatart = (data) => ({ type: 'ABOUTME-UPDATE-AVATAR', data })
  305. export const actionSetAvatar = (file, id) =>
  306. actionPromise('uploadPhoto', gql(`mutation avaUpsert($ava: UserInput){
  307. UserUpsert(user: $ava){
  308. _id avatar {_id}
  309. }
  310. }`, { ava: { _id: id, avatar: { _id: file._id } } })
  311. )
  312. export const actionGetAvatar = (id) =>
  313. actionPromise('uploadPhoto', gql(`query userOned($myID: String!){
  314. UserFindOne(query: $myID) {
  315. avatar { _id url }
  316. }
  317. }`, { myID: JSON.stringify([{ _id: id }]) }))
  318. //****************--- Find FOllowing/Follovwrs---*************************//
  319. export const actionFindFollowing = (_id) => ({ type: 'FIND_FOLLOWING', _id })
  320. export const actionFindFollowers = (_id) => ({ type: 'FIND_FOLLOWERS', _id })
  321. export const actionFindLiked = (_id) => ({ type: 'FIND_LIKED', _id })
  322. export const actionGetFindFollowing = (_id) =>
  323. actionPromise('findFollow', gql(` query findFollowing($id:String!){
  324. UserFindOne(query: $id){
  325. following {
  326. _id nick login
  327. avatar { _id url }
  328. followers{_id}
  329. }
  330. }
  331. } `, { id: JSON.stringify([{ _id }]) }))
  332. export const actionGetFindFollowers = (_id) =>
  333. actionPromise('findFollow', gql(` query findFollowers($id:String!){
  334. UserFindOne(query: $id){
  335. followers {
  336. _id nick login
  337. avatar { _id url }
  338. followers{_id}
  339. }
  340. }
  341. } `, { id: JSON.stringify([{ _id }]) }))
  342. export const actionGetFindLiked = (_id) =>
  343. actionPromise('findLiked', gql(` query LikeFindPost($id:String!) {
  344. LikeFind(query:$id){
  345. owner { _id nick login
  346. avatar{_id url}
  347. }
  348. }
  349. } `, { id: JSON.stringify([{ "post._id": _id }]) }))
  350. //****************---Create Post ---*************************/
  351. export const actionFullSentPost = (images, title, text) => ({ type: 'CREATE_POST', images, text, title })
  352. export const actionUpsertPost = (upSertPostObj) =>
  353. actionPromise('sentPost', gql(`mutation sentPost($post: PostInput){
  354. PostUpsert(post: $post){
  355. _id images{_id url originalFileName}
  356. }
  357. }`, { post: upSertPostObj }))