//META{"name":"ForceImagePreviews","authorId":"278543574059057154","invite":"Jx3TjNS","donate":"https://www.paypal.me/MircoWittrien","patreon":"https://www.patreon.com/MircoWittrien","website":"https://github.com/mwittrien/BetterDiscordAddons/tree/master/Plugins/ForceImagePreviews","source":"https://raw.githubusercontent.com/mwittrien/BetterDiscordAddons/master/Plugins/ForceImagePreviews/ForceImagePreviews.plugin.js"}*// var ForceImagePreviews = (_ => { return class ForceImagePreviews { getName () {return "ForceImagePreviews";} getVersion () {return "1.1.9";} getAuthor () {return "DevilBro";} getDescription () {return "Forces embedded Image Previews, if Discord doesn't do it itself. Caution: Externals Images can contain malicious code and reveal your IP!";} constructor () { this.changelog = { "fixed":[["Youtube","No longer double embeds some special youtube links like 'youtu.be'... again"]] }; this.patchedModules = { before: { SimpleMessageAccessories: "default" } }; } // Legacy load () {} start () { if (!window.BDFDB) window.BDFDB = {myPlugins:{}}; if (window.BDFDB && window.BDFDB.myPlugins && typeof window.BDFDB.myPlugins == "object") window.BDFDB.myPlugins[this.getName()] = this; let libraryScript = document.querySelector("head script#BDFDBLibraryScript"); if (!libraryScript || (performance.now() - libraryScript.getAttribute("date")) > 600000) { if (libraryScript) libraryScript.remove(); libraryScript = document.createElement("script"); libraryScript.setAttribute("id", "BDFDBLibraryScript"); libraryScript.setAttribute("type", "text/javascript"); libraryScript.setAttribute("src", "https://mwittrien.github.io/BetterDiscordAddons/Plugins/BDFDB.min.js"); libraryScript.setAttribute("date", performance.now()); libraryScript.addEventListener("load", _ => {this.initialize();}); document.head.appendChild(libraryScript); } else if (window.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) this.initialize(); this.startTimeout = setTimeout(_ => { try {return this.initialize();} catch (err) {console.error(`%c[${this.getName()}]%c`, "color: #3a71c1; font-weight: 700;", "", "Fatal Error: Could not initiate plugin! " + err);} }, 30000); } initialize () { if (window.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) { if (this.started) return; BDFDB.PluginUtils.init(this); BDFDB.ModuleUtils.forceAllUpdates(this); BDFDB.MessageUtils.rerenderAll(); } else console.error(`%c[${this.getName()}]%c`, "color: #3a71c1; font-weight: 700;", "", "Fatal Error: Could not load BD functions!"); } stop () { if (window.BDFDB && typeof BDFDB === "object" && BDFDB.loaded) { this.stopping = true; BDFDB.ModuleUtils.forceAllUpdates(this); BDFDB.MessageUtils.rerenderAll(); BDFDB.PluginUtils.clear(this); } } // Begin of own functions processSimpleMessageAccessories (e) { if (e.instance.props.message.content) { let message = new BDFDB.DiscordObjects.Message(e.instance.props.message); for (let word of e.instance.props.message.content.split(/\n|\s|\r|\t|\0/g)) if (word.indexOf("https://") > -1 || word.indexOf("http://") > -1) { word = word.indexOf("<") == 0 && word.indexOf(">") == word.length-1 ? word.slice(1,-1) : word; if (!this.isEmbedded(message.embeds, word)) this.injectEmbed(e.instance, message.embeds, word); } e.instance.props.message = message; } } injectEmbed (instance, embeds, link) { BDFDB.LibraryRequires.request(link, (error, response, result) => { if (response && response.headers["content-type"] && response.headers["content-type"].indexOf("image") > -1) { let imagethrowaway = document.createElement("img"); imagethrowaway.src = link; imagethrowaway.onload = _ => { if (!this.isEmbedded(embeds, link)) { embeds.push({ image: { url: link, proxyURL: link, height: imagethrowaway.naturalHeight, width: imagethrowaway.naturalWidth }, type: "image", url: link }); BDFDB.ReactUtils.forceUpdate(instance); } }; } else if (response && response.headers["server"] && response.headers["server"].toLowerCase().indexOf("youtube") > -1 && result.indexOf("yt-user-info") > -1) { if (!this.isEmbedded(embeds, link)) { result = result.replace(/[\r|\n|\t]|[\s]{2,}/g, ""); let width = result.split(new RegExp(BDFDB.StringUtils.regEscape('')[1].split('<')[0], url: `https://www.youtube.com${result.split(new RegExp(BDFDB.StringUtils.regEscape('
-1 || link.indexOf("youtu.be") > -1) { let videoId = (link.split("watch?v=")[1] || link.split("?")[0].split("/").pop() || "").split("&").shift(); if (videoId) for (let embed of embeds) if (embed.url == link || embed.video && embed.url.indexOf(videoId) > -1) return true; } else { for (let embed of embeds) if (embed.url == link || embed.image && embed.image.url == link) return true; } return false; } } })(); module.exports = ForceImagePreviews;