index.js 1.4 KB

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