Proyectos de Subversion LeadersLinked - SPA

Rev

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

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