From 8e848f38d5019269b75ff9814fc0e0772410a7b4 Mon Sep 17 00:00:00 2001 From: =Corey Hulen Date: Wed, 16 Sep 2015 23:22:15 -0700 Subject: PLT-40 adding experimental support for emojis --- web/react/components/post_body.jsx | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) (limited to 'web/react/components') diff --git a/web/react/components/post_body.jsx b/web/react/components/post_body.jsx index df4ed3d57..5e460d686 100644 --- a/web/react/components/post_body.jsx +++ b/web/react/components/post_body.jsx @@ -17,19 +17,42 @@ export default class PostBody extends React.Component { const linkData = Utils.extractLinks(this.props.post.message); this.state = {links: linkData.links, message: linkData.text}; } + + getTextNodesIn(nodeIn) { + var textNodes = []; + + function getTextNodes(node) { + textNodes.push(node); + + for (var i = 0, len = node.childNodes.length; i < len; ++i) { + getTextNodes(node.childNodes[i]); + } + } + + getTextNodes(nodeIn); + return textNodes; + } + parseEmojis() { twemoji.parse(React.findDOMNode(this), {size: Constants.EMOJI_SIZE}); + this.getTextNodesIn(React.findDOMNode(this)).forEach((current) => { + global.window.emojify.run(current); + }); } + componentDidMount() { this.parseEmojis(); } + componentDidUpdate() { this.parseEmojis(); } + componentWillReceiveProps(nextProps) { const linkData = Utils.extractLinks(nextProps.post.message); this.setState({links: linkData.links, message: linkData.text}); } + render() { const post = this.props.post; const filenames = this.props.post.filenames; @@ -75,7 +98,7 @@ export default class PostBody extends React.Component { comment = (

- Commented on {name}{apostrophe} message: + {'Commented on '}{name}{apostrophe}{' message:'} - Retry + {'Retry'} ); } else if (post.state === Constants.POST_LOADING) { @@ -133,6 +156,7 @@ export default class PostBody extends React.Component { {comment}

{loading} -- cgit v1.2.3-1-g7c22