pl-fe: allow to repost events to specific audiences
Signed-off-by: Nicole Mikołajczyk <git@mkljczk.pl>
This commit is contained in:
@ -44,6 +44,11 @@ const messages = defineMessages({
|
|||||||
unbookmark: { id: 'status.unbookmark', defaultMessage: 'Remove bookmark' },
|
unbookmark: { id: 'status.unbookmark', defaultMessage: 'Remove bookmark' },
|
||||||
quotePost: { id: 'event.quote', defaultMessage: 'Quote event' },
|
quotePost: { id: 'event.quote', defaultMessage: 'Quote event' },
|
||||||
reblog: { id: 'event.reblog', defaultMessage: 'Repost event' },
|
reblog: { id: 'event.reblog', defaultMessage: 'Repost event' },
|
||||||
|
reblog_private: { id: 'status.reblog_private', defaultMessage: 'Repost to original audience' },
|
||||||
|
cancel_reblog_private: { id: 'status.cancel_reblog_private', defaultMessage: 'Un-repost' },
|
||||||
|
reblog_visibility_public: { id: 'status.reblog_visibility_public', defaultMessage: 'Public repost' },
|
||||||
|
reblog_visibility_unlisted: { id: 'status.reblog_visibility_unlisted', defaultMessage: 'Unlisted repost' },
|
||||||
|
reblog_visibility_private: { id: 'status.reblog_visibility_private', defaultMessage: 'Followers-only repost' },
|
||||||
unreblog: { id: 'event.unreblog', defaultMessage: 'Un-repost event' },
|
unreblog: { id: 'event.unreblog', defaultMessage: 'Un-repost event' },
|
||||||
pin: { id: 'status.pin', defaultMessage: 'Pin on profile' },
|
pin: { id: 'status.pin', defaultMessage: 'Pin on profile' },
|
||||||
unpin: { id: 'status.unpin', defaultMessage: 'Unpin from profile' },
|
unpin: { id: 'status.unpin', defaultMessage: 'Unpin from profile' },
|
||||||
@ -125,8 +130,8 @@ const EventHeader: React.FC<IEventHeader> = ({ status }) => {
|
|||||||
dispatch(toggleBookmark(status));
|
dispatch(toggleBookmark(status));
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleReblogClick = () => {
|
const handleReblogClick = (visibility?: string) => {
|
||||||
const modalReblog = () => dispatch(toggleReblog(status));
|
const modalReblog = () => dispatch(toggleReblog(status, visibility));
|
||||||
if (!boostModal) {
|
if (!boostModal) {
|
||||||
modalReblog();
|
modalReblog();
|
||||||
} else {
|
} else {
|
||||||
@ -238,10 +243,30 @@ const EventHeader: React.FC<IEventHeader> = ({ status }) => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (['public', 'unlisted'].includes(status.visibility)) {
|
if (ownAccount.id === account.id && ['public', 'unlisted'].includes(status.visibility)) {
|
||||||
menu.push({
|
menu.push({
|
||||||
text: intl.formatMessage(status.reblogged ? messages.unreblog : messages.reblog),
|
text: intl.formatMessage(status.reblogged ? messages.unreblog : messages.reblog),
|
||||||
action: handleReblogClick,
|
...(features.reblogVisibility && !status.reblogged ? {
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
text: intl.formatMessage(messages.reblog_visibility_public),
|
||||||
|
action: () => handleReblogClick('public'),
|
||||||
|
icon: require('@tabler/icons/outline/world.svg'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: intl.formatMessage(messages.reblog_visibility_unlisted),
|
||||||
|
action: () => handleReblogClick('unlisted'),
|
||||||
|
icon: require('@tabler/icons/outline/lock-open.svg'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: intl.formatMessage(messages.reblog_visibility_private),
|
||||||
|
action: () => handleReblogClick('private'),
|
||||||
|
icon: require('@tabler/icons/outline/lock.svg'),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
} : {
|
||||||
|
action: () => handleReblogClick(),
|
||||||
|
}),
|
||||||
icon: require('@tabler/icons/outline/repeat.svg'),
|
icon: require('@tabler/icons/outline/repeat.svg'),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -252,6 +277,12 @@ const EventHeader: React.FC<IEventHeader> = ({ status }) => {
|
|||||||
icon: require('@tabler/icons/outline/quote.svg'),
|
icon: require('@tabler/icons/outline/quote.svg'),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
} else if (status.visibility === 'private' || status.visibility === 'mutuals_only') {
|
||||||
|
menu.push({
|
||||||
|
text: intl.formatMessage(status.reblogged ? messages.cancel_reblog_private : messages.reblog_private),
|
||||||
|
action: () => handleReblogClick(),
|
||||||
|
icon: require('@tabler/icons/outline/repeat.svg'),
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
menu.push(null);
|
menu.push(null);
|
||||||
|
|||||||
Reference in New Issue
Block a user