Add calibrate button autodarts

Adds calibrate button!

Ekde 2024/02/28. Vidu La ĝisdata versio.

// ==UserScript==
// @name         Add calibrate button autodarts
// @namespace    http://tampermonkey.net/
// @version      2024-02-28
// @description  Adds calibrate button!
// @author       Sennevds
// @license      MIT
// @match        *//:autodarts.io/lobbies/*
// @match        *autodarts.io/lobbies/*
// @match        *autodarts.io/*
// @match        *play.autodarts.io/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=tampermonkey.net
// @require      https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js
// @grant        GM.xmlHttpRequest

// ==/UserScript==

const URL = '10.5.65.156:3180'
function sending_xml(endpoints) {
    console.log("SENDING DATA");
    function createCal(counter) {
        if (counter < endpoints.length) {
            let endpoint = endpoints[counter];
            GM.xmlHttpRequest({
                method: endpoint['type'],
                url: `http://${URL}/api/${endpoint['endpoint']}`,
                synchronous: true,
                headers: {
                    "Content-Type": "application/json"
                },
                onload: function (response) {
                    console.log(response); //display "ok"
                    createCal(counter+1);
                }
            });
        }
    }
    createCal(0)
}

(function () {
    "use strict";

    const documentObserver = new MutationObserver((mutationRecords) => {
        console.log(mutationRecords[0]?.target.classList);
        if (mutationRecords[0]?.target.classList.contains("css-1lua7td")) {
            $(".css-1uodvt1").prepend('<button id="calibrate" type="button" class="chakra-button css-ez23ye">Calibrate</button>')
            $("#calibrate").on("click", function () {
                sending_xml([{ "type": "PUT", "endpoint": "start" }, { "type": "POST", "endpoint": "config/calibration/auto" }, { "type": "PUT", "endpoint": "config/calibration" }]);
            })
        }
    });

    documentObserver.observe(document, {
        childList: true,
        attributes: true,
        subtree: true,
        attributeFilter: ["class"],
    });
})();