12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import {
- actionChangeSubscribe,
- actionGetFollowers,
- actionGetFollowing,
- } from '../../../actions/query/subscribeQuery'
- import { promiseWorker } from '../promise'
- import { put, takeEvery, call, select } from 'redux-saga/effects'
- import {
- actionChangeFollowingType,
- actionChangeFollowersType,
- } from '../../../actions/types/subscribeTypes'
- function* changeSubscribeWorker({ followId, checkFollowId }) {
- const {
- myData: {
- aboutMe: { _id, following },
- },
- } = yield select()
- const oldFollowing = checkFollowId
- ? {
- _id,
- following: [
- ...(following || [])
- .filter((item) => item._id !== followId)
- .map(({ _id }) => ({ _id })),
- ],
- }
- : {
- _id,
- following: [
- ...(following || []).map(({ _id }) => ({ _id })),
- { _id: followId },
- ],
- }
- yield call(promiseWorker, actionChangeSubscribe(oldFollowing))
- const updateUserFollowers = yield call(
- promiseWorker,
- actionGetFollowers(followId),
- )
- const updateMyFollowing = yield call(promiseWorker, actionGetFollowing(_id))
- if (updateMyFollowing)
- yield put(actionChangeFollowingType(updateMyFollowing?.following))
- if (updateUserFollowers)
- yield put(actionChangeFollowersType(updateUserFollowers?.followers))
- }
- export function* changeSubscribeWatcher() {
- yield takeEvery('CHANGE_SUBSCRIBE', changeSubscribeWorker)
- }
|