forked from treehouse/mastodon
[Glitch] Fix expand video on public page
Signed-off-by: Claire <claire.github-309c@sitedethib.com>rebase/4.0.0rc2
parent
d8e756eda8
commit
34cc6f45ac
|
@ -2,7 +2,7 @@ import React, { PureComponent, Fragment } from 'react';
|
|||
import ReactDOM from 'react-dom';
|
||||
import PropTypes from 'prop-types';
|
||||
import { IntlProvider, addLocaleData } from 'react-intl';
|
||||
import { List as ImmutableList, fromJS } from 'immutable';
|
||||
import { fromJS } from 'immutable';
|
||||
import { getLocale } from 'mastodon/locales';
|
||||
import { getScrollbarWidth } from 'flavours/glitch/util/scrollbar';
|
||||
import MediaGallery from 'flavours/glitch/components/media_gallery';
|
||||
|
@ -31,6 +31,7 @@ export default class MediaContainer extends PureComponent {
|
|||
index: null,
|
||||
time: null,
|
||||
backgroundColor: null,
|
||||
options: null,
|
||||
};
|
||||
|
||||
handleOpenMedia = (media, index) => {
|
||||
|
@ -40,13 +41,15 @@ export default class MediaContainer extends PureComponent {
|
|||
this.setState({ media, index });
|
||||
}
|
||||
|
||||
handleOpenVideo = (video, time) => {
|
||||
const media = ImmutableList([video]);
|
||||
handleOpenVideo = (options) => {
|
||||
const { components } = this.props;
|
||||
const { media } = JSON.parse(components[options.componetIndex].getAttribute('data-props'));
|
||||
const mediaList = fromJS(media);
|
||||
|
||||
document.body.classList.add('with-modals--active');
|
||||
document.documentElement.style.marginRight = `${getScrollbarWidth()}px`;
|
||||
|
||||
this.setState({ media, time });
|
||||
this.setState({ media: mediaList, options });
|
||||
}
|
||||
|
||||
handleCloseMedia = () => {
|
||||
|
@ -58,6 +61,7 @@ export default class MediaContainer extends PureComponent {
|
|||
index: null,
|
||||
time: null,
|
||||
backgroundColor: null,
|
||||
options: null,
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -83,6 +87,7 @@ export default class MediaContainer extends PureComponent {
|
|||
...(hashtag ? { hashtag: fromJS(hashtag) } : {}),
|
||||
|
||||
...(componentName === 'Video' ? {
|
||||
componetIndex: i,
|
||||
onOpenVideo: this.handleOpenVideo,
|
||||
} : {
|
||||
onOpenMedia: this.handleOpenMedia,
|
||||
|
@ -100,7 +105,9 @@ export default class MediaContainer extends PureComponent {
|
|||
<MediaModal
|
||||
media={this.state.media}
|
||||
index={this.state.index || 0}
|
||||
time={this.state.time}
|
||||
currentTime={this.state.options?.startTime}
|
||||
autoPlay={this.state.options?.autoPlay}
|
||||
volume={this.state.options?.defaultVolume}
|
||||
onClose={this.handleCloseMedia}
|
||||
onChangeBackgroundColor={this.setBackgroundColor}
|
||||
/>
|
||||
|
|
|
@ -33,6 +33,9 @@ class MediaModal extends ImmutablePureComponent {
|
|||
onClose: PropTypes.func.isRequired,
|
||||
intl: PropTypes.object.isRequired,
|
||||
onChangeBackgroundColor: PropTypes.func.isRequired,
|
||||
currentTime: PropTypes.number,
|
||||
autoPlay: PropTypes.bool,
|
||||
volume: PropTypes.number,
|
||||
};
|
||||
|
||||
state = {
|
||||
|
@ -162,7 +165,7 @@ class MediaModal extends ImmutablePureComponent {
|
|||
/>
|
||||
);
|
||||
} else if (image.get('type') === 'video') {
|
||||
const { time } = this.props;
|
||||
const { currentTime, autoPlay, volume } = this.props;
|
||||
|
||||
return (
|
||||
<Video
|
||||
|
@ -171,7 +174,10 @@ class MediaModal extends ImmutablePureComponent {
|
|||
src={image.get('url')}
|
||||
width={image.get('width')}
|
||||
height={image.get('height')}
|
||||
currentTime={time || 0}
|
||||
frameRate={image.getIn(['meta', 'original', 'frame_rate'])}
|
||||
currentTime={currentTime || 0}
|
||||
autoPlay={autoPlay || false}
|
||||
volume={volume || 1}
|
||||
onCloseVideo={onClose}
|
||||
detailed
|
||||
alt={image.get('description')}
|
||||
|
|
|
@ -123,6 +123,7 @@ class Video extends React.PureComponent {
|
|||
autoPlay: PropTypes.bool,
|
||||
volume: PropTypes.number,
|
||||
muted: PropTypes.bool,
|
||||
componetIndex: PropTypes.number,
|
||||
};
|
||||
|
||||
static defaultProps = {
|
||||
|
@ -515,6 +516,7 @@ class Video extends React.PureComponent {
|
|||
startTime: this.video.currentTime,
|
||||
autoPlay: !this.state.paused,
|
||||
defaultVolume: this.state.volume,
|
||||
componetIndex: this.props.componetIndex,
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue