aboutsummaryrefslogtreecommitdiff
path: root/vnext/src/components/Message.js
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2019-04-04 21:09:08 +0300
committerGravatar Vitaly Takmazov2023-01-13 10:37:54 +0300
commitefdb2c2665125b6ff09da5bf35b4396ef6f028f9 (patch)
treef1ff711d5e88cb33569428e91dbc02be8f52a982 /vnext/src/components/Message.js
parentadf06c76465fe90e2d28fef80c0f9e79dd472226 (diff)
Recommendations in feeds
Diffstat (limited to 'vnext/src/components/Message.js')
-rw-r--r--vnext/src/components/Message.js20
1 files changed, 20 insertions, 0 deletions
diff --git a/vnext/src/components/Message.js b/vnext/src/components/Message.js
index 02371ddb..f093221b 100644
--- a/vnext/src/components/Message.js
+++ b/vnext/src/components/Message.js
@@ -6,6 +6,7 @@ import moment from 'moment';
import { UserType, MessageType } from './Types';
import Icon from './Icon';
import Avatar from './Avatar';
+import { UserLink } from './UserInfo';
import { format } from '../utils/embed';
@@ -15,6 +16,7 @@ function Message({ data, visitor, children, ...rest }) {
const isCode = (data.tags || []).indexOf('code') >= 0;
return (
<div className="msg-cont">
+ <Recommendations forMessage={data} />
<header className="h">
<Avatar user={data.user}>
<div className="msg-ts">
@@ -105,6 +107,24 @@ function Tags({ data, user, ...rest }) {
const TagsList = React.memo(Tags);
+function Recommends({ forMessage, ...rest }) {
+ const { likes, recommendations } = forMessage;
+ return recommendations && recommendations.length > 0 && (
+ <div className="msg-recomms">{'❤️ by '}
+ {
+ recommendations.map(it => (
+ <UserLink key={it.uri || it.uid} user={it} />
+ )).reduce((prev, curr) => [prev, ', ', curr])
+ }
+ {
+ likes > recommendations.length && (<span>&nbsp;and {likes - recommendations.length} others</span>)
+ }
+ </div>
+ ) || null;
+}
+
+const Recommendations = React.memo(Recommends);
+
Message.propTypes = {
data: MessageType,
visitor: UserType.isRequired,