diff --git a/app/soapbox/features/admin/components/report.js b/app/soapbox/features/admin/components/report.js index d08059837..a1e7d82bb 100644 --- a/app/soapbox/features/admin/components/report.js +++ b/app/soapbox/features/admin/components/report.js @@ -125,7 +125,7 @@ class Report extends ImmutablePureComponent { expanded={accordionExpanded} onToggle={this.handleAccordionToggle} > - {statuses.map(status => )} + {statuses.map(status => )} )} diff --git a/app/soapbox/features/admin/components/report_status.js b/app/soapbox/features/admin/components/report_status.js index f02e36598..d98e9c755 100644 --- a/app/soapbox/features/admin/components/report_status.js +++ b/app/soapbox/features/admin/components/report_status.js @@ -8,6 +8,9 @@ import DropdownMenu from 'soapbox/containers/dropdown_menu_container'; import { deleteStatus } from 'soapbox/actions/admin'; import snackbar from 'soapbox/actions/snackbar'; import { openModal } from 'soapbox/actions/modal'; +import noop from 'lodash/noop'; +import { MediaGallery, Video, Audio } from 'soapbox/features/ui/util/async-components'; +import Bundle from 'soapbox/features/ui/components/bundle'; const messages = defineMessages({ viewStatus: { id: 'admin.reports.actions.view_status', defaultMessage: 'View post' }, @@ -39,6 +42,66 @@ class ReportStatus extends ImmutablePureComponent { }]; } + getMedia = () => { + const { status } = this.props; + + if (status.get('media_attachments').size > 0) { + if (status.get('media_attachments').some(item => item.get('type') === 'unknown')) { + + } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') { + const video = status.getIn(['media_attachments', 0]); + + return ( + + {Component => ( + + )} + + ); + } else if (status.getIn(['media_attachments', 0, 'type']) === 'audio') { + const audio = status.getIn(['media_attachments', 0]); + + return ( + + {Component => ( + + )} + + ); + } else { + return ( + + {Component => } + + ); + } + } + + return null; + } + + handleOpenMedia = (media, index) => { + const { dispatch } = this.props; + dispatch(openModal('MEDIA', { media, index })); + } + handleDeleteStatus = () => { const { intl, dispatch, status } = this.props; const nickname = status.getIn(['account', 'acct']); @@ -58,11 +121,15 @@ class ReportStatus extends ImmutablePureComponent { render() { const { status } = this.props; + const media = this.getMedia(); const menu = this.makeMenu(); return (
- +
+ + {media} +
diff --git a/app/soapbox/features/admin/reports.js b/app/soapbox/features/admin/reports.js index 55c638b64..50c7c33a7 100644 --- a/app/soapbox/features/admin/reports.js +++ b/app/soapbox/features/admin/reports.js @@ -20,7 +20,7 @@ const mapStateToProps = state => { const ids = state.getIn(['admin', 'openReports']); return { - reports: ids.map(id => getReport(state, id)), + reports: ids.toList().map(id => getReport(state, id)), }; }; @@ -57,7 +57,7 @@ class Reports extends ImmutablePureComponent { scrollKey='admin-reports' emptyMessage={intl.formatMessage(messages.emptyMessage)} > - {reports.map(report => )} + {reports.map(report => )} ); diff --git a/app/soapbox/features/ui/components/accordion.js b/app/soapbox/features/ui/components/accordion.js index 628c2912a..c38e5de14 100644 --- a/app/soapbox/features/ui/components/accordion.js +++ b/app/soapbox/features/ui/components/accordion.js @@ -12,7 +12,7 @@ export default @injectIntl class Accordion extends React.PureComponent { static propTypes = { headline: PropTypes.node.isRequired, - children: PropTypes.oneOfType([PropTypes.string, PropTypes.element]), + children: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.node]), expanded: PropTypes.bool, onToggle: PropTypes.func, intl: PropTypes.object.isRequired,