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