|
|
|
@ -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}
|
|
|
|
|