From 12896bd23eeba79884245c1c29fdc568cf21a7fa Mon Sep 17 00:00:00 2001
From: Christopher Speller <crspeller@gmail.com>
Date: Mon, 14 Mar 2016 08:50:46 -0400
Subject: Converting to Webpack. Stage 1.

---
 webapp/components/post_image.jsx | 83 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 83 insertions(+)
 create mode 100644 webapp/components/post_image.jsx

(limited to 'webapp/components/post_image.jsx')

diff --git a/webapp/components/post_image.jsx b/webapp/components/post_image.jsx
new file mode 100644
index 000000000..d1d1a6c7a
--- /dev/null
+++ b/webapp/components/post_image.jsx
@@ -0,0 +1,83 @@
+// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+import React from 'react';
+
+export default class PostImageEmbed extends React.Component {
+    constructor(props) {
+        super(props);
+
+        this.handleLoadComplete = this.handleLoadComplete.bind(this);
+        this.handleLoadError = this.handleLoadError.bind(this);
+
+        this.state = {
+            loaded: false,
+            errored: false
+        };
+    }
+
+    componentWillMount() {
+        this.loadImg(this.props.link);
+    }
+
+    componentWillReceiveProps(nextProps) {
+        if (nextProps.link !== this.props.link) {
+            this.setState({
+                loaded: false,
+                errored: false
+            });
+        }
+    }
+
+    componentDidUpdate(prevProps) {
+        if (!this.state.loaded && prevProps.link !== this.props.link) {
+            this.loadImg(this.props.link);
+        }
+    }
+
+    loadImg(src) {
+        const img = new Image();
+        img.onload = this.handleLoadComplete;
+        img.onerror = this.handleLoadError;
+        img.src = src;
+    }
+
+    handleLoadComplete() {
+        this.setState({
+            loaded: true
+        });
+    }
+
+    handleLoadError() {
+        this.setState({
+            errored: true,
+            loaded: true
+        });
+    }
+
+    render() {
+        if (this.state.errored) {
+            return null;
+        }
+
+        if (!this.state.loaded) {
+            return (
+                <img
+                    className='img-div placeholder'
+                    height='500px'
+                />
+            );
+        }
+
+        return (
+            <img
+                className='img-div'
+                src={this.props.link}
+            />
+        );
+    }
+}
+
+PostImageEmbed.propTypes = {
+    link: React.PropTypes.string.isRequired
+};
-- 
cgit v1.2.3-1-g7c22

