import React from 'react';
import PropTypes from 'prop-types';
+import Immutable from 'immutable';
import ImmutablePropTypes from 'react-immutable-proptypes';
import punycode from 'punycode';
import classnames from 'classnames';
static propTypes = {
card: ImmutablePropTypes.map,
maxDescription: PropTypes.number,
+ onOpenMedia: PropTypes.func.isRequired,
};
static defaultProps = {
width: 0,
};
+ handlePhotoClick = () => {
+ const { card, onOpenMedia } = this.props;
+
+ onOpenMedia(
+ Immutable.fromJS([
+ {
+ type: 'image',
+ url: card.get('url'),
+ description: card.get('title'),
+ meta: {
+ original: {
+ width: card.get('width'),
+ height: card.get('height'),
+ },
+ },
+ },
+ ]),
+ 0
+ );
+ };
+
renderLink () {
const { card, maxDescription } = this.props;
const { card } = this.props;
return (
- <a href={card.get('url')} className='status-card-photo' target='_blank' rel='noopener'>
- <img src={card.get('url')} alt={card.get('title')} width={card.get('width')} height={card.get('height')} />
- </a>
+ <img
+ className='status-card-photo'
+ onClick={this.handlePhotoClick}
+ role='button'
+ tabIndex='0'
+ src={card.get('url')}
+ alt={card.get('title')}
+ width={card.get('width')}
+ height={card.get('height')}
+ />
);
}
static propTypes = {
alt: PropTypes.string,
src: PropTypes.string.isRequired,
- previewSrc: PropTypes.string.isRequired,
+ previewSrc: PropTypes.string,
width: PropTypes.number,
height: PropTypes.number,
}
this.removeEventListeners();
this.setState({ loading: true, error: false });
Promise.all([
- this.loadPreviewCanvas(props),
+ props.previewSrc && this.loadPreviewCanvas(props),
this.hasSize() && this.loadOriginalImage(props),
].filter(Boolean))
.then(() => {
const height = image.getIn(['meta', 'original', 'height']) || null;
if (image.get('type') === 'image') {
- return <ImageLoader previewSrc={image.get('preview_url')} src={image.get('url')} width={width} height={height} alt={image.get('description')} key={image.get('preview_url')} />;
+ return <ImageLoader previewSrc={image.get('preview_url')} src={image.get('url')} width={width} height={height} alt={image.get('description')} key={image.get('url')} />;
} else if (image.get('type') === 'gifv') {
return <ExtendedVideoPlayer src={image.get('url')} muted controls={false} width={width} height={height} key={image.get('preview_url')} alt={image.get('description')} />;
}