Skip to content
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
d179552
Add reaction modal
MartinSchoeler Jul 15, 2020
2c95b23
import
MartinSchoeler Jul 15, 2020
d3b45fe
Merge branch 'develop' into reaction-view
tassoevan Jul 15, 2020
448f4d3
Update app/ui-utils/client/lib/MessageAction.js
MartinSchoeler Jul 16, 2020
a04cd25
Update app/ui-utils/client/lib/MessageAction.js
MartinSchoeler Jul 16, 2020
49a6290
Update app/ui-utils/client/lib/reactionListContent.js
MartinSchoeler Jul 16, 2020
4ff7fc1
Update app/ui-utils/client/lib/reactionListContent.js
MartinSchoeler Jul 16, 2020
4dbef83
fix some reviews
MartinSchoeler Jul 16, 2020
b0f2f26
fix more reviews
MartinSchoeler Jul 16, 2020
6bf2f86
remove wrapper and use the component directly
MartinSchoeler Jul 16, 2020
98d9b38
fix lint
MartinSchoeler Jul 16, 2020
ea97d07
Update reactionListContent.js
MartinSchoeler Jul 16, 2020
40e5c29
Merge branch 'develop' into reaction-view
tassoevan Jul 17, 2020
4922d96
Update app/ui-utils/client/lib/reactionListContent.js
ggazzo Jul 17, 2020
c1b1f08
Update app/ui-utils/client/lib/MessageAction.js
ggazzo Jul 17, 2020
fcf78a6
WIP
ggazzo Jul 17, 2020
390324a
Merge branch 'develop' into reaction-view
tassoevan Jul 20, 2020
9ea34cf
Merge branch 'develop' into reaction-view
gabriellsh Sep 18, 2020
3b12d45
Merge branch 'develop' into reaction-view
MartinSchoeler Oct 5, 2020
71f2db0
review
MartinSchoeler Oct 5, 2020
07432b8
fix review and overflows
MartinSchoeler Oct 5, 2020
52dff1b
lint
MartinSchoeler Oct 5, 2020
28af04c
remove line
MartinSchoeler Oct 5, 2020
6a7fb13
fix margin
MartinSchoeler Oct 5, 2020
79c8d49
lint
MartinSchoeler Oct 5, 2020
1de295a
Merge branch 'develop' into reaction-view
gabriellsh Oct 7, 2020
96c13e0
Use real name setting, open user card
gabriellsh Oct 7, 2020
90c0bbd
Fix missing names after new emoji
gabriellsh Oct 7, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions app/ui-utils/client/lib/MessageAction.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { ReactiveVar } from 'meteor/reactive-var';
import { Tracker } from 'meteor/tracker';
import { Session } from 'meteor/session';

import { createTemplateForComponent } from '../../../../client/reactAdapters';
import { messageArgs } from './messageArgs';
import { roomTypes, canDeleteMessage } from '../../../utils/client';
import { Messages, Rooms, Subscriptions } from '../../../models/client';
Expand Down Expand Up @@ -355,4 +356,24 @@ Meteor.startup(async function() {
order: 17,
group: 'menu',
});

MessageAction.addButton({
id: 'reaction-list',
icon: 'emoji',
label: 'Reactions',
context: ['message', 'message-mobile', 'threads'],
action() {
const { msg: { reactions } } = messageArgs(this);

modal.open({
Comment thread
tassoevan marked this conversation as resolved.
template: createTemplateForComponent('reactionList', () => import('./ReactionListContent')),
data: { reactions, onClose: () => modal.close() },
});
},
condition({ msg: { reactions } }) {
return !!reactions;
},
order: 18,
group: 'menu',
});
});
47 changes: 47 additions & 0 deletions app/ui-utils/client/lib/ReactionListContent.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import React, { useMemo } from 'react';
import { Box, Tag, Divider, Modal, Icon, ButtonGroup, Button, Scrollable } from '@rocket.chat/fuselage';

import { useTranslation } from '../../../../client/contexts/TranslationContext';
import Emoji from '../../../../client/components/basic/Emoji';

export function Reactions(props) {
const reactionKeys = useMemo(() => Object.keys(props.reactions), [props.reactions]);

return <Scrollable>
<Box>
{reactionKeys.map((reaction, i) => <Box key={reaction}>
<Box display='flex'>
<Emoji emojiHandle={reaction}/> {reaction}
</Box>
<Usernames usernames={props.reactions[reaction].usernames}></Usernames>
{ i !== (reactionKeys.length - 1) && <Divider key={reaction} marginBlockStart='x8' marginBlockEnd='x16'/> }
</Box>)}
</Box>
</Scrollable>;
}

export function Usernames(props) {
return <Box paddingBlock='x4'>
{ props.usernames.map((user) => <Tag marginInlineEnd='4x' key={user}>{user}</Tag>)}
</Box>;
}

export default function ReactionListContent({ reactions, onClose }) {
const t = useTranslation();

return <>
Comment thread
gabriellsh marked this conversation as resolved.
<Modal.Header>
<Icon name='emoji' size={20}/>
<Modal.Title>{t('Reactions')}</Modal.Title>
<Modal.Close onClick={onClose}/>
</Modal.Header>
<Modal.Content fontScale='p1'>
<Reactions reactions={reactions} />
</Modal.Content>
<Modal.Footer>
<ButtonGroup align='end'>
<Button primary onClick={onClose}>{t('Ok')}</Button>
</ButtonGroup>
</Modal.Footer>
</>;
}
10 changes: 10 additions & 0 deletions client/components/basic/Emoji.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import React from 'react';

import { renderEmoji } from '../../../app/emoji/client/index';

function Emoji({ emojiHandle }) {
const markup = { __html: `${ renderEmoji(emojiHandle) }` };
return <div dangerouslySetInnerHTML={ markup }></div>;
}

export default Emoji;