Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3286 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3432 stevensc 1
import { axios } from "../../utils";
2
import { feedActionTypes } from "./feed.types";
5 stevensc 3
 
4
export const setTimelineUrl = (url) => ({
5
  type: feedActionTypes.SET_TIMELINE_URL,
3432 stevensc 6
  payload: url,
7
});
5 stevensc 8
 
9
export const loadFeeds = () => ({
3432 stevensc 10
  type: feedActionTypes.LOAD_FEEDS,
11
});
5 stevensc 12
 
13
export const loadFeedsSuccess = (feeds, currentPage, pages) => ({
14
  type: feedActionTypes.LOAD_FEEDS_SUCCESS,
3432 stevensc 15
  payload: { feeds, currentPage, pages },
16
});
5 stevensc 17
 
3280 stevensc 18
export const addFeed = (url, feed, shareId) => {
19
  return async (dispatch) => {
3432 stevensc 20
    const form = new FormData();
21
    const feedFields = Object.keys(feed);
3280 stevensc 22
 
3432 stevensc 23
    feedFields.forEach((field) => form.append(field, feed[field]));
3280 stevensc 24
 
3432 stevensc 25
    const response = await axios.post(url, form);
26
    const { data, success } = response.data;
3280 stevensc 27
 
28
    if (!success) {
3432 stevensc 29
      const error = typeof data === "string" ? data : "Error al publicar";
30
      throw new Error(error);
3280 stevensc 31
    }
32
 
3432 stevensc 33
    dispatch(addFeedSuccess(data, shareId));
34
  };
35
};
3280 stevensc 36
 
3432 stevensc 37
export const addFeedSuccess = (feed, feedSharedId = "") => ({
5 stevensc 38
  type: feedActionTypes.ADD_FEED,
3432 stevensc 39
  payload: { feed, feedSharedId },
40
});
5 stevensc 41
 
3283 stevensc 42
export const deleteFeed = (url, id) => {
43
  return async (dispatch) => {
3432 stevensc 44
    const response = await axios.post(url);
45
    const { data, success } = response.data;
3283 stevensc 46
 
47
    if (!success) {
48
      const err =
3432 stevensc 49
        typeof data === "string" ? data : "Error al borrar la publicación";
50
      throw new Error(err);
3283 stevensc 51
    }
52
 
3432 stevensc 53
    dispatch(deleteFeedSuccess(id));
54
    return data;
55
  };
56
};
3283 stevensc 57
 
58
export const deleteFeedSuccess = (feedId) => ({
59
  type: feedActionTypes.DELETE_FEED,
3432 stevensc 60
  payload: feedId,
61
});
3283 stevensc 62
 
5 stevensc 63
export const updateFeed = ({ feed, uuid }) => ({
64
  type: feedActionTypes.UPDATE_FEED,
3432 stevensc 65
  payload: { feed, uuid },
66
});
5 stevensc 67
 
68
export const setCurrentPage = (page) => ({
69
  type: feedActionTypes.SET_CURRENT_PAGE,
3432 stevensc 70
  payload: page,
71
});
5 stevensc 72
 
73
export const fetchFeeds = (url, page) => {
74
  return (dispatch) => {
3432 stevensc 75
    if (!url || url.includes("undefined")) return;
2137 stevensc 76
 
3432 stevensc 77
    dispatch(loadFeeds());
2137 stevensc 78
 
3432 stevensc 79
    axios.get(url + "?page=" + page).then((response) => {
80
      const { data, success } = response.data;
5 stevensc 81
 
2194 stevensc 82
      if (!success) {
83
        throw new Error(
3432 stevensc 84
          "Error al obtener las publicaciones, por favor intente más tarde"
85
        );
2194 stevensc 86
      }
5 stevensc 87
 
3432 stevensc 88
      const feeds = data.current.items;
89
      const currentPage = data.current.page;
90
      const pages = data.total.pages;
2194 stevensc 91
 
3432 stevensc 92
      dispatch(loadFeedsSuccess(feeds, currentPage, pages));
93
    });
94
  };
95
};
1650 stevensc 96
 
1662 stevensc 97
export const removeComment = ({ feedId, commentId }) => ({
1650 stevensc 98
  type: feedActionTypes.REMOVE_COMMENT,
3432 stevensc 99
  payload: { feedId, commentId },
100
});
1650 stevensc 101
 
1662 stevensc 102
export const addComment = ({ feedId, comment }) => ({
1657 stevensc 103
  type: feedActionTypes.ADD_COMMENT,
3432 stevensc 104
  payload: { feedId, comment },
105
});