| var mutationObserver, intersectionObserver, options; |
| |
| function parseUrl(url) { |
| var forum_a = url.match(/forum\/([0-9]+)/i); |
| var thread_a = url.match(/thread\/([0-9]+)/i); |
| |
| if (forum_a === null || thread_a === null) { |
| return false; |
| } |
| |
| return { |
| "forum": forum_a[1], |
| "thread": thread_a[1] |
| }; |
| } |
| |
| function mutationCallback(mutationList, observer) { |
| mutationList.forEach((mutation) => { |
| if (mutation.type == "childList") { |
| mutation.addedNodes.forEach(function (node) { |
| if (typeof node.classList !== "undefined") { |
| if (options.thread && node.classList.contains("load-more-bar")) { |
| intersectionObserver.observe(node.querySelector(".load-more-button")); |
| } |
| |
| if (options.threadall && node.classList.contains("load-more-bar")) { |
| intersectionObserver.observe(node.querySelector(".load-all-button")); |
| } |
| |
| if (options.history && ("parentNode" in node) && node.parentNode !== null && ("tagName" in node.parentNode) && node.parentNode.tagName == "EC-USER") { |
| var nameElement = node.querySelector(".name span"); |
| if (nameElement !== null) { |
| var name = nameElement.innerHTML; |
| var query = encodeURIComponent("(creator:\""+name+"\" | replier:\""+name+"\") -forum:0"); |
| var urlpart = encodeURIComponent("query="+query); |
| var link = document.createElement("a"); |
| link.setAttribute("href", "https://support.google.com/s/community/search/"+urlpart); |
| link.innerText = chrome.i18n.getMessage("inject_previousposts"); |
| node.querySelector(".main-card-content").appendChild(document.createElement("br")); |
| node.querySelector(".main-card-content").appendChild(link); |
| } |
| } |
| } |
| }); |
| } |
| }); |
| } |
| |
| function intersectionCallback(entries, observer) { |
| entries.forEach(entry => { |
| if (entry.isIntersecting) { |
| entry.target.click(); |
| } |
| }); |
| }; |
| |
| function injectStyles(css) { |
| var link = document.createElement('link'); |
| link.setAttribute("rel", "stylesheet"); |
| link.setAttribute("href", "data:text/css;charset=UTF-8,"+encodeURIComponent(css)); |
| document.head.appendChild(link); |
| } |
| |
| var observerOptions = { |
| childList: true, |
| attributes: true, |
| subtree: true |
| } |
| |
| var intersectionOptions = { |
| root: document.querySelector('.scrollable-content'), |
| rootMargin: '0px', |
| threshold: 1.0 |
| } |
| |
| chrome.storage.sync.get(null, function(items) { |
| options = items; |
| |
| mutationObserver = new MutationObserver(mutationCallback); |
| mutationObserver.observe(document.querySelector(".scrollable-content"), observerOptions); |
| |
| intersectionObserver = new IntersectionObserver(intersectionCallback, intersectionOptions); |
| |
| if (options.fixedtoolbar) { |
| injectStyles("ec-bulk-actions{position: sticky; top: 0; background: white; z-index: 96;}"); |
| } |
| |
| if (options.increasecontrast) { |
| injectStyles(".thread-summary.read{background: #ecedee!important;}"); |
| } |
| |
| if (options.stickysidebarheaders) { |
| injectStyles("material-drawer .main-header{background: #fff; position: sticky; top: 0; z-index: 1;}"); |
| } |
| }); |