// @flow import React from 'react'; import { Icon } from 'component/common'; import Button from 'component/link'; import lbryuri from 'lbryuri'; import classnames from 'classnames'; type Props = { isResolvingUri: boolean, resolveUri: string => void, claim: { channel_name: string, has_signature: boolean, signature_is_valid: boolean, value: { publisherSignature: { certificateId: string }, }, }, uri: string, link: ?boolean, }; class UriIndicator extends React.PureComponent { componentWillMount() { this.resolve(this.props); } componentWillReceiveProps(nextProps: Props) { this.resolve(nextProps); } resolve = (props: Props) => { const { isResolvingUri, resolveUri, claim, uri } = props; if (!isResolvingUri && claim === undefined && uri) { resolveUri(uri); } }; render() { const { claim, link, isResolvingUri } = this.props; if (!claim) { return {isResolvingUri ? 'Validating...' : 'Unused'}; } const { channel_name: channelName, has_signature: hasSignature, signature_is_valid: signatureIsValid, value, } = claim; const channelClaimId = value && value.publisherSignature && value.publisherSignature.certificateId; if (!hasSignature || !channelName) { return Anonymous; } let icon; let channelLink; let modifier; if (signatureIsValid) { modifier = 'valid'; channelLink = link ? lbryuri.build({ channelName, claimId: channelClaimId }, false) : false; } else { icon = 'icon-times-circle'; modifier = 'invalid'; } const inner = ( {channelName} {' '} {!signatureIsValid ? ( ) : ( '' )} ); if (!channelLink) { return inner; } return ( ); } } export default UriIndicator;