From b8bbac31e5ccba25d338e24b6f54504abe5efbe4 Mon Sep 17 00:00:00 2001 From: Justin Date: Thu, 29 Sep 2022 10:44:06 -0400 Subject: [PATCH] Improve 'In Review' UX --- .../truthsocial-status-in-moderation.json | 2 +- app/soapbox/components/media_gallery.js | 58 ++---------- app/soapbox/components/status-media.tsx | 1 - app/soapbox/components/status.tsx | 17 +++- .../__tests__/moderation-overlay.test.tsx | 19 ++++ .../statuses/moderation-overlay.tsx | 93 +++++++++++++++++++ app/soapbox/features/status/index.tsx | 12 ++- app/soapbox/utils/status.ts | 4 +- 8 files changed, 148 insertions(+), 58 deletions(-) create mode 100644 app/soapbox/components/statuses/__tests__/moderation-overlay.test.tsx create mode 100644 app/soapbox/components/statuses/moderation-overlay.tsx diff --git a/app/soapbox/__fixtures__/truthsocial-status-in-moderation.json b/app/soapbox/__fixtures__/truthsocial-status-in-moderation.json index e9402876f..7613ebd93 100644 --- a/app/soapbox/__fixtures__/truthsocial-status-in-moderation.json +++ b/app/soapbox/__fixtures__/truthsocial-status-in-moderation.json @@ -82,4 +82,4 @@ "emojis": [], "card": null, "poll": null -} +} \ No newline at end of file diff --git a/app/soapbox/components/media_gallery.js b/app/soapbox/components/media_gallery.js index 22ed2473d..7bbbbd5b7 100644 --- a/app/soapbox/components/media_gallery.js +++ b/app/soapbox/components/media_gallery.js @@ -7,7 +7,6 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import { connect } from 'react-redux'; import { getSettings } from 'soapbox/actions/settings'; -import { getSoapboxConfig } from 'soapbox/actions/soapbox'; import Blurhash from 'soapbox/components/blurhash'; import Icon from 'soapbox/components/icon'; import StillImage from 'soapbox/components/still_image'; @@ -264,14 +263,9 @@ class Item extends React.PureComponent { } -const mapStateToMediaGalleryProps = state => { - const { links } = getSoapboxConfig(state); - - return { - displayMedia: getSettings(state).get('displayMedia'), - links, - }; -}; +const mapStateToMediaGalleryProps = state => ({ + displayMedia: getSettings(state).get('displayMedia'), +}); export default @connect(mapStateToMediaGalleryProps) @injectIntl @@ -291,7 +285,6 @@ class MediaGallery extends React.PureComponent { onToggleVisibility: PropTypes.func, displayMedia: PropTypes.string, compact: PropTypes.bool, - links: ImmutablePropTypes.map, }; static defaultProps = { @@ -575,7 +568,7 @@ class MediaGallery extends React.PureComponent { } render() { - const { media, intl, sensitive, compact, inReview, links } = this.props; + const { media, intl, sensitive, compact } = this.props; const { visible } = this.state; const sizeData = this.getSizeData(media.size); @@ -594,22 +587,14 @@ class MediaGallery extends React.PureComponent { /> )); - let warning, summary; + let warning; if (sensitive) { warning = ; - } else if (inReview) { - warning = ; } else { warning = ; } - if (inReview) { - summary = ; - } else { - summary = ; - } - return (
- {(sensitive || inReview) && ( + {sensitive && ( (visible || compact) ? ( + + )} + + + +
+ )} +
+ ); +}; + +export default ModerationOverlay; \ No newline at end of file diff --git a/app/soapbox/features/status/index.tsx b/app/soapbox/features/status/index.tsx index 81cb0a152..c5130b759 100644 --- a/app/soapbox/features/status/index.tsx +++ b/app/soapbox/features/status/index.tsx @@ -29,6 +29,7 @@ import MissingIndicator from 'soapbox/components/missing_indicator'; import PullToRefresh from 'soapbox/components/pull-to-refresh'; import ScrollableList from 'soapbox/components/scrollable_list'; import StatusActionBar from 'soapbox/components/status-action-bar'; +import ModerationOverlay from 'soapbox/components/statuses/moderation-overlay'; import SubNavigation from 'soapbox/components/sub_navigation'; import Tombstone from 'soapbox/components/tombstone'; import { Column, Stack } from 'soapbox/components/ui'; @@ -134,6 +135,7 @@ const Thread: React.FC = (props) => { const me = useAppSelector(state => state.me); const status = useAppSelector(state => getStatus(state, { id: props.params.statusId })); const displayMedia = settings.get('displayMedia') as DisplayMedia; + const inReview = status?.visibility === 'self'; const { ancestorsIds, descendantsIds } = useAppSelector(state => { let ancestorsIds = ImmutableOrderedSet(); @@ -459,11 +461,19 @@ const Thread: React.FC = (props) => {
+ {inReview ? ( + + ) : null} +