Page MenuHomePhabricator
Paste P11638

smaller_gerritbot_comments.js
ActivePublic

Authored by JMeybohm on Jun 23 2020, 7:55 AM.
Referenced Files
F43315569: smaller_gerritbot_comments.js
Mon, Mar 25, 10:18 AM
F37112872: smaller_gerritbot_comments.js
Jun 22 2023, 4:22 PM
F37112864: smaller_gerritbot_comments.js
Jun 22 2023, 4:02 PM
F34259389: smaller_gerritbot_comments.js
Apr 6 2021, 12:23 PM
F31943340: raw.txt
Jul 21 2020, 4:56 PM
F31941974: raw.txt
Jul 20 2020, 1:23 PM
F31903769: raw.txt
Jun 24 2020, 12:40 PM
F31903445: Screenshot_20200624_082225.png
Jun 24 2020, 6:23 AM
Tokens
"Barnstar" token, awarded by taavi.
// ==UserScript==
// @name Smaller gerritbot comments
// @version 5
// @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.";
const gitlabUrl = "https://gitlab.wikimedia.org/repos/"
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")
if (content[0].textContent.includes(gitlabUrl)) {
// gerritbot seems to have handled gitlab changes in the past
return handleCodeReviewBot(me)
} else {
// Comments from gerrit changes
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)
return true
}
}
function handleCodeReviewBot(me) {
content = me.querySelectorAll(".phabricator-remarkup p")
// Comments from gitlab changes
link = content[0].querySelector(".remarkup-link")
actionLine = content[0].textContent.replace(link.href, "").trim().split(" ")
action = actionLine.pop()
user = actionLine.join(" ")
// Remove the gitlab base URL from link rext
link.text = link.href.replace(gitlabUrl, "")
// Add the commit message as title for the link
link.setAttribute('title', content[1].textContent)
title = getCleanTitle(me)
title.append(": MR ", link, " ", action, " by ", user)
return true
}
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)
return true
}
// Remove irrelevant stuff from page title
// ⚓ T307943
document.title = document.title.replace(/⚓ T\d+ /, "");
majorEvents.forEach(me => {
modified = false
if (me.querySelector(".phui-handle").text == 'gerritbot') {
modified = handleGerritbot(me)
}
if (me.querySelector(".phui-handle").text == 'Stashbot') {
modified = handleStashbot(me)
}
if (me.querySelector(".phui-handle").text == 'CodeReviewBot') {
modified = handleCodeReviewBot(me)
}
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")
}
});