|
|
|
@ -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) { |
|
|
|
|