|
|
|
@ -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 = <PollContainer pollId={status.get('poll')} />; |
|
|
|
|
mediaIcon = 'tasks'; |
|
|
|
|
} else if (usingPiP) { |
|
|
|
|
media = <PictureInPicturePlaceholder width={this.props.cachedMediaWidth} />; |
|
|
|
|
mediaIcon = 'video-camera'; |
|
|
|
|
media.push(<PollContainer pollId={status.get('poll')} />); |
|
|
|
|
mediaIcons.push('tasks'); |
|
|
|
|
} |
|
|
|
|
if (usingPiP) { |
|
|
|
|
media.push(<PictureInPicturePlaceholder width={this.props.cachedMediaWidth} />); |
|
|
|
|
mediaIcons.push('video-camera'); |
|
|
|
|
} else if (attachments.size > 0) { |
|
|
|
|
if (muted || attachments.some(item => item.get('type') === 'unknown')) { |
|
|
|
|
media = ( |
|
|
|
|
media.push( |
|
|
|
|
<AttachmentList |
|
|
|
|
compact |
|
|
|
|
media={status.get('media_attachments')} |
|
|
|
|
/> |
|
|
|
|
/>, |
|
|
|
|
); |
|
|
|
|
} else if (attachments.getIn([0, 'type']) === 'audio') { |
|
|
|
|
const attachment = status.getIn(['media_attachments', 0]); |
|
|
|
|
|
|
|
|
|
media = ( |
|
|
|
|
media.push( |
|
|
|
|
<Bundle fetchComponent={Audio} loading={this.renderLoadingAudioPlayer} > |
|
|
|
|
{Component => ( |
|
|
|
|
<Component |
|
|
|
@ -621,13 +623,13 @@ class Status extends ImmutablePureComponent { |
|
|
|
|
deployPictureInPicture={this.handleDeployPictureInPicture} |
|
|
|
|
/> |
|
|
|
|
)} |
|
|
|
|
</Bundle> |
|
|
|
|
</Bundle>, |
|
|
|
|
); |
|
|
|
|
mediaIcon = 'music'; |
|
|
|
|
mediaIcons.push('music'); |
|
|
|
|
} else if (attachments.getIn([0, 'type']) === 'video') { |
|
|
|
|
const attachment = status.getIn(['media_attachments', 0]); |
|
|
|
|
|
|
|
|
|
media = ( |
|
|
|
|
media.push( |
|
|
|
|
<Bundle fetchComponent={Video} loading={this.renderLoadingVideoPlayer} > |
|
|
|
|
{Component => (<Component |
|
|
|
|
preview={attachment.get('preview_url')} |
|
|
|
@ -647,11 +649,11 @@ class Status extends ImmutablePureComponent { |
|
|
|
|
visible={this.state.showMedia} |
|
|
|
|
onToggleVisibility={this.handleToggleMediaVisibility} |
|
|
|
|
/>)} |
|
|
|
|
</Bundle> |
|
|
|
|
</Bundle>, |
|
|
|
|
); |
|
|
|
|
mediaIcon = 'video-camera'; |
|
|
|
|
mediaIcons.push('video-camera'); |
|
|
|
|
} else { // Media type is 'image' or 'gifv'
|
|
|
|
|
media = ( |
|
|
|
|
media.push( |
|
|
|
|
<Bundle fetchComponent={MediaGallery} loading={this.renderLoadingMediaGallery}> |
|
|
|
|
{Component => ( |
|
|
|
|
<Component |
|
|
|
@ -667,16 +669,16 @@ class Status extends ImmutablePureComponent { |
|
|
|
|
onToggleVisibility={this.handleToggleMediaVisibility} |
|
|
|
|
/> |
|
|
|
|
)} |
|
|
|
|
</Bundle> |
|
|
|
|
</Bundle>, |
|
|
|
|
); |
|
|
|
|
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( |
|
|
|
|
<Card |
|
|
|
|
onOpenMedia={this.handleOpenMedia} |
|
|
|
|
card={status.get('card')} |
|
|
|
@ -684,9 +686,9 @@ class Status extends ImmutablePureComponent { |
|
|
|
|
cacheWidth={this.props.cacheMediaWidth} |
|
|
|
|
defaultWidth={this.props.cachedMediaWidth} |
|
|
|
|
sensitive={status.get('sensitive')} |
|
|
|
|
/> |
|
|
|
|
/>, |
|
|
|
|
); |
|
|
|
|
mediaIcon = 'link'; |
|
|
|
|
mediaIcons.push('link'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Here we prepare extra data-* attributes for CSS selectors.
|
|
|
|
@ -753,7 +755,7 @@ class Status extends ImmutablePureComponent { |
|
|
|
|
</span> |
|
|
|
|
<StatusIcons |
|
|
|
|
status={status} |
|
|
|
|
mediaIcon={mediaIcon} |
|
|
|
|
mediaIcons={mediaIcons} |
|
|
|
|
collapsible={settings.getIn(['collapsed', 'enabled'])} |
|
|
|
|
collapsed={isCollapsed} |
|
|
|
|
setCollapsed={setCollapsed} |
|
|
|
@ -763,7 +765,7 @@ class Status extends ImmutablePureComponent { |
|
|
|
|
<StatusContent |
|
|
|
|
status={status} |
|
|
|
|
media={media} |
|
|
|
|
mediaIcon={mediaIcon} |
|
|
|
|
mediaIcons={mediaIcons} |
|
|
|
|
expanded={isExpanded} |
|
|
|
|
onExpandedToggle={this.handleExpandedToggle} |
|
|
|
|
parseClick={parseClick} |
|
|
|
|