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, lang, width, height } = this.props; const mediaAttachments = status.get('media_attachments'); if (mediaAttachments.size === 0) { return null; } if (mediaAttachments.getIn([0, 'type']) === 'audio') { const audio = mediaAttachments.get(0); return ( {Component => ( )} ); } else if (mediaAttachments.getIn([0, 'type']) === 'video') { const video = mediaAttachments.get(0); return ( {Component => ( )} ); } else { return ( {Component => ( )} ); } } }