GitHub WIP reminder

Adds an reminder to not review WIP PR's

  1. // ==UserScript==
  2. // @name GitHub WIP reminder
  3. // @namespace urn://https://www.georgegillams.co.uk/greasemonkey/github_WIP_reminder
  4. // @include *github.com*
  5. // @exclude none
  6. // @version 7
  7. // @description:en Adds an reminder to not review WIP PR's
  8. // @description Adds an reminder to not review WIP PR's
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. let lastModifiedPr = null;
  13.  
  14. function addReminder() {
  15. const prId = `${window.location}`.split('pull/')[1];
  16. if (lastModifiedPr !== prId) {
  17. const allElements = document.getElementsByTagName('SPAN');
  18. for (let i = 0; i < allElements.length; i += 1) {
  19. const element = allElements[i];
  20. if (element.innerText.includes('WIP')) {
  21. if (
  22. element.parentElement.parentElement.className.includes(
  23. 'labels css-truncate',
  24. )
  25. ) {
  26. const newElement = document.createElement('div');
  27. newElement.innerText = `HEY THIS IS WIP!`;
  28. newElement.style.backgroundColor = '#d1435b';
  29. newElement.style.color = 'white';
  30. newElement.style.fontSize = '2rem';
  31. newElement.style.position = 'fixed';
  32. newElement.style.left = 0;
  33. newElement.style.top = 0;
  34. newElement.style.zIndex = 400;
  35. newElement.style.width = '100vw';
  36. newElement.style.height = '8rem';
  37. newElement.style.padding = '4rem 1rem 1rem 1rem';
  38. newElement.style.display = 'flex';
  39. newElement.style.alignItems = 'center';
  40. newElement.style.justifyContent = 'center';
  41. newElement.style.transition = 'all 0.4s';
  42. newElement.style.fontWeight = 'bold';
  43. newElement.onclick = () => {
  44. newElement.style.opacity = 0;
  45. newElement.style.pointerEvents = 'none';
  46. };
  47. element.parentElement.parentElement.appendChild(newElement);
  48. }
  49. }
  50. }
  51. }
  52. lastModifiedPr = prId;
  53. }
  54.  
  55. setInterval(addReminder, 2000);