]> cat aescling's git repositories - mastodon.git/commitdiff
Fix display of toots without text content (#15665)
authorClaire <claire.github-309c@sitedethib.com>
Wed, 5 May 2021 21:41:02 +0000 (23:41 +0200)
committerGitHub <noreply@github.com>
Wed, 5 May 2021 21:41:02 +0000 (23:41 +0200)
* Fix display of toots without text content

- fixes CWs from other implementations not showing up if toot has no text
  contents
- fixes the “Read more” thread indicator not showing up on threaded toots
  with no text contents

* Move content-less toot's CW to conents

app/javascript/mastodon/actions/importer/normalizer.js
app/javascript/mastodon/components/status_content.js

index 087f264910f94cf2aeec110b0209fd255e1a01ba..abd5681d47a7491738b7048e122ada5019af3613 100644 (file)
@@ -62,6 +62,13 @@ export function normalizeStatus(status, normalOldStatus) {
     normalStatus.spoilerHtml = normalOldStatus.get('spoilerHtml');
     normalStatus.hidden = normalOldStatus.get('hidden');
   } else {
+    // If the status has a CW but no contents, treat the CW as if it were the
+    // status' contents, to avoid having a CW toggle with seemingly no effect.
+    if (normalStatus.spoiler_text && !normalStatus.content) {
+      normalStatus.content = normalStatus.spoiler_text;
+      normalStatus.spoiler_text = '';
+    }
+
     const spoilerText   = normalStatus.spoiler_text || '';
     const searchContent = ([spoilerText, status.content].concat((status.poll && status.poll.options) ? status.poll.options.map(option => option.title) : [])).join('\n\n').replace(/<br\s*\/?>/g, '\n').replace(/<\/p><p>/g, '\n\n');
     const emojiMap      = makeEmojiMap(normalStatus);
index 35bd505142e16ca2ab08ec5bdf5bbc35f5e0c9d7..bf21a9fd6b659081118b8d1b53ec267612b10b1a 100644 (file)
@@ -170,10 +170,6 @@ export default class StatusContent extends React.PureComponent {
   render () {
     const { status } = this.props;
 
-    if (status.get('content').length === 0) {
-      return null;
-    }
-
     const hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden;
     const renderReadMore = this.props.onClick && status.get('collapsed');
     const renderViewThread = this.props.showThread && status.get('in_reply_to_id') && status.get('in_reply_to_account_id') === status.getIn(['account', 'id']);