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 => ( )} ); } } }