From 88725d6ce85115ea3b0652007db5d40a1c069be3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 27 Apr 2017 14:42:22 +0200 Subject: OEmbed support for PreviewCard (#2337) * OEmbed support for PreviewCard * Improve ProviderDiscovery code failure treatment * Do not crawl links if there is a content warning, since those don't display a link card anyway * Reset db schema * Fresh migrate * Fix rubocop style issues Fix #1681 - return existing access token when applicable instead of creating new * Fix test * Extract http client to helper * Improve oembed controller --- .../components/features/status/components/card.jsx | 59 +++++++++++++++++++--- 1 file changed, 51 insertions(+), 8 deletions(-) (limited to 'app/assets/javascripts/components/features/status') diff --git a/app/assets/javascripts/components/features/status/components/card.jsx b/app/assets/javascripts/components/features/status/components/card.jsx index 1b5722b6a..a5ce7f08a 100644 --- a/app/assets/javascripts/components/features/status/components/card.jsx +++ b/app/assets/javascripts/components/features/status/components/card.jsx @@ -14,14 +14,11 @@ const getHostname = url => { class Card extends React.PureComponent { - render () { + renderLink () { const { card } = this.props; - if (card === null) { - return null; - } - - let image = ''; + let image = ''; + let provider = card.get('provider_name'); if (card.get('image')) { image = ( @@ -31,18 +28,64 @@ class Card extends React.PureComponent { ); } + if (provider.length < 1) { + provider = getHostname(card.get('url')) + } + return ( {image}
{card.get('title')} -

{card.get('description').substring(0, 50)}

- {getHostname(card.get('url'))} +

{(card.get('description') || '').substring(0, 50)}

+ {provider}
); } + + renderPhoto () { + const { card } = this.props; + + return ( + + {card.get('title')} + + ); + } + + renderVideo () { + const { card } = this.props; + const content = { __html: card.get('html') }; + + return ( +
+ ); + } + + render () { + const { card } = this.props; + + if (card === null) { + return null; + } + + switch(card.get('type')) { + case 'link': + return this.renderLink(); + case 'photo': + return this.renderPhoto(); + case 'video': + return this.renderVideo(); + case 'rich': + default: + return null; + } + } } Card.propTypes = { -- cgit