Last active
June 26, 2023 07:34
-
-
Save wouterkroes/09776a8dbecf4878f1c6635efd9ec8b8 to your computer and use it in GitHub Desktop.
tampermonkey | ADO Set Auto Complete for Pull Request
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== | |
// @name ADO Set Auto Complete for Pull Request | |
// @namespace http://tampermonkey.net/ | |
// @author wouterkroes | |
// @updateURL https://gist.github.com/wouterkroes/09776a8dbecf4878f1c6635efd9ec8b8/raw/userscripts-ado-set-auto-complete-pull-request.js | |
// @downloadURL https://gist.github.com/wouterkroes/09776a8dbecf4878f1c6635efd9ec8b8/raw/userscripts-ado-set-auto-complete-pull-request.js | |
// @version 0.0.6 | |
// @description Set auto-complete to true for pull request in Azure DevOps (ADO). | |
// @match https://dev.azure.com/*pullrequestcreate* | |
// @match https://dev.azure.com/*pullrequest* | |
// @grant none | |
// ==/UserScript== | |
// https://stackoverflow.com/a/61511955/5653962 | |
function waitForElm(selector) { | |
return new Promise((resolve) => { | |
if (document.querySelector(selector)) { | |
return resolve(document.querySelector(selector)); | |
} | |
const observer = new MutationObserver((mutations) => { | |
if (document.querySelector(selector)) { | |
resolve(document.querySelector(selector)); | |
observer.disconnect(); | |
} | |
}); | |
observer.observe(document.body, { | |
childList: true, | |
subtree: true, | |
}); | |
}); | |
} | |
const delay = (ms) => { | |
return new Promise((resolve) => setTimeout(resolve, ms)); | |
}; | |
(async () => { | |
("use strict"); | |
const btn = await waitForElm( | |
'.repos-pr-header-complete-button .bolt-split-button-main:not([aria-disabled="true"])' | |
); | |
if(btn.innerText !== "Set auto-complete") { | |
return; | |
} | |
const modal = document.querySelector(".bolt-portal-host"); | |
await delay(1000); // wait for ADO JavaScript to bind javascript listener | |
modal.style.visibility = "hidden"; // do not show modal to prevent modal flicker | |
btn.click(); | |
const modalBtn = await waitForElm( | |
".bolt-portal-host .bolt-panel-footer-buttons .primary" | |
); | |
modalBtn.click(); | |
modal.style.visibility = "visible"; // restore modal to default visibility | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment