From 603c3960422fc9976d270cf8dc57afd245caa6e4 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Mon, 8 Apr 2019 17:12:18 +0300 Subject: Embed links --- vnext/src/components/Message.js | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'vnext/src/components/Message.js') diff --git a/vnext/src/components/Message.js b/vnext/src/components/Message.js index e27e057b..6c78b4bc 100644 --- a/vnext/src/components/Message.js +++ b/vnext/src/components/Message.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useEffect, useRef } from 'react'; import PropTypes from 'prop-types'; import { Link } from 'react-router-dom'; import moment from 'moment'; @@ -8,14 +8,24 @@ import Icon from './Icon'; import Avatar from './Avatar'; import { UserLink } from './UserInfo'; -import { format } from '../utils/embed'; +import { format, embedUrls } from '../utils/embed'; import './Message.css'; -function Message({ data, visitor, children, ...rest }) { +export default function Message({ data, visitor, children, ...rest }) { const isCode = (data.tags || []).indexOf('code') >= 0; const likesSummary = data.likes ? `${data.likes}` : 'Recommend'; const commentsSummary = data.replies ? `${data.replies}` : 'Comment'; + const embedRef = useRef(); + const msgRef = useRef(); + useEffect(() => { + if (msgRef.current) { + embedUrls(msgRef.current.querySelectorAll('a'), embedRef.current); + if (!embedRef.current.hasChildNodes()) { + embedRef.current.style.display = 'none'; + } + } + }, []); return (
@@ -34,7 +44,7 @@ function Message({ data, visitor, children, ...rest }) { { data.body && -
+
} @@ -44,6 +54,7 @@ function Message({ data, visitor, children, ...rest }) {

} +