index.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import {
  2. actionChangeSubscribe,
  3. actionGetFollowers,
  4. actionGetFollowing,
  5. } from '../../../actions/query/subscribeQuery'
  6. import { promiseWorker } from '../promise'
  7. import { put, takeEvery, call, select } from 'redux-saga/effects'
  8. import {
  9. actionChangeFollowingType,
  10. actionChangeFollowersType,
  11. } from '../../../actions/types/subscribeTypes'
  12. function* changeSubscribeWorker({ followId, checkFollowId }) {
  13. const {
  14. myData: {
  15. aboutMe: { _id, following },
  16. },
  17. } = yield select()
  18. console.log('my following', following)
  19. console.log('check follow id', checkFollowId)
  20. console.log('my id', _id)
  21. const oldFollowing = checkFollowId
  22. ? {
  23. _id,
  24. following: [
  25. ...(following || [])
  26. .filter((item) => item._id !== followId)
  27. .map(({ _id }) => ({ _id })),
  28. ],
  29. }
  30. : {
  31. _id,
  32. following: [
  33. ...(following || []).map(({ _id }) => ({ _id })),
  34. { _id: followId },
  35. ],
  36. }
  37. yield call(promiseWorker, actionChangeSubscribe(oldFollowing))
  38. const updateUserFollowers = yield call(
  39. promiseWorker,
  40. actionGetFollowers(followId),
  41. )
  42. const updateMyFollowing = yield call(promiseWorker, actionGetFollowing(_id))
  43. if (updateMyFollowing)
  44. yield put(actionChangeFollowingType(updateMyFollowing?.following))
  45. if (updateUserFollowers)
  46. yield put(actionChangeFollowersType(updateUserFollowers?.followers))
  47. }
  48. export function* changeSubscribeWatcher() {
  49. yield takeEvery('CHANGE_SUBSCRIBE', changeSubscribeWorker)
  50. }