From 595c8dda60746e171dbbb905b355561334e2a5c8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 1 Sep 2016 13:21:48 +0200 Subject: Favouriting works, reblogging is a little broken because of --- .../javascripts/components/actions/compose.jsx | 5 +- .../components/actions/interactions.jsx | 81 ++++++++++++++++++++++ 2 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 app/assets/javascripts/components/actions/interactions.jsx (limited to 'app/assets/javascripts/components/actions') diff --git a/app/assets/javascripts/components/actions/compose.jsx b/app/assets/javascripts/components/actions/compose.jsx index cf5345078..de4fe7445 100644 --- a/app/assets/javascripts/components/actions/compose.jsx +++ b/app/assets/javascripts/components/actions/compose.jsx @@ -49,9 +49,10 @@ export function submitComposeRequest() { }; } -export function submitComposeSuccess(response) { +export function submitComposeSuccess(status) { return { - type: COMPOSE_SUBMIT_SUCCESS + type: COMPOSE_SUBMIT_SUCCESS, + status: status }; } diff --git a/app/assets/javascripts/components/actions/interactions.jsx b/app/assets/javascripts/components/actions/interactions.jsx new file mode 100644 index 000000000..281d3be87 --- /dev/null +++ b/app/assets/javascripts/components/actions/interactions.jsx @@ -0,0 +1,81 @@ +import api from '../api' + +export const REBLOG = 'REBLOG'; +export const REBLOG_REQUEST = 'REBLOG_REQUEST'; +export const REBLOG_SUCCESS = 'REBLOG_SUCCESS'; +export const REBLOG_FAIL = 'REBLOG_FAIL'; + +export const FAVOURITE = 'FAVOURITE'; +export const FAVOURITE_REQUEST = 'FAVOURITE_REQUEST'; +export const FAVOURITE_SUCCESS = 'FAVOURITE_SUCCESS'; +export const FAVOURITE_FAIL = 'FAVOURITE_FAIL'; + +export function reblog(status) { + return function (dispatch, getState) { + dispatch(reblogRequest(status)); + + api(getState).post(`/api/statuses/${status.get('id')}/reblog`).then(function (response) { + dispatch(reblogSuccess(status, response.data)); + }).catch(function (error) { + dispatch(reblogFail(status, error)); + }); + }; +} + +export function reblogRequest(status) { + return { + type: REBLOG_REQUEST, + status: status + }; +} + +export function reblogSuccess(status, response) { + return { + type: REBLOG_SUCCESS, + status: status, + response: response + }; +} + +export function reblogFail(status, error) { + return { + type: REBLOG_FAIL, + status: status, + error: error + }; +} + +export function favourite(status) { + return function (dispatch, getState) { + dispatch(favouriteRequest(status)); + + api(getState).post(`/api/statuses/${status.get('id')}/favourite`).then(function (response) { + dispatch(favouriteSuccess(status, response.data)); + }).catch(function (error) { + dispatch(favouriteFail(status, error)); + }); + }; +} + +export function favouriteRequest(status) { + return { + type: FAVOURITE_REQUEST, + status: status + }; +} + +export function favouriteSuccess(status, response) { + return { + type: FAVOURITE_SUCCESS, + status: status, + response: response + }; +} + +export function favouriteFail(status, error) { + return { + type: FAVOURITE_FAIL, + status: status, + error: error + }; +} -- cgit