forked from cybrespace/mastodon
82 lines
1.6 KiB
JavaScript
82 lines
1.6 KiB
JavaScript
import fetch from 'isomorphic-fetch'
|
|
|
|
export const SET_TIMELINE = 'SET_TIMELINE';
|
|
export const ADD_STATUS = 'ADD_STATUS';
|
|
|
|
export const PUBLISH = 'PUBLISH';
|
|
export const PUBLISH_START = 'PUBLISH_START';
|
|
export const PUBLISH_SUCC = 'PUBLISH_SUCC';
|
|
export const PUBLISH_ERROR = 'PUBLISH_ERROR';
|
|
|
|
export function setTimeline(timeline, statuses) {
|
|
return {
|
|
type: SET_TIMELINE,
|
|
timeline: timeline,
|
|
statuses: statuses
|
|
};
|
|
}
|
|
|
|
export function addStatus(timeline, status) {
|
|
return {
|
|
type: ADD_STATUS,
|
|
timeline: timeline,
|
|
status: status
|
|
};
|
|
}
|
|
|
|
export function publishStart() {
|
|
return {
|
|
type: PUBLISH_START
|
|
};
|
|
}
|
|
|
|
export function publishError(error) {
|
|
return {
|
|
type: PUBLISH_ERROR,
|
|
error: error
|
|
};
|
|
}
|
|
|
|
export function publishSucc(status) {
|
|
return {
|
|
type: PUBLISH_SUCC,
|
|
status: status
|
|
};
|
|
}
|
|
|
|
export function publish(text, in_reply_to_id) {
|
|
return function (dispatch, getState) {
|
|
const access_token = getState().getIn(['meta', 'access_token']);
|
|
|
|
var data = new FormData();
|
|
|
|
data.append('status', text);
|
|
|
|
if (in_reply_to_id !== null) {
|
|
data.append('in_reply_to_id', in_reply_to_id);
|
|
}
|
|
|
|
dispatch(publishStart());
|
|
|
|
return fetch('/api/statuses', {
|
|
method: 'POST',
|
|
|
|
headers: {
|
|
'Authorization': `Bearer ${access_token}`
|
|
},
|
|
|
|
body: data
|
|
}).then(function (response) {
|
|
return response.json();
|
|
}).then(function (json) {
|
|
if (json.error) {
|
|
dispatch(publishError(json.error));
|
|
} else {
|
|
dispatch(publishSucc(json));
|
|
}
|
|
}).catch(function (error) {
|
|
dispatch(publishError(error));
|
|
});
|
|
};
|
|
}
|