D.gg Img Preview Addon

Shows a preview of images linked in destiny.gg

< Feedback on D.gg Img Preview Addon

Review: ठीक - स्क्रिप्ट चालते, पण त्यात बग आहेत

sometimes prevents the chat from auto scrolling on new messages when an image is displayed in chat in the latest message

§
पोस्ट केले: 2025-01-20

replace it with this:

let chatObserver = new MutationObserver(function(mutations) {
if(mutations[0].addedNodes[0] && mutations[0].addedNodes[0].tagName == "DIV" && mutations[0].addedNodes[0].querySelector(".externallink")){
let links = mutations[0].addedNodes[0].querySelectorAll(".externallink ");
links.forEach((el) => {
if(imageRegex.test(el.href)){

GM_xmlhttpRequest({ // get image data since csp blocks us from just using the url directly
method: "GET",
url: el.href,
responseType: 'blob',
onload: function(res) {

var reader = new FileReader();
reader.readAsDataURL(res.response);

reader.onloadend = function() {

var base64data = reader.result;
let PreviewImage = unsafeWindow.document.createElement("img");

PreviewImage.src = base64data;

PreviewImage.style.maxHeight = "300px";
PreviewImage.style.maxWidth = "300px";
PreviewImage.style.marginLeft = "5px";
PreviewImage.style.marginBottom = "10px";
PreviewImage.style.marginTop = "10px";
PreviewImage.style.display = "block";
PreviewImage.style.cursor = "pointer";

let blurred = false;
if(el.className.includes("nsfw") && config.BlurNSFW || el.className.includes("nsfl") && config.BlurNSFW){
PreviewImage.style.filter = "blur(15px)";
blurred = true;
}

PreviewImage.onclick = () => {
if(blurred){
PreviewImage.style.filter = "blur(0px)";
blurred = false;
}else{
overlay.style.display = "flex";
let PreviewImg = unsafeWindow.document.createElement("img");
PreviewImg.src = base64data;
PreviewImg.style.maxHeight = "70%";
PreviewImg.style.maxWidth = "70%";
PreviewImg.style.display = "block";
PreviewImg.style.position = "relative";

overlay.appendChild(PreviewImg);

let openOriginal = document.createElement("a");
openOriginal.href = el.href;
openOriginal.innerHTML = "Open Original";
openOriginal.target = "_blank";
openOriginal.style.marginTop = "5px";
openOriginal.style.color = "#999";
overlay.appendChild(openOriginal)
}
}

el.parentNode.appendChild(PreviewImage);
if ( config.HideLink ) { el.remove(); };

// Delay scroll until image is loaded
PreviewImage.onload = () => {
unsafeWindow.document.getElementsByClassName("chat-lines")[0].scrollTo(0, unsafeWindow.document.getElementsByClassName("chat-lines")[0].scrollHeight);
}

}

}
})
}
})
}
});

उत्तर पोस्ट करा

उत्तर पोस्ट करण्यासाठी साइन इन करा.