// @flow import type { Node } from 'react'; import { getThumbnailCdnUrl } from 'util/thumbnail'; import React from 'react'; import FreezeframeWrapper from './FreezeframeWrapper'; import Placeholder from './placeholder.png'; import { MISSING_THUMB_DEFAULT } from 'config'; import classnames from 'classnames'; import Thumb from './thumb'; type Props = { uri: string, thumbnail: ?string, // externally sourced image children?: Node, allowGifs: boolean, claim: ?StreamClaim, doResolveUri: (string) => void, className?: string, position?: number, }; function FileThumbnail(props: Props) { const { claim, uri, doResolveUri, thumbnail: rawThumbnail, children, allowGifs = false, className, position } = props; const passedThumbnail = rawThumbnail && rawThumbnail.trim().replace(/^http:\/\//i, 'https://'); const thumbnailFromClaim = uri && claim && claim.value && claim.value.thumbnail ? claim.value.thumbnail.url : undefined; const thumbnail = passedThumbnail || thumbnailFromClaim; const hasResolvedClaim = claim !== undefined; const isGif = thumbnail && thumbnail.endsWith('gif'); const media = claim && claim.value && (claim.value.video || claim.value.audio); const duration = media && media.duration; const viewedBar = position && duration && (