diff options
author | Joram Wilander <jwawilander@gmail.com> | 2016-06-15 08:01:52 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-15 08:01:52 -0400 |
commit | 0f7a8f0fb52f4376a42391812a20e622e82fef4e (patch) | |
tree | 11f853178eb9ba664d73e57ddd1c2378faed1ee1 /webapp/components | |
parent | 31db90f6dd70fd5c1f8e00f90dc9b5252017df22 (diff) | |
download | chat-0f7a8f0fb52f4376a42391812a20e622e82fef4e.tar.gz chat-0f7a8f0fb52f4376a42391812a20e622e82fef4e.tar.bz2 chat-0f7a8f0fb52f4376a42391812a20e622e82fef4e.zip |
Distinguish between static embeds and toggleable embeds (#3333)
Diffstat (limited to 'webapp/components')
-rw-r--r-- | webapp/components/post_view/components/post_body_additional_content.jsx | 65 |
1 files changed, 43 insertions, 22 deletions
diff --git a/webapp/components/post_view/components/post_body_additional_content.jsx b/webapp/components/post_view/components/post_body_additional_content.jsx index 6757f3b2a..d7cbe5d6c 100644 --- a/webapp/components/post_view/components/post_body_additional_content.jsx +++ b/webapp/components/post_view/components/post_body_additional_content.jsx @@ -18,7 +18,8 @@ export default class PostBodyAdditionalContent extends React.Component { this.getSlackAttachment = this.getSlackAttachment.bind(this); this.getOEmbedProvider = this.getOEmbedProvider.bind(this); - this.generateEmbed = this.generateEmbed.bind(this); + this.generateToggleableEmbed = this.generateToggleableEmbed.bind(this); + this.generateStaticEmbed = this.generateStaticEmbed.bind(this); this.toggleEmbedVisibility = this.toggleEmbedVisibility.bind(this); this.state = { @@ -69,29 +70,12 @@ export default class PostBodyAdditionalContent extends React.Component { return null; } - generateEmbed() { - if (this.props.post.type === 'slack_attachment') { - return this.getSlackAttachment(); - } - + generateToggleableEmbed() { const link = Utils.extractFirstLink(this.props.post.message); if (!link) { return null; } - if (Utils.isFeatureEnabled(Constants.PRE_RELEASE_FEATURES.EMBED_PREVIEW)) { - const provider = this.getOEmbedProvider(link); - - if (provider) { - return ( - <PostAttachmentOEmbed - provider={provider} - link={link} - /> - ); - } - } - if (YoutubeVideo.isYoutubeLink(link)) { return ( <YoutubeVideo @@ -117,10 +101,47 @@ export default class PostBodyAdditionalContent extends React.Component { return null; } + generateStaticEmbed() { + if (this.props.post.type === Constants.POST_TYPE_ATTACHMENT) { + return this.getSlackAttachment(); + } + + const link = Utils.extractFirstLink(this.props.post.message); + if (!link) { + return null; + } + + if (Utils.isFeatureEnabled(Constants.PRE_RELEASE_FEATURES.EMBED_PREVIEW)) { + const provider = this.getOEmbedProvider(link); + + if (provider) { + return ( + <PostAttachmentOEmbed + provider={provider} + link={link} + /> + ); + } + } + + return null; + } + render() { - const generateEmbed = this.generateEmbed(); + const staticEmbed = this.generateStaticEmbed(); + + if (staticEmbed) { + return ( + <div> + {this.props.message} + {staticEmbed} + </div> + ); + } + + const toggleableEmbed = this.generateToggleableEmbed(); - if (generateEmbed) { + if (toggleableEmbed) { let messageWithToggle = []; // if message has only one line and starts with a link place toggle in this only line @@ -148,7 +169,7 @@ export default class PostBodyAdditionalContent extends React.Component { className='post__embed-container' hidden={!this.state.embedVisible} > - {generateEmbed} + {toggleableEmbed} </div> </div> ); |