Last active
March 29, 2021 13:48
-
-
Save liggitt/8f0e3e10e42bea8f5d56658f5b80da45 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"manifest_version": 2, | |
"content_scripts": [ { | |
"exclude_globs": [ ], | |
"include_globs": [ ], | |
"js": [ "github-review.user.js" ], | |
"matches": [ "https://*.github.com/*", | |
"https://github.com/*" | |
], | |
"run_at": "document_end" | |
} ], | |
"description": "", | |
"name": "Github Review", | |
"version": "1" | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @match https://*.github.com/* | |
// @match https://github.com/* | |
// ==/UserScript== | |
// | |
// Drag/drop into Chrome chrome://extensions/ tab to install. | |
// Buttons appear in the code review gear popup dialog. | |
(function(){ | |
var register = function() { | |
// console.log("register"); | |
var helpers = document.querySelector('p#github-review-helpers'); | |
if (helpers) { | |
// don't double register | |
return true; | |
} | |
var whitespaceCheckbox = document.querySelector('input[name=w]'); | |
if (!whitespaceCheckbox) { | |
// don't register if we can't find our checkbox | |
return false; | |
} | |
var markViewed = function(path, viewed) { | |
if (!path) { return; } | |
var checkboxes = document.querySelectorAll( | |
'.file-header[data-path*="' + path + '"] ' + | |
'input.js-reviewed-checkbox[type="checkbox"]' + (viewed ? ":not(:checked)" : ":checked") | |
); | |
checkboxes.forEach(function(i){i.click();}); | |
}; | |
var markExpanded = function(path, expanded) { | |
if (!path) { return; } | |
var toggles = document.querySelectorAll( | |
' .file' + (expanded ? ':not(.open)':'.open') + | |
' .file-header[data-path*="' + path + '"]' + | |
' button.js-details-target[aria-expanded]' | |
); | |
toggles.forEach(function(i){i.click();}); | |
}; | |
var p = document.createElement("p"); | |
p.id = "github-review-helpers"; | |
p.style.display = "block"; | |
p.style.textAlign = "center"; | |
var appendButton = function(label, f) { | |
var b = document.createElement("button"); | |
b.style.padding="0px 2px"; | |
b.innerText=label; | |
b.className="btn btn-sm"; | |
p.appendChild(b); | |
b.onclick = function(event) { | |
event.preventDefault(); | |
var path = prompt("Path",""); | |
if (path) { f(path); } | |
}; | |
}; | |
appendButton("View", function(path) { markViewed(path,true); }); | |
appendButton("Unview", function(path) { markViewed(path,false); }); | |
appendButton("Expand", function(path) { markExpanded(path,true); }); | |
appendButton("Collapse",function(path) { markExpanded(path,false); }); | |
whitespaceCheckbox.insertAdjacentElement("beforebegin", p); | |
return true; | |
}; | |
// register at start, or keep attempting until we succeed | |
if (register()) { | |
// console.log("success"); | |
} else { | |
var interval; | |
interval = window.setInterval(function(){ | |
if (register()) { | |
window.clearInterval(interval); | |
// console.log("success"); | |
} | |
}, 1000); | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment