// @flow import { INLINE_PLAYER_WRAPPER_CLASS } from 'component/fileRenderFloating/view'; import * as React from 'react'; import Button from 'component/button'; import classnames from 'classnames'; import EmbedPlayButton from 'component/embedPlayButton'; import UriIndicator from 'component/uriIndicator'; type Props = { uri: string, fullUri: string, claim: StreamClaim, children: React.Node, description: ?string, isResolvingUri: boolean, doResolveUri: (string) => void, playingUri: ?PlayingUri, parentCommentId?: string, isMarkdownPost?: boolean, allowPreview: boolean, }; class ClaimLink extends React.Component { static defaultProps = { href: null, link: false, thumbnail: null, description: null, isResolvingUri: false, allowPreview: false, }; componentDidMount() { this.resolve(this.props); } componentDidUpdate() { this.resolve(this.props); } resolve = (props: Props) => { const { isResolvingUri, doResolveUri, claim, uri } = props; if (!isResolvingUri && claim === undefined && uri) { doResolveUri(uri); } }; render() { const { uri, fullUri, claim, children, isResolvingUri, playingUri, parentCommentId, isMarkdownPost, allowPreview, } = this.props; const isUnresolved = (!isResolvingUri && !claim) || !claim; const isPlayingInline = playingUri && playingUri.uri === uri && ((playingUri.source === 'comment' && parentCommentId === playingUri.commentId) || playingUri.source === 'markdown'); if (isUnresolved) { return {children}; } const { value_type: valueType } = claim; const isChannel = valueType === 'channel'; return isChannel ? ( <> {fullUri.length > uri.length ? fullUri.substring(uri.length, fullUri.length) : ''} ) : allowPreview ? (
) : (