import api from '../api' export const COMPOSE_CHANGE = 'COMPOSE_CHANGE'; export const COMPOSE_SUBMIT = 'COMPOSE_SUBMIT'; export const COMPOSE_SUBMIT_REQUEST = 'COMPOSE_SUBMIT_REQUEST'; export const COMPOSE_SUBMIT_SUCCESS = 'COMPOSE_SUBMIT_SUCCESS'; export const COMPOSE_SUBMIT_FAIL = 'COMPOSE_SUBMIT_FAIL'; export const COMPOSE_REPLY = 'COMPOSE_REPLY'; export const COMPOSE_REPLY_CANCEL = 'COMPOSE_REPLY_CANCEL'; export const COMPOSE_UPLOAD = 'COMPOSE_UPLOAD'; export const COMPOSE_UPLOAD_REQUEST = 'COMPOSE_UPLOAD_REQUEST'; export const COMPOSE_UPLOAD_SUCCESS = 'COMPOSE_UPLOAD_SUCCESS'; export const COMPOSE_UPLOAD_FAIL = 'COMPOSE_UPLOAD_FAIL'; export const COMPOSE_UPLOAD_PROGRESS = 'COMPOSE_UPLOAD_PROGRESS'; export const COMPOSE_UPLOAD_UNDO = 'COMPOSE_UPLOAD_UNDO'; export function changeCompose(text) { return { type: COMPOSE_CHANGE, text: text }; } export function replyCompose(status) { return { type: COMPOSE_REPLY, status: status }; } export function cancelReplyCompose() { return { type: COMPOSE_REPLY_CANCEL }; } export function submitCompose() { return function (dispatch, getState) { dispatch(submitComposeRequest()); api(getState).post('/api/statuses', { status: getState().getIn(['compose', 'text'], ''), in_reply_to_id: getState().getIn(['compose', 'in_reply_to'], null), media_ids: getState().getIn(['compose', 'media_attachments']).map(item => item.get('id')) }).then(function (response) { dispatch(submitComposeSuccess(response.data)); }).catch(function (error) { dispatch(submitComposeFail(error)); }); }; } export function submitComposeRequest() { return { type: COMPOSE_SUBMIT_REQUEST }; } export function submitComposeSuccess(status) { return { type: COMPOSE_SUBMIT_SUCCESS, status: status }; } export function submitComposeFail(error) { return { type: COMPOSE_SUBMIT_FAIL, error: error }; } export function uploadCompose(files) { return function (dispatch, getState) { dispatch(uploadComposeRequest()); let data = new FormData(); data.append('file', files[0]); api(getState).post('/api/media', data, { onUploadProgress: function (e) { dispatch(uploadComposeProgress(e.loaded, e.total)); } }).then(function (response) { dispatch(uploadComposeSuccess(response.data)); }).catch(function (error) { dispatch(uploadComposeFail(error)); }); }; } export function uploadComposeRequest() { return { type: COMPOSE_UPLOAD_REQUEST }; } export function uploadComposeProgress(loaded, total) { return { type: COMPOSE_UPLOAD_PROGRESS, loaded: loaded, total: total }; } export function uploadComposeSuccess(media) { return { type: COMPOSE_UPLOAD_SUCCESS, media: media }; } export function uploadComposeFail(error) { return { type: COMPOSE_UPLOAD_FAIL, error: error }; } export function undoUploadCompose(media_id) { return { type: COMPOSE_UPLOAD_UNDO, media_id: media_id }; }