Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3283 | Rev 3286 | 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
 
3283 stevensc 42
export const deleteFeed = (url, id) => {
43
  return async (dispatch) => {
44
    const response = await axios.post(url)
45
    const { data, success } = response.data
46
 
47
    if (!success) {
48
      const err =
49
        typeof data === 'string' ? data : 'Error al borrar la publicación'
50
      throw new Error(err)
51
    }
52
 
3285 stevensc 53
    dispatch(deleteFeedSuccess(id))
3283 stevensc 54
    return id
55
  }
56
}
57
 
58
export const deleteFeedSuccess = (feedId) => ({
59
  type: feedActionTypes.DELETE_FEED,
60
  payload: feedId
61
})
62
 
5 stevensc 63
export const updateFeed = ({ feed, uuid }) => ({
64
  type: feedActionTypes.UPDATE_FEED,
1650 stevensc 65
  payload: { feed, uuid }
5 stevensc 66
})
67
 
68
export const setCurrentPage = (page) => ({
69
  type: feedActionTypes.SET_CURRENT_PAGE,
1650 stevensc 70
  payload: page
5 stevensc 71
})
72
 
73
export const fetchFeeds = (url, page) => {
74
  return (dispatch) => {
2194 stevensc 75
    if (!url || url.includes('undefined')) return
2137 stevensc 76
 
5 stevensc 77
    dispatch(loadFeeds())
2137 stevensc 78
 
2194 stevensc 79
    axios.get(url + '?page=' + page).then(({ data: response }) => {
80
      const { data, success } = response
5 stevensc 81
 
2194 stevensc 82
      if (!success) {
83
        throw new Error(
84
          'Error al obtener las publicaciones, por favor intente más tarde'
85
        )
86
      }
5 stevensc 87
 
2194 stevensc 88
      const feeds = data.current.items
89
      const currentPage = data.current.page
90
      const pages = data.total.pages
91
 
92
      dispatch(loadFeedsSuccess(feeds, currentPage, pages))
93
    })
5 stevensc 94
  }
95
}
1650 stevensc 96
 
1662 stevensc 97
export const removeComment = ({ feedId, commentId }) => ({
1650 stevensc 98
  type: feedActionTypes.REMOVE_COMMENT,
1662 stevensc 99
  payload: { feedId, commentId }
1650 stevensc 100
})
101
 
1662 stevensc 102
export const addComment = ({ feedId, comment }) => ({
1657 stevensc 103
  type: feedActionTypes.ADD_COMMENT,
1662 stevensc 104
  payload: { feedId, comment }
1650 stevensc 105
})