Rev 3432 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import { axios } from '../../utils';
import { feedActionTypes } from './feed.types';
export const setTimelineUrl = (url) => ({
type: feedActionTypes.SET_TIMELINE_URL,
payload: url
});
export const loadFeeds = () => ({
type: feedActionTypes.LOAD_FEEDS
});
export const loadFeedsSuccess = (feeds, currentPage, pages) => ({
type: feedActionTypes.LOAD_FEEDS_SUCCESS,
payload: { feeds, currentPage, pages }
});
export const addFeed = (url, feed, shareId) => {
return async (dispatch) => {
const form = new FormData();
const feedFields = Object.keys(feed);
feedFields.forEach((field) => form.append(field, feed[field]));
const response = await axios.post(url, form);
const { data, success } = response.data;
if (!success) {
const error = typeof data === 'string' ? data : 'Error al publicar';
throw new Error(error);
}
dispatch(addFeedSuccess(data, shareId));
};
};
export const addFeedSuccess = (feed, feedSharedId = '') => ({
type: feedActionTypes.ADD_FEED,
payload: { feed, feedSharedId }
});
export const deleteFeed = (url, id) => {
return async (dispatch) => {
const response = await axios.post(url);
const { data, success } = response.data;
if (!success) {
const err = typeof data === 'string' ? data : 'Error al borrar la publicación';
throw new Error(err);
}
dispatch(deleteFeedSuccess(id));
return data;
};
};
export const deleteFeedSuccess = (feedId) => ({
type: feedActionTypes.DELETE_FEED,
payload: feedId
});
export const updateFeed = ({ feed, uuid }) => ({
type: feedActionTypes.UPDATE_FEED,
payload: { feed, uuid }
});
export const setCurrentPage = (page) => ({
type: feedActionTypes.SET_CURRENT_PAGE,
payload: page
});
export const fetchFeeds = (url, page) => {
return (dispatch) => {
if (!url || url.includes('undefined')) return;
dispatch(loadFeeds());
axios.get(url + '?page=' + page).then((response) => {
const { data, success } = response.data;
if (!success) {
throw new Error('Error al obtener las publicaciones, por favor intente más tarde');
}
const feeds = data.current.items;
const currentPage = data.current.page;
const pages = data.total.pages;
dispatch(loadFeedsSuccess(feeds, currentPage, pages));
});
};
};
export const removeComment = ({ feedId, commentId }) => ({
type: feedActionTypes.REMOVE_COMMENT,
payload: { feedId, commentId }
});
export const addComment = ({ feedId, comment }) => ({
type: feedActionTypes.ADD_COMMENT,
payload: { feedId, comment }
});