mirror of
				https://github.com/mastodon/mastodon.git
				synced 2025-10-31 05:11:33 +00:00 
			
		
		
		
	Improved styling for media/videos in detailed status view
This commit is contained in:
		
							parent
							
								
									15f51dbf8c
								
							
						
					
					
						commit
						62b384824d
					
				|  | @ -4,7 +4,16 @@ import IconButton         from './icon_button'; | ||||||
| 
 | 
 | ||||||
| const VideoPlayer = React.createClass({ | const VideoPlayer = React.createClass({ | ||||||
|   propTypes: { |   propTypes: { | ||||||
|     media: ImmutablePropTypes.map.isRequired |     media: ImmutablePropTypes.map.isRequired, | ||||||
|  |     width: React.PropTypes.number, | ||||||
|  |     height: React.PropTypes.number | ||||||
|  |   }, | ||||||
|  | 
 | ||||||
|  |   getDefaultProps () { | ||||||
|  |     return { | ||||||
|  |       width: 196, | ||||||
|  |       height: 110 | ||||||
|  |     }; | ||||||
|   }, |   }, | ||||||
| 
 | 
 | ||||||
|   getInitialState () { |   getInitialState () { | ||||||
|  | @ -21,7 +30,7 @@ const VideoPlayer = React.createClass({ | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|     return ( |     return ( | ||||||
|       <div style={{ cursor: 'default', marginTop: '8px', overflow: 'hidden', width: '196px', height: '110px', boxSizing: 'border-box', background: '#000', position: 'relative' }}> |       <div style={{ cursor: 'default', marginTop: '8px', overflow: 'hidden', width: `${this.props.width}px`, height: `${this.props.height}px`, boxSizing: 'border-box', background: '#000', position: 'relative' }}> | ||||||
|         <div style={{ position: 'absolute', top: '10px', left: '10px', opacity: '0.8' }}><IconButton title='Toggle sound' icon={this.state.muted ? 'volume-up' : 'volume-off'} onClick={this.handleClick} /></div> |         <div style={{ position: 'absolute', top: '10px', left: '10px', opacity: '0.8' }}><IconButton title='Toggle sound' icon={this.state.muted ? 'volume-up' : 'volume-off'} onClick={this.handleClick} /></div> | ||||||
|         <video src={this.props.media.get('url')} autoPlay='true' loop={true} muted={this.state.muted} style={{ width: '100%', height: '100%' }} /> |         <video src={this.props.media.get('url')} autoPlay='true' loop={true} muted={this.state.muted} style={{ width: '100%', height: '100%' }} /> | ||||||
|       </div> |       </div> | ||||||
|  |  | ||||||
|  | @ -16,11 +16,11 @@ const ActionBar = React.createClass({ | ||||||
|   render () { |   render () { | ||||||
|     const { account, me } = this.props; |     const { account, me } = this.props; | ||||||
|      |      | ||||||
|     let followBack   = ''; |     let infoText     = ''; | ||||||
|     let actionButton = ''; |     let actionButton = ''; | ||||||
| 
 | 
 | ||||||
|     if (account.get('id') === me) { |     if (account.get('id') === me) { | ||||||
|       actionButton = 'This is you!'; |       infoText = 'This is you!'; | ||||||
|     } else { |     } else { | ||||||
|       if (account.getIn(['relationship', 'following'])) { |       if (account.getIn(['relationship', 'following'])) { | ||||||
|         actionButton = <Button text='Unfollow' onClick={this.props.onUnfollow} /> |         actionButton = <Button text='Unfollow' onClick={this.props.onUnfollow} /> | ||||||
|  | @ -29,13 +29,13 @@ const ActionBar = React.createClass({ | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       if (account.getIn(['relationship', 'followed_by'])) { |       if (account.getIn(['relationship', 'followed_by'])) { | ||||||
|         followBack = 'Follows you!'; |         infoText = 'Follows you!'; | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return ( |     return ( | ||||||
|       <div style={{ borderTop: '1px solid #363c4b', borderBottom: '1px solid #363c4b', padding: '10px', lineHeight: '36px' }}> |       <div style={{ borderTop: '1px solid #363c4b', borderBottom: '1px solid #363c4b', padding: '10px', lineHeight: '36px' }}> | ||||||
|         {actionButton} {followBack} |         {actionButton} <span style={{ color: '#616b86', fontWeight: '500', textTransform: 'uppercase' }}>{infoText}</span> | ||||||
|       </div> |       </div> | ||||||
|     ); |     ); | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|  | @ -30,6 +30,15 @@ const DetailedStatus = React.createClass({ | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|     const status = this.props.status.get('reblog') ? this.props.status.get('reblog') : this.props.status; |     const status = this.props.status.get('reblog') ? this.props.status.get('reblog') : this.props.status; | ||||||
|  |     let media    = ''; | ||||||
|  | 
 | ||||||
|  |     if (status.get('media_attachments').size > 0) { | ||||||
|  |       if (status.getIn(['media_attachments', 0, 'type']) === 'video') { | ||||||
|  |         media = <VideoPlayer media={status.getIn(['media_attachments', 0])} width={317} height={178} />; | ||||||
|  |       } else { | ||||||
|  |         media = <MediaGallery media={status.get('media_attachments')} height={300} />; | ||||||
|  |       } | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     return ( |     return ( | ||||||
|       <div style={{ background: '#2f3441', padding: '14px 10px' }} className='detailed-status'> |       <div style={{ background: '#2f3441', padding: '14px 10px' }} className='detailed-status'> | ||||||
|  | @ -40,6 +49,8 @@ const DetailedStatus = React.createClass({ | ||||||
| 
 | 
 | ||||||
|         <StatusContent status={status} /> |         <StatusContent status={status} /> | ||||||
| 
 | 
 | ||||||
|  |         {media} | ||||||
|  | 
 | ||||||
|         <div style={{ marginTop: '15px', color: '#616b86', fontSize: '14px', lineHeight: '18px' }}> |         <div style={{ marginTop: '15px', color: '#616b86', fontSize: '14px', lineHeight: '18px' }}> | ||||||
|           <a className='detailed-status__datetime' style={{ color: 'inherit' }} href={status.get('url')} target='_blank' rel='noopener'>{moment(status.get('created_at')).format('HH:mm, DD MMM Y')}</a> · <i className='fa fa-retweet' /><span style={{ fontWeight: '500', fontSize: '12px', marginLeft: '6px', display: 'inline-block' }}>{status.get('reblogs_count')}</span> · <i className='fa fa-star' /><span style={{ fontWeight: '500', fontSize: '12px', marginLeft: '6px', display: 'inline-block' }}>{status.get('favourites_count')}</span> |           <a className='detailed-status__datetime' style={{ color: 'inherit' }} href={status.get('url')} target='_blank' rel='noopener'>{moment(status.get('created_at')).format('HH:mm, DD MMM Y')}</a> · <i className='fa fa-retweet' /><span style={{ fontWeight: '500', fontSize: '12px', marginLeft: '6px', display: 'inline-block' }}>{status.get('reblogs_count')}</span> · <i className='fa fa-star' /><span style={{ fontWeight: '500', fontSize: '12px', marginLeft: '6px', display: 'inline-block' }}>{status.get('favourites_count')}</span> | ||||||
|         </div> |         </div> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Eugen Rochko
						Eugen Rochko