Add reblog menu with force modal

This commit is contained in:
KMY 2023-05-18 12:25:56 +09:00
parent 3c2840510d
commit f832b5698a
7 changed files with 42 additions and 2 deletions

View file

@ -54,6 +54,14 @@ const mapDispatchToProps = dispatch => ({
}
},
onReblogForceModal (status) {
if (status.get('reblogged')) {
dispatch(unreblog(status));
} else {
dispatch(initBoostModal({ status, onReblog: this.onModalReblog }));
}
},
onFavourite (status) {
if (status.get('favourited')) {
dispatch(unfavourite(status));

View file

@ -61,6 +61,7 @@ class ActionBar extends React.PureComponent {
relationship: ImmutablePropTypes.map,
onReply: PropTypes.func.isRequired,
onReblog: PropTypes.func.isRequired,
onReblogForceModal: PropTypes.func.isRequired,
onFavourite: PropTypes.func.isRequired,
onEmojiReact: PropTypes.func.isRequired,
onBookmark: PropTypes.func.isRequired,
@ -89,6 +90,10 @@ class ActionBar extends React.PureComponent {
this.props.onReblog(this.props.status, e);
};
handleReblogForceModalClick = (e) => {
this.props.onReblogForceModal(this.props.status, e);
};
handleFavouriteClick = () => {
this.props.onFavourite(this.props.status);
};
@ -208,6 +213,8 @@ class ActionBar extends React.PureComponent {
menu.push({ text: intl.formatMessage(messages.copy), action: this.handleCopy });
menu.push({ text: intl.formatMessage(messages.embed), action: this.handleEmbed });
menu.push(null);
menu.push({ text: intl.formatMessage(messages.reblog), action: this.handleReblogForceModalClick });
menu.push(null);
}
if (writtenByMe) {

View file

@ -87,6 +87,14 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
}
},
onReblogForceModal (status) {
if (status.get('reblogged')) {
dispatch(unreblog(status));
} else {
dispatch(initBoostModal({ status, onReblog: this.onModalReblog }));
}
},
onFavourite (status) {
if (status.get('favourited')) {
dispatch(unfavourite(status));

View file

@ -310,7 +310,7 @@ class Status extends ImmutablePureComponent {
this.props.dispatch(reblog(status, privacy));
};
handleReblogClick = (status, e) => {
handleReblogClick = (status, e, force = false) => {
const { dispatch } = this.props;
const { signedIn } = this.context.identity;
@ -318,7 +318,7 @@ class Status extends ImmutablePureComponent {
if (status.get('reblogged')) {
dispatch(unreblog(status));
} else {
if ((e && e.shiftKey) || !boostModal) {
if (!force && ((e && e.shiftKey) || !boostModal)) {
this.handleModalReblog(status);
} else {
dispatch(initBoostModal({ status, onReblog: this.handleModalReblog }));
@ -333,6 +333,10 @@ class Status extends ImmutablePureComponent {
}
};
handleReblogForceModalClick = (status, e) => {
this.handleReblogClick(status, e, true);
};
handleBookmarkClick = (status) => {
if (status.get('bookmarked')) {
this.props.dispatch(unbookmark(status));
@ -678,6 +682,7 @@ class Status extends ImmutablePureComponent {
onFavourite={this.handleFavouriteClick}
onEmojiReact={this.handleEmojiReact}
onReblog={this.handleReblogClick}
onReblogForceModal={this.handleReblogForceModalClick}
onBookmark={this.handleBookmarkClick}
onDelete={this.handleDeleteClick}
onEdit={this.handleEditClick}