diff options
-rw-r--r-- | app/assets/javascripts/components/components/status.jsx | 7 | ||||
-rw-r--r-- | app/assets/javascripts/components/components/video_player.jsx | 21 | ||||
-rw-r--r-- | app/views/api/statuses/show.rabl | 2 |
3 files changed, 28 insertions, 2 deletions
diff --git a/app/assets/javascripts/components/components/status.jsx b/app/assets/javascripts/components/components/status.jsx index 8cdbd5625..020d90a12 100644 --- a/app/assets/javascripts/components/components/status.jsx +++ b/app/assets/javascripts/components/components/status.jsx @@ -5,6 +5,7 @@ import PureRenderMixin from 'react-addons-pure-render-mixin'; import IconButton from './icon_button'; import DisplayName from './display_name'; import MediaGallery from './media_gallery'; +import VideoPlayer from './video_player'; import { hashHistory } from 'react-router'; const Status = React.createClass({ @@ -65,7 +66,11 @@ const Status = React.createClass({ } if (status.get('media_attachments').size > 0) { - media = <MediaGallery media={status.get('media_attachments')} />; + if (status.getIn(['media_attachments', 0, 'type']) === 'video') { + media = <VideoPlayer media={status.getIn(['media_attachments', 0])} />; + } else { + media = <MediaGallery media={status.get('media_attachments')} />; + } } return ( diff --git a/app/assets/javascripts/components/components/video_player.jsx b/app/assets/javascripts/components/components/video_player.jsx new file mode 100644 index 000000000..e680fb206 --- /dev/null +++ b/app/assets/javascripts/components/components/video_player.jsx @@ -0,0 +1,21 @@ +import ImmutablePropTypes from 'react-immutable-proptypes'; +import PureRenderMixin from 'react-addons-pure-render-mixin'; + +const VideoPlayer = React.createClass({ + propTypes: { + media: ImmutablePropTypes.map.isRequired + }, + + mixins: [PureRenderMixin], + + render () { + return ( + <div style={{ cursor: 'default', marginTop: '8px', overflow: 'hidden', width: '196px', height: '110px', boxSizing: 'border-box', background: '#000' }}> + <video src={this.props.media.get('url')} autoPlay='true' loop={true} muted={true} style={{ width: '100%', height: '100%' }} /> + </div> + ); + } + +}); + +export default VideoPlayer; diff --git a/app/views/api/statuses/show.rabl b/app/views/api/statuses/show.rabl index 047436b61..2f30f68cc 100644 --- a/app/views/api/statuses/show.rabl +++ b/app/views/api/statuses/show.rabl @@ -18,7 +18,7 @@ child :account do end child :media_attachments, object_root: false do - attributes :id, :remote_url + attributes :id, :remote_url, :type node(:url) { |media| full_asset_url(media.file.url) } node(:preview_url) { |media| full_asset_url(media.file.url(:small)) } |