[Azure] Auto Resolve All

[Azure] Auto Resolve

  1. // ==UserScript==
  2. // @name [Azure] Auto Resolve All
  3. // @namespace Azure
  4. // @version 1.10.12
  5. // @description [Azure] Auto Resolve
  6. // @author N.Duong
  7. // @icon https://www.google.com/s2/favicons?sz=64&domain=microsoft.com
  8. // @run-at document-start
  9. // @grant none
  10. // @license MIT
  11. // @match https://*/*/pullrequest/*
  12. // @match https://*/*/pullrequest/*
  13. // ==/UserScript==
  14.  
  15. (function() {
  16. 'use strict';
  17.  
  18. function addResolveAllButton() {
  19. if (document.querySelector('#resolve')) {
  20. return; // Button already exists
  21. }
  22.  
  23. let targetDiv = document.querySelector('.repos-activity-filter-dropdown');
  24. if (targetDiv) {
  25. let resolveButton = document.createElement('button');
  26. resolveButton.id = "resolve";
  27. resolveButton.textContent = 'Resolve All';
  28. resolveButton.className = 'bolt-button enabled bolt-focus-treatment';
  29. resolveButton.type = 'button';
  30. resolveButton.tabIndex = '0';
  31. resolveButton.style.marginLeft = '12px';
  32.  
  33. resolveButton.addEventListener('click', function() {
  34. let xpath = "//div[contains(@class, 'repos-comment-editor-max-width')]//button[contains(@class, 'bolt-button')]";
  35. let button = document.evaluate(xpath, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  36. for (let i = 0; i < button.snapshotLength; i++) {
  37. let element = button.snapshotItem(i);
  38. if (element.textContent.trim().toLowerCase() === 'resolve') {
  39. console.log(element.textContent);
  40. element.click();
  41. }
  42. }
  43. });
  44.  
  45. targetDiv.appendChild(resolveButton);
  46. }
  47. }
  48. // Option 1:
  49. window.addEventListener('DOMContentLoaded', addResolveAllButton, false);
  50. // Option 2:
  51. //addResolveAllButton();
  52. //const observer = new MutationObserver(addResolveAllButton);
  53. //observer.observe(document.body, { childList: true, subtree: true });
  54. })();