// ==UserScript== // @name LOLZ_Fast_Close_el9in // @namespace LOLZ_Fast_Close_el9in // @version 0.2 // @description LOLZ Fast Close // @author el9in // @match https://zelenka.guru/?tab=mythreads* // @match https://lolz.guru/?tab=mythreads* // @icon https://www.google.com/s2/favicons?sz=64&domain=zelenka.guru // @grant none // @license el9in // @downloadURL none // ==/UserScript== (function() { 'use strict'; const inputElement = document.querySelector('input[type="hidden"][name="_xfToken"]'); const xfTokenValue = inputElement.value; function init() { if(xfTokenValue) { const elements_threads = document.querySelectorAll('[id*="thread-"]'); elements_threads.forEach(function(element) { const idValue = element.getAttribute('id'); const parts = idValue.split('thread-'); if (parts.length > 1) { const thread_id = parts[1]; const lockIcon = element.querySelector('.iconKey.fa.fa-lock.Tooltip'); if (!lockIcon) { const Tooltip = element.querySelector('a.StarContent.threadControl.far.fa-star.Tooltip'); if(Tooltip) { const copyElement = Tooltip.cloneNode(true); copyElement.classList.remove('fa-star'); copyElement.classList.add('fa-lock'); copyElement.removeAttribute('href'); Tooltip.parentNode.insertBefore(copyElement, Tooltip); copyElement.addEventListener('click', function(event) { event.preventDefault(); var formData = new FormData(); formData.append('discussion_open', '0'); formData.append('set[discussion_open]', '1'); formData.append('_xfToken', xfTokenValue); formData.append('_xfRequestUri', `/threads/${thread_id}/`); formData.append('_xfNoRedirect', '1'); formData.append('_xfToken', xfTokenValue); formData.append('_xfResponseType', 'json'); fetch(`https://zelenka.guru/threads/${thread_id}/quick-update`, { "body": formData, "method": "POST", "mode": "cors", "credentials": "include" }); copyElement.remove(); }); } } else { const Tooltip = element.querySelector('a.StarContent.threadControl.far.fa-star.Tooltip'); if(Tooltip) { const copyElement = Tooltip.cloneNode(true); copyElement.classList.remove('fa-star'); copyElement.classList.add('fa-unlock'); copyElement.removeAttribute('href'); Tooltip.parentNode.insertBefore(copyElement, Tooltip); copyElement.addEventListener('click', function(event) { event.preventDefault(); var formData = new FormData(); formData.append('discussion_open', '1'); formData.append('set[discussion_open]', '1'); formData.append('_xfToken', xfTokenValue); formData.append('_xfRequestUri', `/threads/${thread_id}/`); formData.append('_xfNoRedirect', '1'); formData.append('_xfToken', xfTokenValue); formData.append('_xfResponseType', 'json'); fetch(`https://zelenka.guru/threads/${thread_id}/quick-update`, { "body": formData, "method": "POST", "mode": "cors", "credentials": "include" }); copyElement.remove(); }); } } } }); } } async function ones(element) { if(xfTokenValue) { try { const idValue = element.getAttribute('id'); if(idValue) { const parts = idValue.split('thread-'); if (parts.length > 1) { const thread_id = parts[1]; const lockIcon = element.querySelector('.iconKey.fa.fa-lock.Tooltip'); if (!lockIcon) { const Tooltip = element.querySelector('a.StarContent.threadControl.far.fa-star.Tooltip'); if(Tooltip) { const copyElement = Tooltip.cloneNode(true); copyElement.classList.remove('fa-star'); copyElement.classList.add('fa-lock'); copyElement.removeAttribute('href'); Tooltip.parentNode.insertBefore(copyElement, Tooltip); copyElement.addEventListener('click', function(event) { event.preventDefault(); var formData = new FormData(); formData.append('discussion_open', '0'); formData.append('set[discussion_open]', '1'); formData.append('_xfToken', xfTokenValue); formData.append('_xfRequestUri', `/threads/${thread_id}/`); formData.append('_xfNoRedirect', '1'); formData.append('_xfToken', xfTokenValue); formData.append('_xfResponseType', 'json'); fetch(`https://zelenka.guru/threads/${thread_id}/quick-update`, { "body": formData, "method": "POST", "mode": "cors", "credentials": "include" }); copyElement.remove(); }); } } else { const Tooltip = element.querySelector('a.StarContent.threadControl.far.fa-star.Tooltip'); if(Tooltip) { const copyElement = Tooltip.cloneNode(true); copyElement.classList.remove('fa-star'); copyElement.classList.add('fa-unlock'); copyElement.removeAttribute('href'); Tooltip.parentNode.insertBefore(copyElement, Tooltip); copyElement.addEventListener('click', function(event) { event.preventDefault(); var formData = new FormData(); formData.append('discussion_open', '1'); formData.append('set[discussion_open]', '1'); formData.append('_xfToken', xfTokenValue); formData.append('_xfRequestUri', `/threads/${thread_id}/`); formData.append('_xfNoRedirect', '1'); formData.append('_xfToken', xfTokenValue); formData.append('_xfResponseType', 'json'); fetch(`https://zelenka.guru/threads/${thread_id}/quick-update`, { "body": formData, "method": "POST", "mode": "cors", "credentials": "include" }); copyElement.remove(); }); } } } } } catch(error) {}; } } const observer = new MutationObserver((mutationsList, observer) => { for (const mutation of mutationsList) { if (mutation.type === 'childList') { mutation.addedNodes.forEach(addedNode => { if (addedNode.nodeType === Node.ELEMENT_NODE) { ones(addedNode); } }); } } }); const config = { childList: true, subtree: true }; observer.observe(document.body, config); init(); })();