about summary refs log tree commit diff
path: root/app/javascript/flavours/glitch/features/account_gallery/components/media_item.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/javascript/flavours/glitch/features/account_gallery/components/media_item.js')
-rw-r--r--app/javascript/flavours/glitch/features/account_gallery/components/media_item.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/app/javascript/flavours/glitch/features/account_gallery/components/media_item.js b/app/javascript/flavours/glitch/features/account_gallery/components/media_item.js
new file mode 100644
index 000000000..c2cf48d7b
--- /dev/null
+++ b/app/javascript/flavours/glitch/features/account_gallery/components/media_item.js
@@ -0,0 +1,41 @@
+import React from 'react';
+import ImmutablePropTypes from 'react-immutable-proptypes';
+import ImmutablePureComponent from 'react-immutable-pure-component';
+import Permalink from 'flavours/glitch/components/permalink';
+
+export default class MediaItem extends ImmutablePureComponent {
+
+  static propTypes = {
+    media: ImmutablePropTypes.map.isRequired,
+  };
+
+  render () {
+    const { media } = this.props;
+    const status = media.get('status');
+    const focusX = media.getIn(['meta', 'focus', 'x']);
+    const focusY = media.getIn(['meta', 'focus', 'y']);
+    const x = ((focusX /  2) + .5) * 100;
+    const y = ((focusY / -2) + .5) * 100;
+    const style = {};
+
+    let content;
+
+    if (media.get('type') === 'gifv') {
+      content = <span className='media-gallery__gifv__label'>GIF</span>;
+    }
+
+    if (!status.get('sensitive')) {
+      style.backgroundImage    = `url(${media.get('preview_url')})`;
+      style.backgroundPosition = `${x}% ${y}%`;
+    }
+
+    return (
+      <div className='account-gallery__item'>
+        <Permalink to={`/statuses/${status.get('id')}`} href={status.get('url')} style={style}>
+          {content}
+        </Permalink>
+      </div>
+    );
+  }
+
+}