about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--app/assets/javascripts/components/components/status.jsx7
-rw-r--r--app/assets/javascripts/components/components/video_player.jsx21
-rw-r--r--app/views/api/statuses/show.rabl2
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)) }