Hide reaction picker for user without permission

Signed-off-by: Ajay Bura <ajbura@gmail.com>
This commit is contained in:
Ajay Bura 2022-01-26 17:16:40 +05:30
parent 992da7c7be
commit 202ff53c41

View file

@ -354,11 +354,12 @@ MessageReaction.propTypes = {
}; };
function MessageReactionGroup({ roomTimeline, mEvent }) { function MessageReactionGroup({ roomTimeline, mEvent }) {
const { roomId, reactionTimeline } = roomTimeline; const { roomId, room, reactionTimeline } = roomTimeline;
const eventId = mEvent.getId(); const eventId = mEvent.getId();
const mx = initMatrix.matrixClient; const mx = initMatrix.matrixClient;
const reactions = {}; const reactions = {};
const shortcodeToEmoji = getShortcodeToCustomEmoji(roomTimeline.room); const shortcodeToEmoji = getShortcodeToCustomEmoji(room);
const canSendReaction = room.currentState.maySendEvent('m.reaction', mx.getUserId());
const eventReactions = reactionTimeline.get(eventId); const eventReactions = reactionTimeline.get(eventId);
const addReaction = (key, count, senderId, isActive) => { const addReaction = (key, count, senderId, isActive) => {
@ -416,6 +417,7 @@ function MessageReactionGroup({ roomTimeline, mEvent }) {
/> />
)) ))
} }
{canSendReaction && (
<IconButton <IconButton
onClick={(e) => { onClick={(e) => {
pickEmoji(e, roomId, eventId, roomTimeline); pickEmoji(e, roomId, eventId, roomTimeline);
@ -424,6 +426,7 @@ function MessageReactionGroup({ roomTimeline, mEvent }) {
size="extra-small" size="extra-small"
tooltip="Add reaction" tooltip="Add reaction"
/> />
)}
</div> </div>
); );
} }
@ -452,15 +455,18 @@ const MessageOptions = React.memo(({
const myPowerlevel = room.getMember(mx.getUserId())?.powerLevel; const myPowerlevel = room.getMember(mx.getUserId())?.powerLevel;
const canIRedact = room.currentState.hasSufficientPowerLevelFor('redact', myPowerlevel); const canIRedact = room.currentState.hasSufficientPowerLevelFor('redact', myPowerlevel);
const canSendReaction = room.currentState.maySendEvent('m.reaction', mx.getUserId());
return ( return (
<div className="message__options"> <div className="message__options">
{canSendReaction && (
<IconButton <IconButton
onClick={(e) => pickEmoji(e, roomId, eventId, roomTimeline)} onClick={(e) => pickEmoji(e, roomId, eventId, roomTimeline)}
src={EmojiAddIC} src={EmojiAddIC}
size="extra-small" size="extra-small"
tooltip="Add reaction" tooltip="Add reaction"
/> />
)}
<IconButton <IconButton
onClick={() => reply()} onClick={() => reply()}
src={ReplyArrowIC} src={ReplyArrowIC}