| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- function handleChadClick(e, magnet) {
- e.preventDefault(true);
- const a = e.target;
- if (a.processing) return;
- a.processing = true;
- a.style.borderBottom = 'dotted yellow';
- a.title = 'Processing';
- browser.runtime.sendMessage({magnet}).then((response) => {
- a.style.borderBottom = 'dotted green';
- a.title = 'Added';
- }, (error) => {
- console.log(`Error: ${error}`);
- a.style.borderBottom = 'dotted red';
- a.title = `${error}`;
- a.processing = false;
- });
- }
- async function processMagnets(el) {
- const opts = await browser.storage.local.get("enabled");
- if (!opts.enabled) return;
- const magnets = el.querySelectorAll("a[href^='magnet:?']")
- for (let magnet of magnets) {
- if (magnet.getAttribute('data-chadded')) continue;
- const img = document.createElement('img');
- img.src = browser.runtime.getURL("logo256.png");
- img.style = `width: auto; height: 1.2em; vertical-align: text-bottom; padding-right: 0.3em;`;
- const a = document.createElement('a');
- a.style = 'text-decoration: none;';
- a.appendChild(img);
- a.insertAdjacentText('beforeend', 'Add to Chad Music');
- a.addEventListener("click", (e) => handleChadClick(e, magnet.href));
- magnet.insertAdjacentElement('afterend', a);
- magnet.setAttribute('data-chadded', 1);
- }
- }
- // Process page
- processMagnets(document.body);
- // Now monitor the DOM for additions and substitute emoji into new nodes.
- // @see https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver.
- const observer = new MutationObserver((mutations) => {
- mutations.forEach((mutation) => {
- if (mutation.addedNodes) mutation.addedNodes.forEach(processMagnets);
- });
- });
- observer.observe(document.body, {
- childList: true,
- subtree: true
- });
|