[Glitch] Show compose form on delete & redraft when in mobile layout

Port 025fbb8285 to glitch-soc
This commit is contained in:
Thibaut Girka 2018-08-31 16:41:58 +02:00 committed by ThibG
parent 0f1db47a7e
commit 130bdb5ee8
5 changed files with 15 additions and 11 deletions

View File

@ -79,7 +79,7 @@ export function redraft(status) {
}; };
}; };
export function deleteStatus(id, withRedraft = false) { export function deleteStatus(id, router, withRedraft = false) {
return (dispatch, getState) => { return (dispatch, getState) => {
const status = getState().getIn(['statuses', id]); const status = getState().getIn(['statuses', id]);
@ -91,6 +91,10 @@ export function deleteStatus(id, withRedraft = false) {
if (withRedraft) { if (withRedraft) {
dispatch(redraft(status)); dispatch(redraft(status));
if (!getState().getIn(['compose', 'mounted'])) {
router.push('/statuses/new');
}
} }
}).catch(error => { }).catch(error => {
dispatch(deleteStatusFail(id, error)); dispatch(deleteStatusFail(id, error));

View File

@ -102,11 +102,11 @@ export default class StatusActionBar extends ImmutablePureComponent {
} }
handleDeleteClick = () => { handleDeleteClick = () => {
this.props.onDelete(this.props.status); this.props.onDelete(this.props.status, this.context.router.history);
} }
handleRedraftClick = () => { handleRedraftClick = () => {
this.props.onDelete(this.props.status, true); this.props.onDelete(this.props.status, this.context.router.history, true);
} }
handlePinClick = () => { handlePinClick = () => {

View File

@ -122,14 +122,14 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
dispatch(openModal('EMBED', { url: status.get('url') })); dispatch(openModal('EMBED', { url: status.get('url') }));
}, },
onDelete (status, withRedraft = false) { onDelete (status, history, withRedraft = false) {
if (!deleteModal) { if (!deleteModal) {
dispatch(deleteStatus(status.get('id'), withRedraft)); dispatch(deleteStatus(status.get('id'), history, withRedraft));
} else { } else {
dispatch(openModal('CONFIRM', { dispatch(openModal('CONFIRM', {
message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage), message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage),
confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm), confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm),
onConfirm: () => dispatch(deleteStatus(status.get('id'), withRedraft)), onConfirm: () => dispatch(deleteStatus(status.get('id'), history, withRedraft)),
})); }));
} }
}, },

View File

@ -70,11 +70,11 @@ export default class ActionBar extends React.PureComponent {
} }
handleDeleteClick = () => { handleDeleteClick = () => {
this.props.onDelete(this.props.status); this.props.onDelete(this.props.status, this.context.router.history);
} }
handleRedraftClick = () => { handleRedraftClick = () => {
this.props.onDelete(this.props.status, true); this.props.onDelete(this.props.status, this.context.router.history, true);
} }
handleDirectClick = () => { handleDirectClick = () => {

View File

@ -159,16 +159,16 @@ export default class Status extends ImmutablePureComponent {
} }
} }
handleDeleteClick = (status, withRedraft = false) => { handleDeleteClick = (status, history, withRedraft = false) => {
const { dispatch, intl } = this.props; const { dispatch, intl } = this.props;
if (!deleteModal) { if (!deleteModal) {
dispatch(deleteStatus(status.get('id'), withRedraft)); dispatch(deleteStatus(status.get('id'), history, withRedraft));
} else { } else {
dispatch(openModal('CONFIRM', { dispatch(openModal('CONFIRM', {
message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage), message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage),
confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm), confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm),
onConfirm: () => dispatch(deleteStatus(status.get('id'), withRedraft)), onConfirm: () => dispatch(deleteStatus(status.get('id'), history, withRedraft)),
})); }));
} }
} }