From a663993d0b1ef45ac10e15e9d392bb1a184a1382 Mon Sep 17 00:00:00 2001 From: Pavel Djundik Date: Sun, 3 Jun 2018 12:25:01 +0300 Subject: [PATCH] If a preview fails to load, remove the link from msg object Fixes #2438 --- src/plugins/irc-events/link.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/plugins/irc-events/link.js b/src/plugins/irc-events/link.js index 6d0bede6..b6397357 100644 --- a/src/plugins/irc-events/link.js +++ b/src/plugins/irc-events/link.js @@ -238,7 +238,7 @@ function parse(msg, preview, res, client) { break; default: - return; + return removePreview(msg, preview); } if (!promise) { @@ -261,7 +261,7 @@ function handlePreview(client, msg, preview, res) { // For link previews, drop the thumbnail // For other types, do not display preview at all if (preview.type !== "link") { - return; + return removePreview(msg, preview); } preview.thumb = ""; @@ -282,7 +282,7 @@ function emitPreview(client, msg, preview) { if (preview.thumb.length || preview.body.length) { preview.head = "Untitled page"; } else { - return; + return removePreview(msg, preview); } } @@ -290,6 +290,16 @@ function emitPreview(client, msg, preview) { client.emit("msg:preview", {id, preview}); } +function removePreview(msg, preview) { + // If a preview fails to load, remove the link from msg object + // So that client doesn't attempt to display an preview on page reload + const index = msg.previews.indexOf(preview); + + if (index > -1) { + msg.previews.splice(index, 1); + } +} + function getRequestHeaders(headers) { const formattedHeaders = { "User-Agent": "Mozilla/5.0 (compatible; The Lounge IRC Client; +https://github.com/thelounge/thelounge)",