Replace link to /reblogs, require authentication

Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
strip-front-mentions
marcin mikołajczak 2022-01-06 20:55:06 +01:00
rodzic f28a6c5256
commit bf3272d113
4 zmienionych plików z 32 dodań i 9 usunięć

Wyświetl plik

@ -70,6 +70,7 @@ class StatusActionBar extends ImmutablePureComponent {
static propTypes = { static propTypes = {
status: ImmutablePropTypes.map.isRequired, status: ImmutablePropTypes.map.isRequired,
onOpenUnauthorizedModal: PropTypes.func.isRequired, onOpenUnauthorizedModal: PropTypes.func.isRequired,
onOpenReblogsModal: PropTypes.func.isRequired,
onReply: PropTypes.func, onReply: PropTypes.func,
onFavourite: PropTypes.func, onFavourite: PropTypes.func,
onBookmark: PropTypes.func, onBookmark: PropTypes.func,
@ -294,6 +295,13 @@ class StatusActionBar extends ImmutablePureComponent {
this.props.onToggleStatusSensitivity(this.props.status); this.props.onToggleStatusSensitivity(this.props.status);
} }
handleOpenReblogsModal = () => {
const { me, status, onOpenUnauthorizedModal, onOpenReblogsModal } = this.props;
if (!me) onOpenUnauthorizedModal();
else onOpenReblogsModal(status.getIn(['account', 'acct']), status.get('id'));
}
_makeMenu = (publicStatus) => { _makeMenu = (publicStatus) => {
const { status, intl, withDismiss, withGroupAdmin, me, features, isStaff, isAdmin } = this.props; const { status, intl, withDismiss, withGroupAdmin, me, features, isStaff, isAdmin } = this.props;
const mutingConversation = status.get('muted'); const mutingConversation = status.get('muted');
@ -544,7 +552,7 @@ class StatusActionBar extends ImmutablePureComponent {
</div> </div>
<div className='status__action-bar__counter'> <div className='status__action-bar__counter'>
<IconButton className='status__action-bar-button' disabled={!publicStatus} active={status.get('reblogged')} pressed={status.get('reblogged')} title={!publicStatus ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} src={reblogIcon} onClick={this.handleReblogClick} /> <IconButton className='status__action-bar-button' disabled={!publicStatus} active={status.get('reblogged')} pressed={status.get('reblogged')} title={!publicStatus ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} src={reblogIcon} onClick={this.handleReblogClick} />
{reblogCount !== 0 && <Link to={`/@${status.getIn(['account', 'acct'])}/posts/${status.get('id')}/reblogs`} className='detailed-status__link'>{reblogCount}</Link>} {reblogCount !== 0 && <span className='detailed-status__link' type='button' role='presentation' onClick={this.handleOpenReblogsModal}>{reblogCount}</span>}
</div> </div>
<div <div
className='status__action-bar__counter status__action-bar__counter--favourite' className='status__action-bar__counter status__action-bar__counter--favourite'
@ -607,6 +615,12 @@ const mapDispatchToProps = (dispatch, { status }) => ({
ap_id: status.get('url'), ap_id: status.get('url'),
})); }));
}, },
onOpenReblogsModal(username, statusId) {
dispatch(openModal('REBLOGS', {
username,
statusId,
}));
},
}); });
export default injectIntl( export default injectIntl(

Wyświetl plik

@ -13,15 +13,20 @@ import { getSoapboxConfig } from 'soapbox/actions/soapbox';
import { openModal } from 'soapbox/actions/modal'; import { openModal } from 'soapbox/actions/modal';
const mapStateToProps = state => { const mapStateToProps = state => {
const me = state.get('me');
const instance = state.get('instance'); const instance = state.get('instance');
return { return {
me,
allowedEmoji: getSoapboxConfig(state).get('allowedEmoji'), allowedEmoji: getSoapboxConfig(state).get('allowedEmoji'),
features: getFeatures(instance), features: getFeatures(instance),
}; };
}; };
const mapDispatchToProps = (dispatch) => ({ const mapDispatchToProps = (dispatch) => ({
onOpenUnauthorizedModal() {
dispatch(openModal('UNAUTHORIZED'));
},
onOpenReblogsModal(username, statusId) { onOpenReblogsModal(username, statusId) {
dispatch(openModal('REBLOGS', { dispatch(openModal('REBLOGS', {
username, username,
@ -66,9 +71,10 @@ class StatusInteractionBar extends ImmutablePureComponent {
} }
handleOpenReblogsModal = () => { handleOpenReblogsModal = () => {
const { status, onOpenReblogsModal } = this.props; const { me, status, onOpenUnauthorizedModal, onOpenReblogsModal } = this.props;
onOpenReblogsModal(status.getIn(['account', 'acct']), status.get('id')); if (!me) onOpenUnauthorizedModal();
else onOpenReblogsModal(status.getIn(['account', 'acct']), status.get('id'));
} }
getReposts = () => { getReposts = () => {
@ -94,9 +100,10 @@ class StatusInteractionBar extends ImmutablePureComponent {
} }
handleOpenFavouritesModal = () => { handleOpenFavouritesModal = () => {
const { status, onOpenFavouritesModal } = this.props; const { me, status, onOpenUnauthorizedModal, onOpenFavouritesModal } = this.props;
onOpenFavouritesModal(status.getIn(['account', 'acct']), status.get('id')); if (!me) onOpenUnauthorizedModal();
else onOpenFavouritesModal(status.getIn(['account', 'acct']), status.get('id'));
} }
getFavourites = () => { getFavourites = () => {
@ -136,9 +143,10 @@ class StatusInteractionBar extends ImmutablePureComponent {
} }
handleOpenReactionsModal = (reaction) => () => { handleOpenReactionsModal = (reaction) => () => {
const { status, onOpenReactionsModal } = this.props; const { me, status, onOpenUnauthorizedModal, onOpenReactionsModal } = this.props;
onOpenReactionsModal(status.getIn(['account', 'acct']), status.get('id'), reaction.get('name')); if (!me) onOpenUnauthorizedModal();
else onOpenReactionsModal(status.getIn(['account', 'acct']), status.get('id'), reaction.get('name'));
} }
getEmojiReacts = () => { getEmojiReacts = () => {

Wyświetl plik

@ -146,9 +146,9 @@ class UnauthorizedModal extends ImmutablePureComponent {
} }
render() { render() {
const { intl, features, siteTitle } = this.props; const { intl, features, siteTitle, action } = this.props;
if (features.remoteInteractionsAPI && features.federating) return this.renderRemoteInteractions(); if (action && features.remoteInteractionsAPI && features.federating) return this.renderRemoteInteractions();
return ( return (
<div className='modal-root__modal compose-modal unauthorized-modal'> <div className='modal-root__modal compose-modal unauthorized-modal'>

Wyświetl plik

@ -88,6 +88,7 @@
color: var(--primary-text-color--faint); color: var(--primary-text-color--faint);
text-decoration: none; text-decoration: none;
font-size: 13px; font-size: 13px;
cursor: pointer;
} }
.detailed-status__button { .detailed-status__button {