Fix media attachments not being displayed on polls

Fixes #1595
This commit is contained in:
Claire
2021-09-08 14:39:14 +02:00
parent e2921375c3
commit 6bbcd99f14
4 changed files with 93 additions and 78 deletions

View File

@ -119,8 +119,8 @@ export default class DetailedStatus extends ImmutablePureComponent {
return null;
}
let media = null;
let mediaIcon = null;
let media = [];
let mediaIcons = [];
let applicationLink = '';
let reblogLink = '';
let reblogIcon = 'retweet';
@ -131,18 +131,19 @@ export default class DetailedStatus extends ImmutablePureComponent {
}
if (status.get('poll')) {
media = <PollContainer pollId={status.get('poll')} />;
mediaIcon = 'tasks';
} else if (usingPiP) {
media = <PictureInPicturePlaceholder />;
mediaIcon = 'video-camera';
media.push(<PollContainer pollId={status.get('poll')} />);
mediaIcons.push('tasks');
}
if (usingPiP) {
media.push(<PictureInPicturePlaceholder />);
mediaIcons.push('video-camera');
} else if (status.get('media_attachments').size > 0) {
if (status.get('media_attachments').some(item => item.get('type') === 'unknown')) {
media = <AttachmentList media={status.get('media_attachments')} />;
media.push(<AttachmentList media={status.get('media_attachments')} />);
} else if (status.getIn(['media_attachments', 0, 'type']) === 'audio') {
const attachment = status.getIn(['media_attachments', 0]);
media = (
media.push(
<Audio
src={attachment.get('url')}
alt={attachment.get('description')}
@ -152,12 +153,12 @@ export default class DetailedStatus extends ImmutablePureComponent {
foregroundColor={attachment.getIn(['meta', 'colors', 'foreground'])}
accentColor={attachment.getIn(['meta', 'colors', 'accent'])}
height={150}
/>
/>,
);
mediaIcon = 'music';
mediaIcons.push('music');
} else if (status.getIn(['media_attachments', 0, 'type']) === 'video') {
const attachment = status.getIn(['media_attachments', 0]);
media = (
media.push(
<Video
preview={attachment.get('preview_url')}
frameRate={attachment.getIn(['meta', 'original', 'frame_rate'])}
@ -173,11 +174,11 @@ export default class DetailedStatus extends ImmutablePureComponent {
autoplay
visible={this.props.showMedia}
onToggleVisibility={this.props.onToggleMediaVisibility}
/>
/>,
);
mediaIcon = 'video-camera';
mediaIcons.push('video-camera');
} else {
media = (
media.push(
<MediaGallery
standalone
sensitive={status.get('sensitive')}
@ -188,13 +189,13 @@ export default class DetailedStatus extends ImmutablePureComponent {
onOpenMedia={this.props.onOpenMedia}
visible={this.props.showMedia}
onToggleVisibility={this.props.onToggleMediaVisibility}
/>
/>,
);
mediaIcon = 'picture-o';
mediaIcons.push('picture-o');
}
} else if (status.get('card')) {
media = <Card sensitive={status.get('sensitive')} onOpenMedia={this.props.onOpenMedia} card={status.get('card')} />;
mediaIcon = 'link';
media.push(<Card sensitive={status.get('sensitive')} onOpenMedia={this.props.onOpenMedia} card={status.get('card')} />);
mediaIcons.push('link');
}
if (status.get('application')) {
@ -268,7 +269,7 @@ export default class DetailedStatus extends ImmutablePureComponent {
<StatusContent
status={status}
media={media}
mediaIcon={mediaIcon}
mediaIcons={mediaIcons}
expanded={expanded}
collapsed={false}
onExpandedToggle={onToggleHidden}