@ -2,11 +2,11 @@ import React from 'react';
import ReactSwipeableViews from 'react-swipeable-views' ;
import ImmutablePropTypes from 'react-immutable-proptypes' ;
import PropTypes from 'prop-types' ;
import Video from ' ../.. /video';
import ExtendedVideoPlayer from ' ../../.. /components/extended_video_player';
import Video from ' mastodon/features /video';
import ExtendedVideoPlayer from ' mastodon /components/extended_video_player';
import classNames from 'classnames' ;
import { defineMessages , injectIntl } from 'react-intl' ;
import IconButton from ' ../../.. /components/icon_button';
import { defineMessages , injectIntl , FormattedMessage } from 'react-intl' ;
import IconButton from ' mastodon /components/icon_button';
import ImmutablePureComponent from 'react-immutable-pure-component' ;
import ImageLoader from './image_loader' ;
import Icon from 'mastodon/components/icon' ;
@ -24,6 +24,7 @@ class MediaModal extends ImmutablePureComponent {
static propTypes = {
media : ImmutablePropTypes . list . isRequired ,
status : ImmutablePropTypes . map ,
index : PropTypes . number . isRequired ,
onClose : PropTypes . func . isRequired ,
intl : PropTypes . object . isRequired ,
@ -72,9 +73,12 @@ class MediaModal extends ImmutablePureComponent {
componentDidMount ( ) {
window . addEventListener ( 'keydown' , this . handleKeyDown , false ) ;
if ( this . context . router ) {
const history = this . context . router . history ;
history . push ( history . location . pathname , previewState ) ;
this . unlistenHistory = history . listen ( ( ) => {
this . props . onClose ( ) ;
} ) ;
@ -83,6 +87,7 @@ class MediaModal extends ImmutablePureComponent {
componentWillUnmount ( ) {
window . removeEventListener ( 'keydown' , this . handleKeyDown ) ;
if ( this . context . router ) {
this . unlistenHistory ( ) ;
@ -102,8 +107,15 @@ 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 ( ) ;
@ -207,10 +219,19 @@ class MediaModal extends ImmutablePureComponent {
{ content }
< / R e a c t S w i p e a b l e V i e w s >
< / d i v >
< 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 >
< / d i v >
) }
< ul className = 'media-modal__pagination' >
{ pagination }
< / u l >