// ==UserScript== // @name Smaller gerritbot comments // @version 2 // @description Changes gerritbot comments into one-liners. // @match https://phabricator.wikimedia.org/* // @grant none // ==/UserScript== const majorEvents = document.querySelectorAll(".phui-timeline-major-event"); const uselessMessage = "Your browser timezone setting differs from the timezone setting in your profile, click to reconcile."; function getCleanTitle(me) { // Remove the text node: "added a comment." title = me.querySelector(".phui-timeline-title") title.childNodes.forEach(n => { if (n.nodeType == 3) { n.remove() } }); return title } function handleGerritbot(me) { content = me.querySelectorAll(".phabricator-remarkup p") //link = content[1].children[0] lastIDX = content.length - 1 link = content[lastIDX].children[0] text = [] content.forEach(function(e, i){ if (i < lastIDX) { text = text.concat(e.textContent.split('\n')) } }) textContent = text[0].trim() textTooltip = text[1].trim() changeId = textContent.match(/^Change (\d+)/)[1] newText = textContent.replace(/^Change \d+ (.*):$/, '$1') link.text = changeId // Add repo name and commit message as title for the changeId link link.setAttribute('title', textTooltip) title = getCleanTitle(me) title.append(": Change ", link, " ", newText) } function handleStashbot(me) { content = me.querySelector(".phabricator-remarkup p") salSpan = content.querySelector("span") ircChannel = salSpan.textContent.match(/.*\((#\S+)\)/)[1] salURL = salSpan.querySelector("a").href salSpan.remove() salLink = document.createElement("a") salLink.setAttribute("href", salURL) salLink.setAttribute("target", "_blank") salLink.text = ircChannel title = getCleanTitle(me) title.append(" ", salLink, ": ") // remove the timestamp from text node content.childNodes.forEach(n => { if (n.nodeType == 3) { n.textContent = n.textContent.trimLeft().replace(/\[[\d-TZ:]+\] /, '') } }) title.append(...content.childNodes) } majorEvents.forEach(me => { modified = false if (me.querySelector(".phui-handle").text == 'gerritbot') { handleGerritbot(me) modified = true } if (me.querySelector(".phui-handle").text == 'Stashbot') { handleStashbot(me) modified = true } if (modified) { // remove the "quote" menu on the right me.querySelector(".phui-timeline-menu").remove() // remove the original comment content me.querySelector(".phui-timeline-core-content").remove() // make this event minor (one-liner) me.classList.replace("phui-timeline-major-event", "phui-timeline-minor-event") } });