From 0a484ef930e7f727a927ecb251e5387cfd87be33 Mon Sep 17 00:00:00 2001 From: MaterArc <105017592+MaterArc@users.noreply.github.com> Date: Sun, 2 Feb 2025 10:55:50 -0500 Subject: [PATCH] Fix for gdpr Accounts --- features/comment-on-closed-profile.js | 277 +++++++++++--------------- 1 file changed, 117 insertions(+), 160 deletions(-) diff --git a/features/comment-on-closed-profile.js b/features/comment-on-closed-profile.js index b87a788c..af69a0f9 100644 --- a/features/comment-on-closed-profile.js +++ b/features/comment-on-closed-profile.js @@ -1,172 +1,129 @@ function addNoCommentBox() { - if ( - Scratch?.INIT_DATA?.PROFILE?.model?.username !== - Scratch?.INIT_DATA?.LOGGED_IN_USER?.model?.username - ) { + const loggedInUser = Scratch?.INIT_DATA?.LOGGED_IN_USER?.model?.username; + const profileUser = Scratch?.INIT_DATA?.PROFILE?.model?.username; + if (profileUser !== loggedInUser || /^gdpr\d+$/.test(profileUser)) { waitForNoCommentsObserver.disconnect(); - } else { - if (document.querySelector("#comments-enabled") !== null) { - if (ScratchTools.Storage.commentInputFound === undefined) { - ScratchTools.Storage.commentInputFound = true; - document - .querySelector("#comments-enabled") - .addEventListener("input", function () { - if (document.querySelector("#comments-enabled").checked) { - addBox(); - } else { - if ( - document.querySelector("form.scratchtools.comments-on") !== null - ) { - document - .querySelector("form.scratchtools.comments-on") - .remove(); - } - } - }); - } - } - addBox(); - function addBox() { - var div = document.querySelector(".comments-off"); - if (div !== null) { - div.className = ""; + return; + } - div.innerHTML = `
`; - div.querySelector("textarea").addEventListener("input", function () { - div.querySelector("#chars-left").textContent = ( - 500 - div.querySelector("textarea").value.length - ).toString(); + if (document.querySelector("#comments-enabled") !== null) { + if (ScratchTools.Storage.commentInputFound === undefined) { + ScratchTools.Storage.commentInputFound = true; + document + .querySelector("#comments-enabled") + .addEventListener("input", function () { + if (document.querySelector("#comments-enabled").checked) { + addBox(); + } else { + if ( + document.querySelector("form.scratchtools.comments-on") !== null + ) { + document + .querySelector("form.scratchtools.comments-on") + .remove(); + } + } }); - document.querySelector(".postComment").onclick = function () { - postComment(div.querySelector("textarea").value); - div.querySelector("textarea").value = ""; - }; - document.querySelector(".cancelComment").onclick = function () { - div.querySelector("textarea").value = ""; - div.querySelector("#chars-left").textContent = ( - 500 - div.querySelector("textarea").value.length - ).toString(); - }; - } } + } + addBox(); - async function postComment(content) { - var open = await fetch( - "https://scratch.mit.edu/site-api/comments/user/" + - Scratch.INIT_DATA.LOGGED_IN_USER.model.username + - "/toggle-comments/", - { - headers: { - accept: "*/*", - "accept-language": "en-US,en;q=0.9,el;q=0.8", - "sec-ch-ua": - '" Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102"', - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": '"macOS"', - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-csrftoken": ScratchTools.cookies.get("scratchcsrftoken"), - "x-requested-with": "XMLHttpRequest", - }, - referrer: window.location.href, - referrerPolicy: "strict-origin-when-cross-origin", - body: null, - method: "POST", - mode: "cors", - credentials: "include", - } - ); - var openData = await open.text(); - var response = await fetch( - "https://scratch.mit.edu/site-api/comments/user/" + - Scratch.INIT_DATA.LOGGED_IN_USER.model.username + - "/add/", - { - headers: { - accept: "text/html, */*; q=0.01", - "accept-language": "en-US,en;q=0.9,el;q=0.8", - "content-type": "application/x-www-form-urlencoded; charset=UTF-8", - "sec-ch-ua": - '" Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102"', - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": '"macOS"', - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-csrftoken": ScratchTools.cookies.get("scratchcsrftoken"), - "x-requested-with": "XMLHttpRequest", - }, - referrer: window.location.href, - referrerPolicy: "strict-origin-when-cross-origin", - body: - '{"content":"' + content + '","parent_id":"","commentee_id":""}', - method: "POST", - mode: "cors", - credentials: "include", - } - ); - var close = await fetch( - "https://scratch.mit.edu/site-api/comments/user/" + - Scratch.INIT_DATA.LOGGED_IN_USER.model.username + - "/toggle-comments/", - { - headers: { - accept: "*/*", - "accept-language": "en-US,en;q=0.9,el;q=0.8", - "sec-ch-ua": - '" Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102"', - "sec-ch-ua-mobile": "?0", - "sec-ch-ua-platform": '"macOS"', - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-csrftoken": ScratchTools.cookies.get("scratchcsrftoken"), - "x-requested-with": "XMLHttpRequest", - }, - referrer: window.location.href, - referrerPolicy: "strict-origin-when-cross-origin", - body: null, - method: "POST", - mode: "cors", - credentials: "include", - } - ); - var closeData = await close.text(); - ScratchTools.modals.create({ - title: "Comment posted", - description: "Reloading page..." - }) - window.location.href = window.location.href; + function addBox() { + var div = document.querySelector(".comments-off"); + if (div !== null) { + div.className = ""; + div.innerHTML = ``; + div.querySelector("textarea").addEventListener("input", function () { + div.querySelector("#chars-left").textContent = ( + 500 - div.querySelector("textarea").value.length + ).toString(); + }); + document.querySelector(".postComment").onclick = function () { + postComment(div.querySelector("textarea").value); + div.querySelector("textarea").value = ""; + }; + document.querySelector(".cancelComment").onclick = function () { + div.querySelector("textarea").value = ""; + div.querySelector("#chars-left").textContent = ( + 500 - div.querySelector("textarea").value.length + ).toString(); + }; } } + + async function postComment(content) { + var open = await fetch( + "https://scratch.mit.edu/site-api/comments/user/" + + loggedInUser + + "/toggle-comments/", + { + headers: { + accept: "*/*", + "x-csrftoken": ScratchTools.cookies.get("scratchcsrftoken"), + "x-requested-with": "XMLHttpRequest", + }, + method: "POST", + credentials: "include", + } + ); + + var response = await fetch( + "https://scratch.mit.edu/site-api/comments/user/" + + loggedInUser + + "/add/", + { + headers: { + accept: "text/html, */*; q=0.01", + "content-type": "application/x-www-form-urlencoded; charset=UTF-8", + "x-csrftoken": ScratchTools.cookies.get("scratchcsrftoken"), + "x-requested-with": "XMLHttpRequest", + }, + body: `{"content":"${content}","parent_id":"","commentee_id":""}`, + method: "POST", + credentials: "include", + } + ); + + var close = await fetch( + "https://scratch.mit.edu/site-api/comments/user/" + + loggedInUser + + "/toggle-comments/", + { + headers: { + accept: "*/*", + "x-csrftoken": ScratchTools.cookies.get("scratchcsrftoken"), + "x-requested-with": "XMLHttpRequest", + }, + method: "POST", + credentials: "include", + } + ); + + ScratchTools.modals.create({ + title: "Comment posted", + description: "Reloading page...", + }); + + window.location.href = window.location.href; + } } + if (window.location.href.startsWith("https://scratch.mit.edu/users/")) { var waitForNoCommentsObserver = new MutationObserver(addNoCommentBox); waitForNoCommentsObserver.observe(document.querySelector("body"), {