import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import noop from 'lodash/noop'; import Bundle from 'mastodon/features/ui/components/bundle'; import { MediaGallery, Video, Audio } from 'mastodon/features/ui/util/async-components'; export default class MediaAttachments extends ImmutablePureComponent { static propTypes = { status: ImmutablePropTypes.map.isRequired, lang: PropTypes.string, height: PropTypes.number, width: PropTypes.number, }; static defaultProps = { height: 110, width: 239, }; updateOnProps = [ 'status', ]; renderLoadingMediaGallery = () => { const { height, width } = this.props; return (
); }; renderLoadingVideoPlayer = () => { const { height, width } = this.props; return (
); }; renderLoadingAudioPlayer = () => { const { height, width } = this.props; return (
); }; render () { const { status, width, height } = this.props; const mediaAttachments = status.get('media_attachments'); const language = status.getIn(['language', 'translation']) || status.get('language') || this.props.lang; if (mediaAttachments.size === 0) { return null; } if (mediaAttachments.getIn([0, 'type']) === 'audio') { const audio = mediaAttachments.get(0); const description = audio.getIn(['translation', 'description']) || audio.get('description'); return ( {Component => ( )} ); } else if (mediaAttachments.getIn([0, 'type']) === 'video') { const video = mediaAttachments.get(0); const description = video.getIn(['translation', 'description']) || video.get('description'); return ( {Component => ( )} ); } else { return ( {Component => ( )} ); } } }