aboutsummaryrefslogtreecommitdiff
path: root/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'main.js')
-rw-r--r--main.js81
1 files changed, 42 insertions, 39 deletions
diff --git a/main.js b/main.js
index 1382cde..1b53218 100644
--- a/main.js
+++ b/main.js
@@ -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 });
ArKa projects. All rights to me, and your next child right arm.