mirror of
https://framagit.org/tykayn/mastodon.git
synced 2023-08-25 08:33:12 +02:00
658ac4396c
The rationale behind this is that if the user wants to report violent media, they might not want to see it repeatedly. The “sensitive” property is still kept, displaying different messages for hidden media depending on whether they are marked as sensitive.
75 lines
2.3 KiB
JavaScript
75 lines
2.3 KiB
JavaScript
import React from 'react';
|
|
import PropTypes from 'prop-types';
|
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
|
import Toggle from 'react-toggle';
|
|
import noop from 'lodash/noop';
|
|
import StatusContent from 'flavours/glitch/components/status_content';
|
|
import { MediaGallery, Video } from 'flavours/glitch/util/async-components';
|
|
import Bundle from 'flavours/glitch/features/ui/components/bundle';
|
|
|
|
export default class StatusCheckBox extends React.PureComponent {
|
|
|
|
static propTypes = {
|
|
status: ImmutablePropTypes.map.isRequired,
|
|
checked: PropTypes.bool,
|
|
onToggle: PropTypes.func.isRequired,
|
|
disabled: PropTypes.bool,
|
|
};
|
|
|
|
render () {
|
|
const { status, checked, onToggle, disabled } = this.props;
|
|
let media = null;
|
|
|
|
if (status.get('reblog')) {
|
|
return null;
|
|
}
|
|
|
|
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]);
|
|
|
|
media = (
|
|
<Bundle fetchComponent={Video} loading={this.renderLoadingVideoPlayer} >
|
|
{Component => (
|
|
<Component
|
|
preview={video.get('preview_url')}
|
|
src={video.get('url')}
|
|
width={239}
|
|
height={110}
|
|
inline
|
|
sensitive={status.get('sensitive')}
|
|
revealed={false}
|
|
onOpenVideo={noop}
|
|
/>
|
|
)}
|
|
</Bundle>
|
|
);
|
|
} else {
|
|
media = (
|
|
<Bundle fetchComponent={MediaGallery} loading={this.renderLoadingMediaGallery} >
|
|
{Component => <Component media={status.get('media_attachments')} sensitive={status.get('sensitive')} revealed={false} height={110} onOpenMedia={noop} />}
|
|
</Bundle>
|
|
);
|
|
}
|
|
}
|
|
|
|
return (
|
|
<div className='status-check-box'>
|
|
<div className='status-check-box__status'>
|
|
<StatusContent
|
|
status={status}
|
|
media={media}
|
|
/>
|
|
</div>
|
|
|
|
<div className='status-check-box-toggle'>
|
|
<Toggle checked={checked} onChange={onToggle} disabled={disabled} />
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
}
|