JVC Clean Citation

Reduire Cascade citations imbriquées (Reduit taille message / Evite les msg d'erreur)

// ==UserScript==
// @name         JVC Clean Citation
// @namespace    JVC Clean Citation
// @version      2.8.0
// @description  Reduire Cascade citations imbriquées (Reduit taille message / Evite les msg d'erreur)
// @author       Atlantis
// @icon         https://images.emojiterra.com/google/android-11/128px/1f4ac.png
// @match        *://www.jeuxvideo.com/forums/42-*
// @match        *://www.jeuxvideo.com/forums/1-*
// @match        *://www.jeuxvideo.com/forums/0-*
// @match        *://www.jeuxvideo.com/recherche/forums/0-*
// @match        *://www.jeuxvideo.com/messages-prives/nouveau.php*
// @match        *://www.jeuxvideo.com/messages-prives/message.php*
// @license      CC0-1.0
// ==/UserScript==

//attendre_le_dom_JVC_2.0_a_larrache
let tentatives = 0;
(function check() {
    const el = document.querySelector('.messageEditor__containerEdit');
    if (el) {
        createboutonetwo12();
    } else if (++tentatives < 6) {
        setTimeout(check, 500);
    }
})();

function createboutonetwo12() {

    const buttonsGroup2 = document.querySelector(".buttonsEditor > .buttonsEditor__group:nth-child(2)");

    //bouton_html
    buttonsGroup2.insertAdjacentHTML("beforeend", `
        <button id="cite-one"
            type="button"
            class="buttonsEditor__button"
            title="Réduire au message cité"
            style="padding-top:.35em; width:1.1rem;">
                <span style="font-size:1.22em;">”</span>
        </button>
        <button id="cite-two"
            type="button"
            class="buttonsEditor__button"
            title="Réduire au message cité + citation imbriquée"
            style="padding-top:.35em; width:1.1rem;">
                <span style="font-size:1.22em;">“&hairsp;”</span>
        </button>
    `);

    // Réduction taille btn Spoiler déjà existant => via parent
    let spoilerButton = buttonsGroup2.querySelector('.jvcode-eye-blocked').parentElement;
    spoilerButton.style.fontSize = "1.3em";

    //fonction_js
    document.getElementById("cite-one").addEventListener("click", () => erasecitation("one"));
    document.getElementById("cite-two").addEventListener("click", () => erasecitation("two"));

}


function erasecitation(niveaucitation) {
    let messageP;
    if (window.location.href.indexOf("jeuxvideo.com/messages-prives/") > -1) {
        messageP = document.getElementById("message");
    } else {
        messageP = document.querySelector("#bloc-formulaire-forum #message_topic");
    }

    //choix de la regex.
    let regexclean;
    if (niveaucitation === "one") {
        regexclean = /^(\s*>>|\s*> >).*\n?/gm;
    } else if (niveaucitation === "two") {
        regexclean = /^(\s*>>>|\s*> >>|\s*>> >|\s*> > >).*\n?/gm;
    }
    let cleantext = messageP.value.replace(regexclean, '');

    //v1_respawn
    //messageP.value = cleantext;
    //v2_respawn_react
    Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, "value")
        .set.call(messageP, cleantext);
    messageP.dispatchEvent(new Event("input", { bubbles: true }));

    //replacer_selecteur_sur_pc
    var userAgent = navigator.userAgent.toLowerCase();
    if (!userAgent.includes('mobile')) {
        messageP.selectionStart = messageP.value.length;
        messageP.focus();
    }
}

/*CSS mobile*/

//mobile_CSS (reduit les marge sur petit ecran)
if (window.innerWidth <= 410) {
    const style = document.createElement('style');
    style.setAttribute('id', 'mobile-style-citation');
    style.setAttribute('type', 'text/css');
    style.appendChild(document.createTextNode(`
        .buttonsEditor__group:nth-of-type(1),
        .buttonsEditor__group:nth-of-type(2) {
            gap: 0.28rem;
            margin-right: 0.225rem;
        }
    `));
    document.head.appendChild(style);
}