The code powering m.abunchtell.com https://m.abunchtell.com
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 

335 líneas
7.6 KiB

  1. import api from '../api';
  2. import { importFetchedAccounts, importFetchedStatus } from './importer';
  3. export const REBLOG_REQUEST = 'REBLOG_REQUEST';
  4. export const REBLOG_SUCCESS = 'REBLOG_SUCCESS';
  5. export const REBLOG_FAIL = 'REBLOG_FAIL';
  6. export const FAVOURITE_REQUEST = 'FAVOURITE_REQUEST';
  7. export const FAVOURITE_SUCCESS = 'FAVOURITE_SUCCESS';
  8. export const FAVOURITE_FAIL = 'FAVOURITE_FAIL';
  9. export const UNREBLOG_REQUEST = 'UNREBLOG_REQUEST';
  10. export const UNREBLOG_SUCCESS = 'UNREBLOG_SUCCESS';
  11. export const UNREBLOG_FAIL = 'UNREBLOG_FAIL';
  12. export const UNFAVOURITE_REQUEST = 'UNFAVOURITE_REQUEST';
  13. export const UNFAVOURITE_SUCCESS = 'UNFAVOURITE_SUCCESS';
  14. export const UNFAVOURITE_FAIL = 'UNFAVOURITE_FAIL';
  15. export const REBLOGS_FETCH_REQUEST = 'REBLOGS_FETCH_REQUEST';
  16. export const REBLOGS_FETCH_SUCCESS = 'REBLOGS_FETCH_SUCCESS';
  17. export const REBLOGS_FETCH_FAIL = 'REBLOGS_FETCH_FAIL';
  18. export const FAVOURITES_FETCH_REQUEST = 'FAVOURITES_FETCH_REQUEST';
  19. export const FAVOURITES_FETCH_SUCCESS = 'FAVOURITES_FETCH_SUCCESS';
  20. export const FAVOURITES_FETCH_FAIL = 'FAVOURITES_FETCH_FAIL';
  21. export const PIN_REQUEST = 'PIN_REQUEST';
  22. export const PIN_SUCCESS = 'PIN_SUCCESS';
  23. export const PIN_FAIL = 'PIN_FAIL';
  24. export const UNPIN_REQUEST = 'UNPIN_REQUEST';
  25. export const UNPIN_SUCCESS = 'UNPIN_SUCCESS';
  26. export const UNPIN_FAIL = 'UNPIN_FAIL';
  27. export function reblog(status) {
  28. return function (dispatch, getState) {
  29. dispatch(reblogRequest(status));
  30. api(getState).post(`/api/v1/statuses/${status.get('id')}/reblog`).then(function (response) {
  31. // The reblog API method returns a new status wrapped around the original. In this case we are only
  32. // interested in how the original is modified, hence passing it skipping the wrapper
  33. dispatch(importFetchedStatus(response.data.reblog));
  34. dispatch(reblogSuccess(status));
  35. }).catch(function (error) {
  36. dispatch(reblogFail(status, error));
  37. });
  38. };
  39. };
  40. export function unreblog(status) {
  41. return (dispatch, getState) => {
  42. dispatch(unreblogRequest(status));
  43. api(getState).post(`/api/v1/statuses/${status.get('id')}/unreblog`).then(response => {
  44. dispatch(importFetchedStatus(response.data));
  45. dispatch(unreblogSuccess(status));
  46. }).catch(error => {
  47. dispatch(unreblogFail(status, error));
  48. });
  49. };
  50. };
  51. export function reblogRequest(status) {
  52. return {
  53. type: REBLOG_REQUEST,
  54. status: status,
  55. skipLoading: true,
  56. };
  57. };
  58. export function reblogSuccess(status) {
  59. return {
  60. type: REBLOG_SUCCESS,
  61. status: status,
  62. skipLoading: true,
  63. };
  64. };
  65. export function reblogFail(status, error) {
  66. return {
  67. type: REBLOG_FAIL,
  68. status: status,
  69. error: error,
  70. skipLoading: true,
  71. };
  72. };
  73. export function unreblogRequest(status) {
  74. return {
  75. type: UNREBLOG_REQUEST,
  76. status: status,
  77. skipLoading: true,
  78. };
  79. };
  80. export function unreblogSuccess(status) {
  81. return {
  82. type: UNREBLOG_SUCCESS,
  83. status: status,
  84. skipLoading: true,
  85. };
  86. };
  87. export function unreblogFail(status, error) {
  88. return {
  89. type: UNREBLOG_FAIL,
  90. status: status,
  91. error: error,
  92. skipLoading: true,
  93. };
  94. };
  95. export function favourite(status) {
  96. return function (dispatch, getState) {
  97. dispatch(favouriteRequest(status));
  98. api(getState).post(`/api/v1/statuses/${status.get('id')}/favourite`).then(function (response) {
  99. dispatch(importFetchedStatus(response.data));
  100. dispatch(favouriteSuccess(status));
  101. }).catch(function (error) {
  102. dispatch(favouriteFail(status, error));
  103. });
  104. };
  105. };
  106. export function unfavourite(status) {
  107. return (dispatch, getState) => {
  108. dispatch(unfavouriteRequest(status));
  109. api(getState).post(`/api/v1/statuses/${status.get('id')}/unfavourite`).then(response => {
  110. dispatch(importFetchedStatus(response.data));
  111. dispatch(unfavouriteSuccess(status));
  112. }).catch(error => {
  113. dispatch(unfavouriteFail(status, error));
  114. });
  115. };
  116. };
  117. export function favouriteRequest(status) {
  118. return {
  119. type: FAVOURITE_REQUEST,
  120. status: status,
  121. skipLoading: true,
  122. };
  123. };
  124. export function favouriteSuccess(status) {
  125. return {
  126. type: FAVOURITE_SUCCESS,
  127. status: status,
  128. skipLoading: true,
  129. };
  130. };
  131. export function favouriteFail(status, error) {
  132. return {
  133. type: FAVOURITE_FAIL,
  134. status: status,
  135. error: error,
  136. skipLoading: true,
  137. };
  138. };
  139. export function unfavouriteRequest(status) {
  140. return {
  141. type: UNFAVOURITE_REQUEST,
  142. status: status,
  143. skipLoading: true,
  144. };
  145. };
  146. export function unfavouriteSuccess(status) {
  147. return {
  148. type: UNFAVOURITE_SUCCESS,
  149. status: status,
  150. skipLoading: true,
  151. };
  152. };
  153. export function unfavouriteFail(status, error) {
  154. return {
  155. type: UNFAVOURITE_FAIL,
  156. status: status,
  157. error: error,
  158. skipLoading: true,
  159. };
  160. };
  161. export function fetchReblogs(id) {
  162. return (dispatch, getState) => {
  163. dispatch(fetchReblogsRequest(id));
  164. api(getState).get(`/api/v1/statuses/${id}/reblogged_by`).then(response => {
  165. dispatch(importFetchedAccounts(response.data));
  166. dispatch(fetchReblogsSuccess(id, response.data));
  167. }).catch(error => {
  168. dispatch(fetchReblogsFail(id, error));
  169. });
  170. };
  171. };
  172. export function fetchReblogsRequest(id) {
  173. return {
  174. type: REBLOGS_FETCH_REQUEST,
  175. id,
  176. };
  177. };
  178. export function fetchReblogsSuccess(id, accounts) {
  179. return {
  180. type: REBLOGS_FETCH_SUCCESS,
  181. id,
  182. accounts,
  183. };
  184. };
  185. export function fetchReblogsFail(id, error) {
  186. return {
  187. type: REBLOGS_FETCH_FAIL,
  188. error,
  189. };
  190. };
  191. export function fetchFavourites(id) {
  192. return (dispatch, getState) => {
  193. dispatch(fetchFavouritesRequest(id));
  194. api(getState).get(`/api/v1/statuses/${id}/favourited_by`).then(response => {
  195. dispatch(importFetchedAccounts(response.data));
  196. dispatch(fetchFavouritesSuccess(id, response.data));
  197. }).catch(error => {
  198. dispatch(fetchFavouritesFail(id, error));
  199. });
  200. };
  201. };
  202. export function fetchFavouritesRequest(id) {
  203. return {
  204. type: FAVOURITES_FETCH_REQUEST,
  205. id,
  206. };
  207. };
  208. export function fetchFavouritesSuccess(id, accounts) {
  209. return {
  210. type: FAVOURITES_FETCH_SUCCESS,
  211. id,
  212. accounts,
  213. };
  214. };
  215. export function fetchFavouritesFail(id, error) {
  216. return {
  217. type: FAVOURITES_FETCH_FAIL,
  218. error,
  219. };
  220. };
  221. export function pin(status) {
  222. return (dispatch, getState) => {
  223. dispatch(pinRequest(status));
  224. api(getState).post(`/api/v1/statuses/${status.get('id')}/pin`).then(response => {
  225. dispatch(importFetchedStatus(response.data));
  226. dispatch(pinSuccess(status));
  227. }).catch(error => {
  228. dispatch(pinFail(status, error));
  229. });
  230. };
  231. };
  232. export function pinRequest(status) {
  233. return {
  234. type: PIN_REQUEST,
  235. status,
  236. skipLoading: true,
  237. };
  238. };
  239. export function pinSuccess(status) {
  240. return {
  241. type: PIN_SUCCESS,
  242. status,
  243. skipLoading: true,
  244. };
  245. };
  246. export function pinFail(status, error) {
  247. return {
  248. type: PIN_FAIL,
  249. status,
  250. error,
  251. skipLoading: true,
  252. };
  253. };
  254. export function unpin (status) {
  255. return (dispatch, getState) => {
  256. dispatch(unpinRequest(status));
  257. api(getState).post(`/api/v1/statuses/${status.get('id')}/unpin`).then(response => {
  258. dispatch(importFetchedStatus(response.data));
  259. dispatch(unpinSuccess(status));
  260. }).catch(error => {
  261. dispatch(unpinFail(status, error));
  262. });
  263. };
  264. };
  265. export function unpinRequest(status) {
  266. return {
  267. type: UNPIN_REQUEST,
  268. status,
  269. skipLoading: true,
  270. };
  271. };
  272. export function unpinSuccess(status) {
  273. return {
  274. type: UNPIN_SUCCESS,
  275. status,
  276. skipLoading: true,
  277. };
  278. };
  279. export function unpinFail(status, error) {
  280. return {
  281. type: UNPIN_FAIL,
  282. status,
  283. error,
  284. skipLoading: true,
  285. };
  286. };