- // ==UserScript==
- // @name Reddit button to clean recents
- // @namespace https://gf.qytechs.cn/users/821661
- // @match https://www.reddit.com/*
- // @grant none
- // @version 1.1
- // @author hdyzen
- // @description Add button to clean recents
- // ==/UserScript==
-
- const recentSvg = `
- <svg id="clear-recents" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" height="32" width="32">
- <rect x="20" y="18" width="6" height="2" transform="translate(46 38) rotate(-180)"></rect>
- <rect x="22" y="22" width="6" height="2" transform="translate(50 46) rotate(-180)"></rect><rect x="24" y="26" width="6" height="2" transform="translate(54 54) rotate(-180)"></rect>
-
- <path d="M17.0029,20a4.8952,4.8952,0,0,0-2.4044-4.1729L22,3,20.2691,2,12.6933,15.126A5.6988,5.6988,0,0,0,7.45,16.6289C3.7064,20.24,3.9963,28.6821,4.01,29.04a1,1,0,0,0,1,.96H20.0012a1,1,0,0,0,.6-1.8C17.0615,25.5439,17.0029,20.0537,17.0029,20ZM11.93,16.9971A3.11,3.11,0,0,1,15.0041,20c0,.0381.0019.208.0168.4688L9.1215,17.8452A3.8,3.8,0,0,1,11.93,16.9971ZM15.4494,28A5.2,5.2,0,0,1,14,25H12a6.4993,6.4993,0,0,0,.9684,3H10.7451A16.6166,16.6166,0,0,1,10,24H8a17.3424,17.3424,0,0,0,.6652,4H6c.031-1.8364.29-5.8921,1.8027-8.5527l7.533,3.35A13.0253,13.0253,0,0,0,17.5968,28Z"></path>
- <rect width="32" height="32" fill="none"></rect>
- </svg>
- `;
-
- const style = `
- <style>
- #clear-recents {
- fill: var(--color-secondary);
- padding: 4px;
- border-radius: 8px;
- transition: 0.22s ease-in-out background-color;
- cursor: pointer;
- }
- #clear-recents:hover {
- background-color: var(--color-neutral-background-hover);
- }
- </style>
- `;
-
- function mutationsHandler() {
- const recentsHeader = document.getElementsByTagName("reddit-recent-pages")?.[0];
- const recentsLi = recentsHeader?.shadowRoot?.querySelector("li");
-
- if (recentsLi) {
- observer.disconnect();
-
- const child = recentsLi.children[0];
- console.log(recentsLi);
-
- recentsLi.style.display = "flex";
- recentsLi.style.gap = ".5rem";
- recentsLi.style.justifyContent = "center";
- recentsLi.style.alignItems = "center";
-
- child.style.flexGrow = "1";
-
- recentsLi.insertAdjacentHTML("beforeend", recentSvg + style);
-
- const svg = recentsLi.children[1];
-
- svg.addEventListener("click", (e) => {
- e.preventDefault();
-
- localStorage.removeItem("recent-subreddits-store");
- recentsHeader.shadowRoot.innerHTML = "";
- });
- }
- }
-
- const observer = new MutationObserver(mutationsHandler);
-
- observer.observe(document.body, {
- childList: true,
- subtree: true,
- });