Github notion task id detector

Detect notion task id from default name by git branch

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

// ==UserScript==
// @name         Github notion task id detector
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  Detect notion task id from default name by git branch
// @author       Yes
// @match        https://github.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=github.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    function getPrTitleEl() {
        return document.getElementById('pull_request_title')
    }

    setInterval(function() {
        const prTitle = getPrTitleEl()

        if (!prTitle) return

        const prTitleText = prTitle.value

        const match = prTitleText.match(/(Tas \d+?) (.*)/i)
        if (match) {
            let notionId = match[1].split(' ')

            notionId = `[${notionId[0].toUpperCase()}-${notionId[1]}]`

            prTitle.value = `${notionId} ${match[2]}`
        }
    }, 1000);

    setInterval(function() {
        const prTitleHeader = document.getElementById('pull_request_title_header')

        if (!prTitleHeader) return

        if (prTitleHeader.querySelector('.add-prefix-btn')) return

        const branch = document.getElementById('head-ref-selector')?.querySelector('.css-truncate')?.innerText

        if (!branch) return

        const match = branch.match(/tas-(\d+?)-/i)

        if (match) {
            const addPrefixBtn = document.createElement("button");
            const prefix = `[TAS-${match[1]}]`
            addPrefixBtn.innerText = `Add ${prefix}`
            addPrefixBtn.setAttribute('type', 'button')
            addPrefixBtn.classList.value = 'add-prefix-btn Button Button--secondary Button--small'
            addPrefixBtn.style.marginLeft = '10px'
            addPrefixBtn.addEventListener('click', () => {
                const el = getPrTitleEl()
                el.value = `${prefix} ${el.value}`
            })
            prTitleHeader.appendChild(addPrefixBtn)
        }
    }, 1000);
})();