// ==UserScript== // @name Copy Jira Issue ID // @namespace naatan.copy.jira.id // @version 1.1.0 // @description Adds a copy button alongside the "Copy link" button that copies the ticket ID to your clipboard. // @author Nathan Rijksen // @match https://*.atlassian.net/* // @grant none // @downloadURL https://update.greasyfork.icu/scripts/433522/Copy%20Jira%20Issue%20ID.user.js // @updateURL https://update.greasyfork.icu/scripts/433522/Copy%20Jira%20Issue%20ID.meta.js // ==/UserScript== (function() { setInterval(() => { let rx = /\/browse\/([A-Z]+\-\d+)/; let crumbs = document.querySelectorAll("nav[aria-label=\"Issue breadcrumbs\"] ol > div:last-child"); for (let crumb of crumbs) { if (crumb.getAttribute("_seen") == "true") { continue; } crumb.setAttribute("_seen", "true"); let link = crumb.querySelector("a[href]"); let match = rx.exec(link.getAttribute("href")); if (!match) { continue; } let copyBtnDiv = document.createElement("div"); copyBtnDiv.innerHTML = '' copyBtnDiv.onclick = ((copyBtnDiv, id)=>{ copyBtnDiv.firstChild.style.backgroundColor = "lightgray"; setTimeout(()=>{copyBtnDiv.firstChild.style.backgroundColor = "";}, 2000) navigator.clipboard.writeText(id); }).bind(null, copyBtnDiv, match[1]); let btwrap = crumb.querySelector(".issue_view_permalink_button_wrapper"); if (btwrap) { btwrap.appendChild(copyBtnDiv); } else { crumb.appendChild(copyBtnDiv); } } }, 2000); })();