diff --git a/src/components/views/rooms/LinkPreviewWidget.js b/src/components/views/rooms/LinkPreviewWidget.js index 3398b021fb..ba438c1d12 100644 --- a/src/components/views/rooms/LinkPreviewWidget.js +++ b/src/components/views/rooms/LinkPreviewWidget.js @@ -73,13 +73,36 @@ module.exports = React.createClass({ this.unmounted = true; }, + onImageClick: function(ev) { + var p = this.state.preview; + if (ev.button != 0 || ev.metaKey) return; + ev.preventDefault(); + var ImageView = sdk.getComponent("elements.ImageView"); + + var src = p["og:image"]; + if (src && src.startsWith("mxc://")) { + src = MatrixClientPeg.get().mxcUrlToHttp(src); + } + + var params = { + src: src, + width: p["og:image:width"], + height: p["og:image:height"], + name: p["og:title"] || p["og:description"] || this.props.link, + fileSize: p["matrix:image:size"], + link: this.props.link, + }; + + Modal.createDialog(ImageView, params, "mx_Dialog_lightbox"); + }, + render: function() { var p = this.state.preview; if (!p) return
; // FIXME: do we want to factor out all image displaying between this and MImageBody - especially for lightboxing? var image = p["og:image"]; - var imageMaxWidth = 600, imageMaxHeight = 400; + var imageMaxWidth = 100, imageMaxHeight = 100; if (image && image.startsWith("mxc://")) { image = MatrixClientPeg.get().mxcUrlToHttp(image, imageMaxWidth, imageMaxHeight); } @@ -91,24 +114,23 @@ module.exports = React.createClass({ var img; if (image) { - img = ( -
- - - -
- ); + img =
+ +
} return (
+ { img }
{ p["og:title"] }
-
{ p["og:site_name"] ? ("from " + p["og:site_name"]) : null }
+
{ p["og:site_name"] ? (" - " + p["og:site_name"]) : null }
+
+ { p["og:description"] } +
- { img } -
{ p["og:description"] } Read more
- +
); }