milanfarkas / Copy Git branch name from Jira

// ==UserScript==
// @name         Copy Git branch name from Jira
// @version      1.0.1
// @copyright    2020, Milan Farkas / WRD Labs Zrt. (https://www.wrd.hu)
// @namespace    www.wrd.hu
// @description  DEPRECATED! Adds a button to Jira that copies the suggested Git branch name to the clipboard
// @author       milanfarkas
// @license      MIT
// @include      /https?:\/\/jira.*\/browse\/.*
// @include      /https?:\/\/jira.*\/secure\/RapidBoard.jspa.*
// @include      /https?:\/\/jira.*\/.*issues.*
// @require      https://rawgit.com/notifyjs/notifyjs/master/dist/notify.js
// @updateURL    https://openuserjs.org/meta/milanfarkas/Copy_Git_branch_name_from_Jira.meta.js
// @downloadURL  https://openuserjs.org/install/milanfarkas/Copy_Git_branch_name_from_Jira.user.js
// ==/UserScript==

// ==OpenUserJS==
// @author milanfarkas
// ==/OpenUserJS==

(function () {
    'use strict';

    $(document).ajaxComplete(() => initPlugin());

    let initPlugin = () => {
        if (!$('#gitClipboardBtn').length) {

            $('#ghx-detail-head .ghx-controls').prepend("<button id='gitClipboardBtn' style='margin-left:0;' class='copy-gitbranch-button aui-button ghx-actions aui-button-compact aui-button-subtle'><span class='icon icon-default aui-icon aui-icon-small aui-iconfont-devtools-branch-small'></span> Branch</button>");
            $('.aui-toolbar2-secondary').prepend("<div id='opsbar-jira.issue.tools' class='aui-buttons pluggable-ops'><a id='gitClipboardBtn' href='#' class='copy-gitbranch-button aui-button'><span class='icon icon-default aui-icon aui-icon-small aui-iconfont-devtools-branch-small'></span> <span>Branch</span></a></div>");
            $(".copy-gitbranch-button").off("click");
            $(".copy-gitbranch-button").click(copyTaskKeyAndTitle);
        }
    };

    let copyTaskKeyAndTitle = () => {
        let issueKey = $('#key-val').text();
        if (issueKey === '') {
            issueKey = $('#issuekey-val').text();
        }
        const issueTitle = $('#summary-val').text();

        const plainText = (issueKey + '_' + issueTitle)
        .toLowerCase()
        .normalize("NFD")
        .replace(/[\u0300-\u036f]/g, "")
        .replace(/\W+/g, '-')
        .toLowerCase();

        copyToClipboard(plainText);
        $.notify(plainText, 'success');
    };

    let copyToClipboard = (plainText) => {
        function listener(e) {
            e.clipboardData.setData("text/plain", plainText);
            e.preventDefault();
        }
        document.addEventListener("copy", listener);
        document.execCommand("copy");
        document.removeEventListener("copy", listener);
    };

})();