Skip to content

Instantly share code, notes, and snippets.

@scriptcoded
Created April 19, 2022 13:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save scriptcoded/9265e9e0c4371edad1f809a5dedfea74 to your computer and use it in GitHub Desktop.
Save scriptcoded/9265e9e0c4371edad1f809a5dedfea74 to your computer and use it in GitHub Desktop.
Greasemonkey GitHub custom filters
// ==UserScript==
// @name GitHub custom filters
// @namespace https://nihlen.io/
// @version 1
// @description Adds custom filters to the GitHub pull request search screen.
// @author Malcolm Nihlén
// @license MIT
// @grant none
// @include /^https?:\/\/github.com\/[^\\]+\/[^\\]+\/pulls.*$/
// ==/UserScript==
(function() {
var filters = [
{ text: 'My pending pull request reviews', query: 'is:pr is:open sort:updated-desc -author:app/renovate user-review-requested:@me' }
];
function createElementFromHTML (htmlString) {
var div = document.createElement('div');
div.innerHTML = htmlString.trim();
// Change this to div.childNodes to support multiple top-level nodes.
return div.firstChild;
}
function escapeHTML (unsafeText) {
var div = document.createElement('div');
div.innerText = unsafeText;
return div.innerHTML;
}
function createListElement () {
return createElementFromHTML(
'<a class="SelectMenu-item" role="menuitemradio" aria-checked="false">' +
' <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check">' +
' <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>' +
' </svg>' +
'</a>'
);
}
var list = document.querySelector('#filters-select-menu .SelectMenu-list');
for (var i = 0; i < filters.length; i++) {
var menuItem = createListElement();
menuItem.href = '?q=' + encodeURIComponent(filters[i].query);
menuItem.innerHTML += escapeHTML(filters[i].text);
list.prepend(menuItem);
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment