From 5d2ef7a616b3f5ae2352fd9f6de7bbf17b010f86 Mon Sep 17 00:00:00 2001 From: kibigo! Date: Mon, 8 Jan 2018 18:25:29 -0800 Subject: Show SENSITIVE tag on sensitive images (#267) --- .../flavours/glitch/components/media_gallery.js | 126 ++++++++++++++------- 1 file changed, 88 insertions(+), 38 deletions(-) (limited to 'app/javascript/flavours/glitch/components/media_gallery.js') diff --git a/app/javascript/flavours/glitch/components/media_gallery.js b/app/javascript/flavours/glitch/components/media_gallery.js index d2e80de49..bf015fd79 100644 --- a/app/javascript/flavours/glitch/components/media_gallery.js +++ b/app/javascript/flavours/glitch/components/media_gallery.js @@ -9,7 +9,26 @@ import classNames from 'classnames'; import { autoPlayGif } from 'flavours/glitch/util/initial_state'; const messages = defineMessages({ - toggle_visible: { id: 'media_gallery.toggle_visible', defaultMessage: 'Toggle visibility' }, + hidden: { + defaultMessage: 'Media hidden', + id: 'status.media_hidden', + }, + sensitive: { + defaultMessage: 'Sensitive', + id: 'media_gallery.sensitive', + }, + toggle: { + defaultMessage: 'Click to view', + id: 'status.sensitive_toggle' + }, + toggle_visible: { + defaultMessage: 'Toggle visibility', + id: 'media_gallery.toggle_visible', + }, + warning: { + defaultMessage: 'Sensitive content', + id: 'status.sensitive_warning', + }, }); class Item extends React.PureComponent { @@ -206,48 +225,79 @@ export default class MediaGallery extends React.PureComponent { this.props.onOpenMedia(this.props.media, index); } - isStandaloneEligible() { - const { media, standalone } = this.props; - return standalone && media.size === 1 && media.getIn([0, 'meta', 'small', 'aspect']); - } - render () { - const { media, intl, sensitive, letterbox, fullwidth } = this.props; + const { + handleClick, + handleOpen, + } = this; + const { + fullwidth, + intl, + letterbox, + media, + sensitive, + standalone, + } = this.props; const { visible } = this.state; const size = media.take(4).size; - - let children; - - if (!visible) { - let warning; - - if (sensitive) { - warning = ; - } else { - warning = ; - } - - children = ( - - ); - } else { - if (this.isStandaloneEligible()) { - children = ; - } else { - children = media.take(4).map((attachment, i) => ); - } - } + const computedClass = classNames('media-gallery', `size-${size}`, { 'full-width': fullwidth }); return ( -
-
- -
- - {children} +
+ {visible ? ( +
+ + {sensitive ? ( + + + + ) : null} +
+ ) : null} + {function () { + switch (true) { + case !visible: + return ( + + ); + case standalone && media.size === 1 && !!media.getIn([0, 'meta', 'small', 'aspect']): + return ( + + ); + default: + return media.take(4).map( + (attachment, i) => ( + + ) + ); + } + }()}
); } -- cgit