import React from 'react'; import classNames from 'classnames'; import { isImageTypeSupported, isVideoTypeSupported, } from '../../../util/GoogleChrome'; import { LocalizerType } from '../../../types/Util'; import { MediaItemType } from '../../LightboxGallery'; interface Props { mediaItem: MediaItemType; onClick?: () => void; i18n: LocalizerType; } interface State { imageBroken: boolean; } export class MediaGridItem extends React.Component { private readonly onImageErrorBound: () => void; constructor(props: Props) { super(props); this.state = { imageBroken: false, }; this.onImageErrorBound = this.onImageError.bind(this); } public onImageError() { // tslint:disable-next-line no-console console.log( 'MediaGridItem: Image failed to load; failing over to placeholder' ); this.setState({ imageBroken: true, }); } public renderContent() { const { mediaItem, i18n } = this.props; const { imageBroken } = this.state; const { attachment, contentType } = mediaItem; if (!attachment) { return null; } if (contentType && isImageTypeSupported(contentType)) { if (imageBroken || !mediaItem.thumbnailObjectUrl) { return (
); } return ( {i18n('lightboxImageAlt')} ); } else if (contentType && isVideoTypeSupported(contentType)) { if (imageBroken || !mediaItem.thumbnailObjectUrl) { return (
); } return (
{i18n('lightboxImageAlt')}
); } return (
); } public render() { return ( ); } }