Github notion task id detector

Detect notion task id from default name by git branch

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==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);
})();