|
|
|
@ -75,6 +75,8 @@ export const INIT_MEDIA_EDIT_MODAL = 'INIT_MEDIA_EDIT_MODAL';
|
|
|
|
|
export const COMPOSE_CHANGE_MEDIA_DESCRIPTION = 'COMPOSE_CHANGE_MEDIA_DESCRIPTION';
|
|
|
|
|
export const COMPOSE_CHANGE_MEDIA_FOCUS = 'COMPOSE_CHANGE_MEDIA_FOCUS';
|
|
|
|
|
|
|
|
|
|
export const COMPOSE_SET_STATUS = 'COMPOSE_SET_STATUS';
|
|
|
|
|
|
|
|
|
|
const messages = defineMessages({
|
|
|
|
|
uploadErrorLimit: { id: 'upload_error.limit', defaultMessage: 'File upload limit exceeded.' },
|
|
|
|
|
uploadErrorPoll: { id: 'upload_error.poll', defaultMessage: 'File upload not allowed with polls.' },
|
|
|
|
@ -88,6 +90,15 @@ export const ensureComposeIsVisible = (getState, routerHistory) => {
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export function setComposeToStatus(status, text, spoiler_text) {
|
|
|
|
|
return{
|
|
|
|
|
type: COMPOSE_SET_STATUS,
|
|
|
|
|
status,
|
|
|
|
|
text,
|
|
|
|
|
spoiler_text,
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export function changeCompose(text) {
|
|
|
|
|
return {
|
|
|
|
|
type: COMPOSE_CHANGE,
|
|
|
|
@ -150,8 +161,9 @@ export function directCompose(account, routerHistory) {
|
|
|
|
|
|
|
|
|
|
export function submitCompose(routerHistory) {
|
|
|
|
|
return function (dispatch, getState) {
|
|
|
|
|
let status = getState().getIn(['compose', 'text'], '');
|
|
|
|
|
let media = getState().getIn(['compose', 'media_attachments']);
|
|
|
|
|
let status = getState().getIn(['compose', 'text'], '');
|
|
|
|
|
const media = getState().getIn(['compose', 'media_attachments']);
|
|
|
|
|
const statusId = getState().getIn(['compose', 'id'], null);
|
|
|
|
|
const spoilers = getState().getIn(['compose', 'spoiler']) || getState().getIn(['local_settings', 'always_show_spoilers_field']);
|
|
|
|
|
let spoilerText = spoilers ? getState().getIn(['compose', 'spoiler_text'], '') : '';
|
|
|
|
|
|
|
|
|
@ -159,20 +171,25 @@ export function submitCompose(routerHistory) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dispatch(submitComposeRequest());
|
|
|
|
|
if (getState().getIn(['compose', 'advanced_options', 'do_not_federate'])) {
|
|
|
|
|
status = status + ' 👁️';
|
|
|
|
|
}
|
|
|
|
|
api(getState).post('/api/v1/statuses', {
|
|
|
|
|
status,
|
|
|
|
|
content_type: getState().getIn(['compose', 'content_type']),
|
|
|
|
|
in_reply_to_id: getState().getIn(['compose', 'in_reply_to'], null),
|
|
|
|
|
media_ids: media.map(item => item.get('id')),
|
|
|
|
|
sensitive: getState().getIn(['compose', 'sensitive']) || (spoilerText.length > 0 && media.size !== 0),
|
|
|
|
|
spoiler_text: spoilerText,
|
|
|
|
|
visibility: getState().getIn(['compose', 'privacy']),
|
|
|
|
|
poll: getState().getIn(['compose', 'poll'], null),
|
|
|
|
|
}, {
|
|
|
|
|
|
|
|
|
|
dispatch(submitComposeRequest());
|
|
|
|
|
|
|
|
|
|
api(getState).request({
|
|
|
|
|
url: statusId === null ? '/api/v1/statuses' : `/api/v1/statuses/${statusId}`,
|
|
|
|
|
method: statusId === null ? 'post' : 'put',
|
|
|
|
|
data: {
|
|
|
|
|
status,
|
|
|
|
|
content_type: getState().getIn(['compose', 'content_type']),
|
|
|
|
|
in_reply_to_id: getState().getIn(['compose', 'in_reply_to'], null),
|
|
|
|
|
media_ids: media.map(item => item.get('id')),
|
|
|
|
|
sensitive: getState().getIn(['compose', 'sensitive']) || (spoilerText.length > 0 && media.size !== 0),
|
|
|
|
|
spoiler_text: spoilerText,
|
|
|
|
|
visibility: getState().getIn(['compose', 'privacy']),
|
|
|
|
|
poll: getState().getIn(['compose', 'poll'], null),
|
|
|
|
|
},
|
|
|
|
|
headers: {
|
|
|
|
|
'Idempotency-Key': getState().getIn(['compose', 'idempotencyKey']),
|
|
|
|
|
},
|
|
|
|
@ -202,14 +219,16 @@ export function submitCompose(routerHistory) {
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
insertIfOnline('home');
|
|
|
|
|
if (statusId === null) {
|
|
|
|
|
insertIfOnline('home');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (response.data.in_reply_to_id === null && response.data.visibility === 'public') {
|
|
|
|
|
if (statusId === null && response.data.in_reply_to_id === null && response.data.visibility === 'public') {
|
|
|
|
|
insertIfOnline('community');
|
|
|
|
|
if (!response.data.local_only) {
|
|
|
|
|
insertIfOnline('public');
|
|
|
|
|
}
|
|
|
|
|
} else if (response.data.visibility === 'direct') {
|
|
|
|
|
} else if (statusId === null && response.data.visibility === 'direct') {
|
|
|
|
|
insertIfOnline('direct');
|
|
|
|
|
}
|
|
|
|
|
}).catch(function (error) {
|
|
|
|
|