// @flow import React from 'react'; import classnames from 'classnames'; import MarkdownPreview from 'component/common/markdown-preview'; import ClaimTags from 'component/claimTags'; import Button from 'component/button'; type Props = { uri: string, claim: StreamClaim, metadata: StreamMetadata, user: ?any, tags: any, }; function FileDescription(props: Props) { const { uri, claim, metadata, tags } = props; const [expanded, setExpanded] = React.useState(false); const [hasOverflow, setHasOverflow] = React.useState(false); const [hasCalculatedOverflow, setHasCalculatedOverflow] = React.useState(false); const descriptionRef = React.useRef(); React.useEffect(() => { if (descriptionRef && descriptionRef.current) { const element = descriptionRef.current; const isOverflowing = element.scrollHeight > element.clientHeight; setHasOverflow(isOverflowing); setHasCalculatedOverflow(true); } }, [descriptionRef]); if (!claim || !metadata) { return {__('Empty claim or metadata info.')}; } const { description } = metadata; if (!description && !(tags && tags.length)) return null; return (
{hasCalculatedOverflow && hasOverflow && (
{expanded ? (
)}
); } export default FileDescription;