|
|
|
@ -5,7 +5,7 @@ import PropTypes from 'prop-types';
|
|
|
|
|
import Video from 'flavours/glitch/features/video';
|
|
|
|
|
import ExtendedVideoPlayer from 'flavours/glitch/components/extended_video_player';
|
|
|
|
|
import classNames from 'classnames';
|
|
|
|
|
import { defineMessages, injectIntl } from 'react-intl';
|
|
|
|
|
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
|
|
|
|
import IconButton from 'flavours/glitch/components/icon_button';
|
|
|
|
|
import ImmutablePureComponent from 'react-immutable-pure-component';
|
|
|
|
|
import ImageLoader from './image_loader';
|
|
|
|
@ -19,8 +19,13 @@ const messages = defineMessages({
|
|
|
|
|
@injectIntl
|
|
|
|
|
export default class MediaModal extends ImmutablePureComponent {
|
|
|
|
|
|
|
|
|
|
static contextTypes = {
|
|
|
|
|
router: PropTypes.object,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static propTypes = {
|
|
|
|
|
media: ImmutablePropTypes.list.isRequired,
|
|
|
|
|
status: ImmutablePropTypes.map,
|
|
|
|
|
index: PropTypes.number.isRequired,
|
|
|
|
|
onClose: PropTypes.func.isRequired,
|
|
|
|
|
intl: PropTypes.object.isRequired,
|
|
|
|
@ -81,8 +86,15 @@ export default class MediaModal extends ImmutablePureComponent {
|
|
|
|
|
}));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
handleStatusClick = e => {
|
|
|
|
|
if (e.button === 0 && !(e.ctrlKey || e.metaKey)) {
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
this.context.router.history.push(`/statuses/${this.props.status.get('id')}`);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
render () {
|
|
|
|
|
const { media, intl, onClose } = this.props;
|
|
|
|
|
const { media, status, intl, onClose } = this.props;
|
|
|
|
|
const { navigationHidden } = this.state;
|
|
|
|
|
|
|
|
|
|
const index = this.getIndex();
|
|
|
|
@ -186,10 +198,19 @@ export default class MediaModal extends ImmutablePureComponent {
|
|
|
|
|
{content}
|
|
|
|
|
</ReactSwipeableViews>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className={navigationClassName}>
|
|
|
|
|
<IconButton className='media-modal__close' title={intl.formatMessage(messages.close)} icon='times' onClick={onClose} size={40} />
|
|
|
|
|
|
|
|
|
|
{leftNav}
|
|
|
|
|
{rightNav}
|
|
|
|
|
|
|
|
|
|
{status && (
|
|
|
|
|
<div className={classNames('media-modal__meta', { 'media-modal__meta--shifted': media.size > 1 })}>
|
|
|
|
|
<a href={status.get('url')} onClick={this.handleStatusClick}><FormattedMessage id='lightbox.view_context' defaultMessage='View context' /></a>
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
|
|
|
|
|
|
|
|
|
<ul className='media-modal__pagination'>
|
|
|
|
|
{pagination}
|
|
|
|
|
</ul>
|
|
|
|
|