diff options
author | Oxbian <oxbian@mailbox.org> | 2024-10-27 16:30:48 -0400 |
---|---|---|
committer | Oxbian <oxbian@mailbox.org> | 2024-10-27 16:30:48 -0400 |
commit | 2bf2715ab4efe99074bf67df4e4fa9251ae61064 (patch) | |
tree | b37a81a8e6b8aff0388fdceeccee0435b7b9be73 /main.js | |
parent | eb97a76443a8879ced2bc79c98dcd992f44afe4c (diff) | |
download | discord-no-nitro-emoji-2bf2715ab4efe99074bf67df4e4fa9251ae61064.tar.gz discord-no-nitro-emoji-2bf2715ab4efe99074bf67df4e4fa9251ae61064.zip |
feat: refactored and optimized code + icon
Diffstat (limited to 'main.js')
-rw-r--r-- | main.js | 81 |
1 files changed, 42 insertions, 39 deletions
@@ -1,55 +1,58 @@ -setInterval(function () { - // Delete lockicon on nitro emote - document.querySelector('#emoji-picker-grid ul li button [class^="emojiLockIconContainer"]')?.remove(); +/* Remove nitro things from discord emojis menu */ +const emojiPickerObserver = new MutationObserver(() => { - //Remove annoying nitro banner that appears when emote is clicked - document.querySelector("div[class*='emojiPicker'] div[class*='hasTabParentContainer']")?.remove(); - document.querySelector("div[class*='emojiPicker'] div[class*='backdrop']")?.remove(); - document.querySelector("[class^='upsellContainer']")?.remove(); - // Discord crash if bellow removed - //document.querySelector("[class^='nitroTopDividerContainer']")?.remove(); - // Remove class categorySectionNitroLocked sur ceux ayant la classe les div categorySection*/ -}, 100); + // Select objects to remove + const selectors = [ + '#emoji-picker-grid ul li button [class^="emojiLockIconContainer"]', + "div[class*='emojiPicker'] div[class*='hasTabParentContainer']", + "div[class*='emojiPicker'] div[class*='backdrop']", + "[class^='upsellContainer']" + ]; -setInterval(function () { - // Add event listener on emote to copy them - document.querySelectorAll("div[class*='listItems'] div[class*='categorySection'] ul li button").forEach((btn) => { - if (btn.getAttribute("affected") !== "true") { - btn.setAttribute("affected", "true"); - - btn.addEventListener("click", (e) => { - let source = e.currentTarget.querySelector("img").getAttribute('src'); - copyTextToClipboard(source) - }); - } + // Search and delete objects + selectors.forEach(selector => { + document.querySelectorAll(selector).forEach(element => element.remove()); }); -}, 1000); +}); +/* Function to copy emojis link into the clipboard */ async function copyTextToClipboard(textToCopy) { try { - if (navigator?.clipboard?.writeText) { - await navigator.clipboard.writeText(textToCopy); - } + await navigator.clipboard.writeText(textToCopy); } catch (err) { - console.error(err); + console.error("Error while copy in the clipboard : ", err); } } -// Ajoute un écouteur d'événement de clic au document pour capturer les clics sur les images emoji -document.addEventListener("click", function(event) { - // Vérifie si l'élément cliqué est une image avec la classe 'emoji' - if (event.target.classList.contains("emoji")) { - // Sélectionne le parent (ou ancêtre) ayant un id commençant par 'message-content' - const parentDiv = event.target.closest("div[id^='message-content']"); +/* Add event on each emoji on emojis menu to copy them into the clipboard */ +const emojisObserver = new MutationObserver(() => { + document.querySelectorAll("div[class*='listItems'] div[class*='categorySection'] ul li button:not([affected])") + .forEach(btn => { + btn.setAttribute("affected", "true"); + + btn.addEventListener("click", (e) => { + let source = e.currentTarget.querySelector("img").getAttribute('src'); + copyTextToClipboard(source); + }); + }); +}); - // Vérifie que l'image est bien dans une div dont l'id commence par 'message-content' +/* Copy emojis from chat when clicked on */ +document.addEventListener("click", function(event) { + const emojiImage = event.target; + + if (emojiImage.classList.contains("emoji")) { + const parentDiv = emojiImage.closest("div[id^='message-content']"); + if (parentDiv) { - let source = event.target.getAttribute('src'); - let parsedUrl = new URL(source); - parsedUrl.searchParams.set("size", "48"); - copyTextToClipboard(parsedUrl.toString()); + let source = emojiImage.getAttribute('src'); + let parsedUrl = new URL(source); + parsedUrl.searchParams.set("size", "48"); + copyTextToClipboard(parsedUrl.toString()); } } }); -// copier le lien dans [class^='markup'] div span span span.text +/* Check change in DOM to run functions if needed */ +emojisObserver.observe(document.body, { childList: true, subtree: true }); +emojiPickerObserver.observe(document.body, { childList: true, subtree: true }); |