parent
							
								
									e2921375c3
								
							
						
					
					
						commit
						6bbcd99f14
					
				| @ -516,8 +516,8 @@ class Status extends ImmutablePureComponent { | |||||||
|     const { isExpanded, isCollapsed, forceFilter } = this.state; |     const { isExpanded, isCollapsed, forceFilter } = this.state; | ||||||
|     let background = null; |     let background = null; | ||||||
|     let attachments = null; |     let attachments = null; | ||||||
|     let media = null; |     let media = []; | ||||||
|     let mediaIcon = null; |     let mediaIcons = []; | ||||||
| 
 | 
 | ||||||
|     if (status === null) { |     if (status === null) { | ||||||
|       return null; |       return null; | ||||||
| @ -586,25 +586,27 @@ class Status extends ImmutablePureComponent { | |||||||
|     //  After we have generated our appropriate media element and stored it in
 |     //  After we have generated our appropriate media element and stored it in
 | ||||||
|     //  `media`, we snatch the thumbnail to use as our `background` if media
 |     //  `media`, we snatch the thumbnail to use as our `background` if media
 | ||||||
|     //  backgrounds for collapsed statuses are enabled.
 |     //  backgrounds for collapsed statuses are enabled.
 | ||||||
|  | 
 | ||||||
|     attachments = status.get('media_attachments'); |     attachments = status.get('media_attachments'); | ||||||
|     if (status.get('poll')) { |     if (status.get('poll')) { | ||||||
|       media = <PollContainer pollId={status.get('poll')} />; |       media.push(<PollContainer pollId={status.get('poll')} />); | ||||||
|       mediaIcon = 'tasks'; |       mediaIcons.push('tasks'); | ||||||
|     } else if (usingPiP) { |     } | ||||||
|       media = <PictureInPicturePlaceholder width={this.props.cachedMediaWidth} />; |     if (usingPiP) { | ||||||
|       mediaIcon = 'video-camera'; |       media.push(<PictureInPicturePlaceholder width={this.props.cachedMediaWidth} />); | ||||||
|  |       mediaIcons.push('video-camera'); | ||||||
|     } else if (attachments.size > 0) { |     } else if (attachments.size > 0) { | ||||||
|       if (muted || attachments.some(item => item.get('type') === 'unknown')) { |       if (muted || attachments.some(item => item.get('type') === 'unknown')) { | ||||||
|         media = ( |         media.push( | ||||||
|           <AttachmentList |           <AttachmentList | ||||||
|             compact |             compact | ||||||
|             media={status.get('media_attachments')} |             media={status.get('media_attachments')} | ||||||
|           /> |           />, | ||||||
|         ); |         ); | ||||||
|       } else if (attachments.getIn([0, 'type']) === 'audio') { |       } else if (attachments.getIn([0, 'type']) === 'audio') { | ||||||
|         const attachment = status.getIn(['media_attachments', 0]); |         const attachment = status.getIn(['media_attachments', 0]); | ||||||
| 
 | 
 | ||||||
|         media = ( |         media.push( | ||||||
|           <Bundle fetchComponent={Audio} loading={this.renderLoadingAudioPlayer} > |           <Bundle fetchComponent={Audio} loading={this.renderLoadingAudioPlayer} > | ||||||
|             {Component => ( |             {Component => ( | ||||||
|               <Component |               <Component | ||||||
| @ -621,13 +623,13 @@ class Status extends ImmutablePureComponent { | |||||||
|                 deployPictureInPicture={this.handleDeployPictureInPicture} |                 deployPictureInPicture={this.handleDeployPictureInPicture} | ||||||
|               /> |               /> | ||||||
|             )} |             )} | ||||||
|           </Bundle> |           </Bundle>, | ||||||
|         ); |         ); | ||||||
|         mediaIcon = 'music'; |         mediaIcons.push('music'); | ||||||
|       } else if (attachments.getIn([0, 'type']) === 'video') { |       } else if (attachments.getIn([0, 'type']) === 'video') { | ||||||
|         const attachment = status.getIn(['media_attachments', 0]); |         const attachment = status.getIn(['media_attachments', 0]); | ||||||
| 
 | 
 | ||||||
|         media = ( |         media.push( | ||||||
|           <Bundle fetchComponent={Video} loading={this.renderLoadingVideoPlayer} > |           <Bundle fetchComponent={Video} loading={this.renderLoadingVideoPlayer} > | ||||||
|             {Component => (<Component |             {Component => (<Component | ||||||
|               preview={attachment.get('preview_url')} |               preview={attachment.get('preview_url')} | ||||||
| @ -647,11 +649,11 @@ class Status extends ImmutablePureComponent { | |||||||
|               visible={this.state.showMedia} |               visible={this.state.showMedia} | ||||||
|               onToggleVisibility={this.handleToggleMediaVisibility} |               onToggleVisibility={this.handleToggleMediaVisibility} | ||||||
|             />)} |             />)} | ||||||
|           </Bundle> |           </Bundle>, | ||||||
|         ); |         ); | ||||||
|         mediaIcon = 'video-camera'; |         mediaIcons.push('video-camera'); | ||||||
|       } else {  //  Media type is 'image' or 'gifv'
 |       } else {  //  Media type is 'image' or 'gifv'
 | ||||||
|         media = ( |         media.push( | ||||||
|           <Bundle fetchComponent={MediaGallery} loading={this.renderLoadingMediaGallery}> |           <Bundle fetchComponent={MediaGallery} loading={this.renderLoadingMediaGallery}> | ||||||
|             {Component => ( |             {Component => ( | ||||||
|               <Component |               <Component | ||||||
| @ -667,16 +669,16 @@ class Status extends ImmutablePureComponent { | |||||||
|                 onToggleVisibility={this.handleToggleMediaVisibility} |                 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'])) { |       if (!status.get('sensitive') && !(status.get('spoiler_text').length > 0) && settings.getIn(['collapsed', 'backgrounds', 'preview_images'])) { | ||||||
|         background = attachments.getIn([0, 'preview_url']); |         background = attachments.getIn([0, 'preview_url']); | ||||||
|       } |       } | ||||||
|     } else if (status.get('card') && settings.get('inline_preview_cards')) { |     } else if (status.get('card') && settings.get('inline_preview_cards')) { | ||||||
|       media = ( |       media.push( | ||||||
|         <Card |         <Card | ||||||
|           onOpenMedia={this.handleOpenMedia} |           onOpenMedia={this.handleOpenMedia} | ||||||
|           card={status.get('card')} |           card={status.get('card')} | ||||||
| @ -684,9 +686,9 @@ class Status extends ImmutablePureComponent { | |||||||
|           cacheWidth={this.props.cacheMediaWidth} |           cacheWidth={this.props.cacheMediaWidth} | ||||||
|           defaultWidth={this.props.cachedMediaWidth} |           defaultWidth={this.props.cachedMediaWidth} | ||||||
|           sensitive={status.get('sensitive')} |           sensitive={status.get('sensitive')} | ||||||
|         /> |         />, | ||||||
|       ); |       ); | ||||||
|       mediaIcon = 'link'; |       mediaIcons.push('link'); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     //  Here we prepare extra data-* attributes for CSS selectors.
 |     //  Here we prepare extra data-* attributes for CSS selectors.
 | ||||||
| @ -753,7 +755,7 @@ class Status extends ImmutablePureComponent { | |||||||
|             </span> |             </span> | ||||||
|             <StatusIcons |             <StatusIcons | ||||||
|               status={status} |               status={status} | ||||||
|               mediaIcon={mediaIcon} |               mediaIcons={mediaIcons} | ||||||
|               collapsible={settings.getIn(['collapsed', 'enabled'])} |               collapsible={settings.getIn(['collapsed', 'enabled'])} | ||||||
|               collapsed={isCollapsed} |               collapsed={isCollapsed} | ||||||
|               setCollapsed={setCollapsed} |               setCollapsed={setCollapsed} | ||||||
| @ -763,7 +765,7 @@ class Status extends ImmutablePureComponent { | |||||||
|           <StatusContent |           <StatusContent | ||||||
|             status={status} |             status={status} | ||||||
|             media={media} |             media={media} | ||||||
|             mediaIcon={mediaIcon} |             mediaIcons={mediaIcons} | ||||||
|             expanded={isExpanded} |             expanded={isExpanded} | ||||||
|             onExpandedToggle={this.handleExpandedToggle} |             onExpandedToggle={this.handleExpandedToggle} | ||||||
|             parseClick={parseClick} |             parseClick={parseClick} | ||||||
|  | |||||||
| @ -69,7 +69,7 @@ export default class StatusContent extends React.PureComponent { | |||||||
|     expanded: PropTypes.bool, |     expanded: PropTypes.bool, | ||||||
|     collapsed: PropTypes.bool, |     collapsed: PropTypes.bool, | ||||||
|     onExpandedToggle: PropTypes.func, |     onExpandedToggle: PropTypes.func, | ||||||
|     media: PropTypes.element, |     media: PropTypes.node, | ||||||
|     mediaIcon: PropTypes.string, |     mediaIcon: PropTypes.string, | ||||||
|     parseClick: PropTypes.func, |     parseClick: PropTypes.func, | ||||||
|     disabled: PropTypes.bool, |     disabled: PropTypes.bool, | ||||||
| @ -286,28 +286,35 @@ export default class StatusContent extends React.PureComponent { | |||||||
|         </Permalink> |         </Permalink> | ||||||
|       )).reduce((aggregate, item) => [...aggregate, item, ' '], []); |       )).reduce((aggregate, item) => [...aggregate, item, ' '], []); | ||||||
| 
 | 
 | ||||||
|       const toggleText = hidden ? [ |       let toggleText = null; | ||||||
|  |       if (hidden) { | ||||||
|  |         toggleText = [ | ||||||
|           <FormattedMessage |           <FormattedMessage | ||||||
|             id='status.show_more' |             id='status.show_more' | ||||||
|             defaultMessage='Show more' |             defaultMessage='Show more' | ||||||
|             key='0' |             key='0' | ||||||
|           />, |           />, | ||||||
|         mediaIcon ? ( |         ]; | ||||||
|  |         if (mediaIcon) { | ||||||
|  |           toggleText.push( | ||||||
|             <Icon |             <Icon | ||||||
|               fixedWidth |               fixedWidth | ||||||
|               className='status__content__spoiler-icon' |               className='status__content__spoiler-icon' | ||||||
|               id={mediaIcon} |               id={mediaIcon} | ||||||
|               aria-hidden='true' |               aria-hidden='true' | ||||||
|               key='1' |               key='1' | ||||||
|           /> |             />, | ||||||
|         ) : null, |           ); | ||||||
|       ] : [ |         } | ||||||
|  |       } else { | ||||||
|  |         toggleText = ( | ||||||
|           <FormattedMessage |           <FormattedMessage | ||||||
|             id='status.show_less' |             id='status.show_less' | ||||||
|             defaultMessage='Show less' |             defaultMessage='Show less' | ||||||
|             key='0' |             key='0' | ||||||
|         />, |           /> | ||||||
|       ]; |         ); | ||||||
|  |       } | ||||||
| 
 | 
 | ||||||
|       if (hidden) { |       if (hidden) { | ||||||
|         mentionsPlaceholder = <div>{mentionLinks}</div>; |         mentionsPlaceholder = <div>{mentionLinks}</div>; | ||||||
|  | |||||||
| @ -27,7 +27,7 @@ class StatusIcons extends React.PureComponent { | |||||||
| 
 | 
 | ||||||
|   static propTypes = { |   static propTypes = { | ||||||
|     status: ImmutablePropTypes.map.isRequired, |     status: ImmutablePropTypes.map.isRequired, | ||||||
|     mediaIcon: PropTypes.string, |     mediaIcons: PropTypes.arrayOf(PropTypes.string), | ||||||
|     collapsible: PropTypes.bool, |     collapsible: PropTypes.bool, | ||||||
|     collapsed: PropTypes.bool, |     collapsed: PropTypes.bool, | ||||||
|     directMessage: PropTypes.bool, |     directMessage: PropTypes.bool, | ||||||
| @ -44,8 +44,8 @@ class StatusIcons extends React.PureComponent { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   mediaIconTitleText () { |   mediaIconTitleText (mediaIcon) { | ||||||
|     const { intl, mediaIcon } = this.props; |     const { intl } = this.props; | ||||||
| 
 | 
 | ||||||
|     switch (mediaIcon) { |     switch (mediaIcon) { | ||||||
|       case 'link': |       case 'link': | ||||||
| @ -61,11 +61,24 @@ class StatusIcons extends React.PureComponent { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   renderIcon (mediaIcon) { | ||||||
|  |     return ( | ||||||
|  |       <Icon | ||||||
|  |         fixedWidth | ||||||
|  |         className='status__media-icon' | ||||||
|  |         key={`media-icon--${mediaIcon}`} | ||||||
|  |         id={mediaIcon} | ||||||
|  |         aria-hidden='true' | ||||||
|  |         title={this.mediaIconTitleText(mediaIcon)} | ||||||
|  |       /> | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   //  Rendering.
 |   //  Rendering.
 | ||||||
|   render () { |   render () { | ||||||
|     const { |     const { | ||||||
|       status, |       status, | ||||||
|       mediaIcon, |       mediaIcons, | ||||||
|       collapsible, |       collapsible, | ||||||
|       collapsed, |       collapsed, | ||||||
|       directMessage, |       directMessage, | ||||||
| @ -90,15 +103,7 @@ class StatusIcons extends React.PureComponent { | |||||||
|             aria-hidden='true' |             aria-hidden='true' | ||||||
|             title={intl.formatMessage(messages.localOnly)} |             title={intl.formatMessage(messages.localOnly)} | ||||||
|           />} |           />} | ||||||
|         {mediaIcon ? ( |         { !!mediaIcons && mediaIcons.map(icon => this.renderIcon(icon)) } | ||||||
|           <Icon |  | ||||||
|             fixedWidth |  | ||||||
|             className='status__media-icon' |  | ||||||
|             id={mediaIcon} |  | ||||||
|             aria-hidden='true' |  | ||||||
|             title={this.mediaIconTitleText()} |  | ||||||
|           /> |  | ||||||
|         ) : null} |  | ||||||
|         {!directMessage && <VisibilityIcon visibility={status.get('visibility')} />} |         {!directMessage && <VisibilityIcon visibility={status.get('visibility')} />} | ||||||
|         {collapsible ? ( |         {collapsible ? ( | ||||||
|           <IconButton |           <IconButton | ||||||
|  | |||||||
| @ -119,8 +119,8 @@ export default class DetailedStatus extends ImmutablePureComponent { | |||||||
|       return null; |       return null; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     let media           = null; |     let media           = []; | ||||||
|     let mediaIcon       = null; |     let mediaIcons      = []; | ||||||
|     let applicationLink = ''; |     let applicationLink = ''; | ||||||
|     let reblogLink = ''; |     let reblogLink = ''; | ||||||
|     let reblogIcon = 'retweet'; |     let reblogIcon = 'retweet'; | ||||||
| @ -131,18 +131,19 @@ export default class DetailedStatus extends ImmutablePureComponent { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (status.get('poll')) { |     if (status.get('poll')) { | ||||||
|       media = <PollContainer pollId={status.get('poll')} />; |       media.push(<PollContainer pollId={status.get('poll')} />); | ||||||
|       mediaIcon = 'tasks'; |       mediaIcons.push('tasks'); | ||||||
|     } else if (usingPiP) { |     } | ||||||
|       media = <PictureInPicturePlaceholder />; |     if (usingPiP) { | ||||||
|       mediaIcon = 'video-camera'; |       media.push(<PictureInPicturePlaceholder />); | ||||||
|  |       mediaIcons.push('video-camera'); | ||||||
|     } else if (status.get('media_attachments').size > 0) { |     } else if (status.get('media_attachments').size > 0) { | ||||||
|       if (status.get('media_attachments').some(item => item.get('type') === 'unknown')) { |       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') { |       } else if (status.getIn(['media_attachments', 0, 'type']) === 'audio') { | ||||||
|         const attachment = status.getIn(['media_attachments', 0]); |         const attachment = status.getIn(['media_attachments', 0]); | ||||||
| 
 | 
 | ||||||
|         media = ( |         media.push( | ||||||
|           <Audio |           <Audio | ||||||
|             src={attachment.get('url')} |             src={attachment.get('url')} | ||||||
|             alt={attachment.get('description')} |             alt={attachment.get('description')} | ||||||
| @ -152,12 +153,12 @@ export default class DetailedStatus extends ImmutablePureComponent { | |||||||
|             foregroundColor={attachment.getIn(['meta', 'colors', 'foreground'])} |             foregroundColor={attachment.getIn(['meta', 'colors', 'foreground'])} | ||||||
|             accentColor={attachment.getIn(['meta', 'colors', 'accent'])} |             accentColor={attachment.getIn(['meta', 'colors', 'accent'])} | ||||||
|             height={150} |             height={150} | ||||||
|           /> |           />, | ||||||
|         ); |         ); | ||||||
|         mediaIcon = 'music'; |         mediaIcons.push('music'); | ||||||
|       } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') { |       } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') { | ||||||
|         const attachment = status.getIn(['media_attachments', 0]); |         const attachment = status.getIn(['media_attachments', 0]); | ||||||
|         media = ( |         media.push( | ||||||
|           <Video |           <Video | ||||||
|             preview={attachment.get('preview_url')} |             preview={attachment.get('preview_url')} | ||||||
|             frameRate={attachment.getIn(['meta', 'original', 'frame_rate'])} |             frameRate={attachment.getIn(['meta', 'original', 'frame_rate'])} | ||||||
| @ -173,11 +174,11 @@ export default class DetailedStatus extends ImmutablePureComponent { | |||||||
|             autoplay |             autoplay | ||||||
|             visible={this.props.showMedia} |             visible={this.props.showMedia} | ||||||
|             onToggleVisibility={this.props.onToggleMediaVisibility} |             onToggleVisibility={this.props.onToggleMediaVisibility} | ||||||
|           /> |           />, | ||||||
|         ); |         ); | ||||||
|         mediaIcon = 'video-camera'; |         mediaIcons.push('video-camera'); | ||||||
|       } else { |       } else { | ||||||
|         media = ( |         media.push( | ||||||
|           <MediaGallery |           <MediaGallery | ||||||
|             standalone |             standalone | ||||||
|             sensitive={status.get('sensitive')} |             sensitive={status.get('sensitive')} | ||||||
| @ -188,13 +189,13 @@ export default class DetailedStatus extends ImmutablePureComponent { | |||||||
|             onOpenMedia={this.props.onOpenMedia} |             onOpenMedia={this.props.onOpenMedia} | ||||||
|             visible={this.props.showMedia} |             visible={this.props.showMedia} | ||||||
|             onToggleVisibility={this.props.onToggleMediaVisibility} |             onToggleVisibility={this.props.onToggleMediaVisibility} | ||||||
|           /> |           />, | ||||||
|         ); |         ); | ||||||
|         mediaIcon = 'picture-o'; |         mediaIcons.push('picture-o'); | ||||||
|       } |       } | ||||||
|     } else if (status.get('card')) { |     } else if (status.get('card')) { | ||||||
|       media = <Card sensitive={status.get('sensitive')} onOpenMedia={this.props.onOpenMedia} card={status.get('card')} />; |       media.push(<Card sensitive={status.get('sensitive')} onOpenMedia={this.props.onOpenMedia} card={status.get('card')} />); | ||||||
|       mediaIcon = 'link'; |       mediaIcons.push('link'); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (status.get('application')) { |     if (status.get('application')) { | ||||||
| @ -268,7 +269,7 @@ export default class DetailedStatus extends ImmutablePureComponent { | |||||||
|           <StatusContent |           <StatusContent | ||||||
|             status={status} |             status={status} | ||||||
|             media={media} |             media={media} | ||||||
|             mediaIcon={mediaIcon} |             mediaIcons={mediaIcons} | ||||||
|             expanded={expanded} |             expanded={expanded} | ||||||
|             collapsed={false} |             collapsed={false} | ||||||
|             onExpandedToggle={onToggleHidden} |             onExpandedToggle={onToggleHidden} | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user