From 6bbcd99f1407bf0a34fb7367d4fae42f058c8ac7 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 8 Sep 2021 14:39:14 +0200 Subject: Fix media attachments not being displayed on polls Fixes #1595 --- .../flavours/glitch/components/status.js | 48 ++++++++++---------- .../flavours/glitch/components/status_content.js | 51 ++++++++++++---------- .../flavours/glitch/components/status_icons.js | 31 +++++++------ .../features/status/components/detailed_status.js | 41 ++++++++--------- 4 files changed, 93 insertions(+), 78 deletions(-) (limited to 'app') diff --git a/app/javascript/flavours/glitch/components/status.js b/app/javascript/flavours/glitch/components/status.js index d3944b0c3..b72c2417c 100644 --- a/app/javascript/flavours/glitch/components/status.js +++ b/app/javascript/flavours/glitch/components/status.js @@ -516,8 +516,8 @@ class Status extends ImmutablePureComponent { const { isExpanded, isCollapsed, forceFilter } = this.state; let background = null; let attachments = null; - let media = null; - let mediaIcon = null; + let media = []; + let mediaIcons = []; if (status === null) { return null; @@ -586,25 +586,27 @@ class Status extends ImmutablePureComponent { // After we have generated our appropriate media element and stored it in // `media`, we snatch the thumbnail to use as our `background` if media // backgrounds for collapsed statuses are enabled. + attachments = status.get('media_attachments'); if (status.get('poll')) { - media = ; - mediaIcon = 'tasks'; - } else if (usingPiP) { - media = ; - mediaIcon = 'video-camera'; + media.push(); + mediaIcons.push('tasks'); + } + if (usingPiP) { + media.push(); + mediaIcons.push('video-camera'); } else if (attachments.size > 0) { if (muted || attachments.some(item => item.get('type') === 'unknown')) { - media = ( + media.push( + />, ); } else if (attachments.getIn([0, 'type']) === 'audio') { const attachment = status.getIn(['media_attachments', 0]); - media = ( + media.push( {Component => ( )} - + , ); - mediaIcon = 'music'; + mediaIcons.push('music'); } else if (attachments.getIn([0, 'type']) === 'video') { const attachment = status.getIn(['media_attachments', 0]); - media = ( + media.push( {Component => ()} - + , ); - mediaIcon = 'video-camera'; + mediaIcons.push('video-camera'); } else { // Media type is 'image' or 'gifv' - media = ( + media.push( {Component => ( )} - + , ); - mediaIcon = 'picture-o'; + mediaIcons.push('picture-o'); } if (!status.get('sensitive') && !(status.get('spoiler_text').length > 0) && settings.getIn(['collapsed', 'backgrounds', 'preview_images'])) { background = attachments.getIn([0, 'preview_url']); } } else if (status.get('card') && settings.get('inline_preview_cards')) { - media = ( + media.push( + />, ); - mediaIcon = 'link'; + mediaIcons.push('link'); } // Here we prepare extra data-* attributes for CSS selectors. @@ -753,7 +755,7 @@ class Status extends ImmutablePureComponent { )).reduce((aggregate, item) => [...aggregate, item, ' '], []); - const toggleText = hidden ? [ - , - mediaIcon ? ( -