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.0.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      MIT
// ==/UserScript==


//attendre_le_dom_JVC_2.0
if (document.querySelector('.messageEditor__buttonEdit')) {
    createboutonetwo12();
} else {
    setTimeout(() => {
        if (document.querySelector('.messageEditor__buttonEdit')) {
            createboutonetwo12();
        }
    }, 500);
}

function createboutonetwo12() {

    let toolbar = document.querySelector(".buttonsEditor");
    let imgBtnGroup = toolbar.querySelectorAll(".buttonsEditor__group")[1];

    let activateButton = document.createElement("button");
    activateButton.classList.add("buttonsEditor__button")
    activateButton.setAttribute("type", "button")

    // span pour la taille Sans interaction avec les autres scripts (dezzomer)
    let innerSpan = document.createElement("span");
    innerSpan.textContent = "”"; // Le texte du bouton
    innerSpan.style.fontSize = "1.22em";
    activateButton.appendChild(innerSpan);

    activateButton.style.paddingTop = "0.35em";
    activateButton.style.width = "0.9rem";
    activateButton.setAttribute("id", "cite-one");
    activateButton.setAttribute("title", "Réduire au message Cité");
    activateButton.addEventListener("click", function() {
        erasecitation();
    });


    let activateButton2 = document.createElement("button");
    activateButton2.classList.add("buttonsEditor__button")
    activateButton2.setAttribute("type", "button")

    // span pour la taille Sans interaction avec les autres scripts (dezzomer)
    let innerSpan2 = document.createElement("span");
    innerSpan2.textContent = "“\u200A”"; // Le texte du bouton
    innerSpan2.style.fontSize = "1.22em";
    activateButton2.appendChild(innerSpan2);

    activateButton2.style.paddingTop = "0.35em";
    activateButton2.style.width = "0.9rem";
    activateButton2.setAttribute("id", "cite-two");
    activateButton2.setAttribute("title", "Réduire au message Cité + Citation imbriqué");
    activateButton2.addEventListener("click", function() {
        erasecitation2();
    });

    // Ajout des boutons à la suite dans le même groupe de boutons
    imgBtnGroup.appendChild(activateButton);
    imgBtnGroup.appendChild(activateButton2);

    // Réduction taille btn Spoiler déjà existant
    let spoilerButton = imgBtnGroup.querySelector('.buttonsEditor__button[title="Spoiler"]');
    spoilerButton.style.fontSize = "1.3em";

}




function effacerLignesAvecMotif(texte) {
    var expression = /^(\s*>>|\s*> >).*\n?/gm;
    texte = texte.replace(expression, '');
    return texte;
}



function erasecitation() {
    let messageP;
    if (window.location.href.indexOf("jeuxvideo.com/messages-prives/") > -1) {
        messageP = document.getElementById("message");
    } else {
        //messageP = document.getElementById("message_topic");
        const all = document.querySelectorAll("#message_topic");
        messageP = all[all.length - 1] || null;
    }
    var text = messageP.value;
    text = effacerLignesAvecMotif(text);
    //v1_0
    //messageP.value = text;
    //v2_0
    Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, "value")
      .set.call(messageP, text);
    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();
    }
}

function effacerLignesAvecMotifmulti(texte) {
    var expression = /^(\s*>>>|\s*> >>|\s*>> >|\s*> > >).*\n?/gm;
    texte = texte.replace(expression, '');
    return texte;
}

function erasecitation2() {
    let messageP;
    if (window.location.href.indexOf("jeuxvideo.com/messages-prives/") > -1) {
        messageP = document.getElementById("message");
    } else {
        //messageP = document.getElementById("message_topic");
        const all = document.querySelectorAll("#message_topic");
        messageP = all[all.length - 1] || null;
    }
    var text = messageP.value;
    text = effacerLignesAvecMotifmulti(text);
    //v1_0
    //messageP.value = text;
    //v2_0
    Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, "value")
      .set.call(messageP, text);
    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();
    }
}