const handleGetArticle = _id => async dispatch => { dispatch(fetchDetailRequest()); try { const { data } = await api.getArticle(_id); const normalizedData = normalize(data, article); dispatch(addArticles(normalizedData.entities.articles)); dispatch(addUsers(normalizedData.entities.users)); dispatch(fetchDetailSuccess()); } catch (error) { dispatch(fetchDetailFailure(error)); } }
const handleFetchFeed = () => async (dispatch, getState) => { const { feed } = getState(); if (feed.isFetching) { return; } dispatch(fetchFeedRequest()); try { const { data } = await api.getFeed(); const normalizedData = normalize(data, [article]); dispatch(addArticles(normalizedData.entities.articles)); dispatch(addUsers(normalizedData.entities.users)); dispatch(fetchFeedSuccess(normalizedData.result)); } catch (error) { console.log(error); dispatch(fetchFeedFailure(error)); } }
const handleFetchUserFeed = userId => async (dispatch, getState) => { const { userFeed } = getState(); if (userFeed.isFetching) { return; } dispatch(fetchUserFeedRequest()); try { const response = await api.getUser(userId); const normalizedUser = { [response.data._id]: response.data }; dispatch(addUsers(normalizedUser)); const { data } = await api.getUserFeed(userId); const normalizedData = normalize(data, [article]); dispatch(addArticles(normalizedData.entities.articles)); dispatch(fetchUserFeedSuccess(userId, normalizedData.result)); } catch (error) { console.log(error); dispatch(fetchUserFeedFailure(error)); } }