GGn Submit Both Edit Forms

Submit wiki and non-wiki forms together

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

You will need to install an extension such as Tampermonkey to install this 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         GGn Submit Both Edit Forms
// @version      3
// @description  Submit wiki and non-wiki forms together
// @author       ingts
// @match        https://gazellegames.net/torrents.php?action=editgroup&groupid=*
// @namespace https://greasyfork.org/users/1141417
// ==/UserScript==

/** @type {HTMLFormElement[]} */
const formElements = [...document.querySelectorAll('#content form[action="torrents.php"]')]
formElements.length = 2

if (formElements[1]) {
    for (const formElement of formElements) {
        button(formElement.querySelector('input[type=submit]'))
    }
}

function button(insert) {
    const input = document.createElement('input')
    input.type = 'button'
    input.value = 'Submit Both'
    input.style.marginLeft = '5px'
    insert.insertAdjacentElement('afterend', input)

    input.onclick = async () => {
        if (!formElements[0].reportValidity() || !formElements[1].reportValidity()) return
        input.disabled = true
        const formDatas = [new FormData(formElements[0]), new FormData(formElements[1])]

        const fetches = formDatas.map((fd, index) => {
            fetch('torrents.php', {
                method: 'POST',
                body: fd,
            }).then(r => {
                if (!(r.ok && r.redirected)) {
                    console.error(r)
                    input.disabled = false
                    alert(`Failed to submit ${index === 0 ? 'wiki' : 'non-wiki'} form`)
                    throw new Error()
                }
            })
        })


        Promise.all(fetches).then(() => {
            setTimeout(() => {
                location.href = `https://gazellegames.net/torrents.php?id=${/\d+/.exec(location.href)[0]}`
            }, 1000)
        })
    }
}