Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name USERNAME BLACKLIST (Easy Toggle + On-Page Button)
- // @author DELAWARDE (et chatGPT)
- // @namespace https://onche.org
- // @version 0.6
- // @description Cache automatiquement les messages des pseudos sélectionnés par l'utilisateur, avec bouton de gestion rapide.
- // @match https://onche.org/*
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- // --- CONFIGURATION ---
- let blacklistedUsers = JSON.parse(localStorage.getItem('blacklistedUsers') || '{}');
- const isBlacklistActive = true;
- function saveBlacklist() {
- localStorage.setItem('blacklistedUsers', JSON.stringify(blacklistedUsers));
- }
- // --- UI: Masquer un message ---
- function hideMessage(message, username) {
- const placeholder = document.createElement('div');
- placeholder.className = 'message-userblacklisted';
- placeholder.style.cssText = 'font-size: 14px; padding: 5px; background-color: #1c1e23; color: #f0f0f0; border: 1px solid #ccc; margin: 5px 0;';
- const text = document.createElement('span');
- text.textContent = `Message caché de ${username}`;
- placeholder.appendChild(text);
- const button = document.createElement('button');
- button.textContent = 'Voir le message';
- button.style.cssText = 'margin-left: 10px; padding: 2px 5px;';
- button.onclick = function() {
- message.style.display = '';
- placeholder.remove();
- };
- placeholder.appendChild(button);
- message.style.display = 'none';
- message.parentNode.insertBefore(placeholder, message);
- }
- // --- UI: Bouton blacklist toggle ---
- function addBlacklistButton(message, username) {
- const rightDiv = message.querySelector('.right');
- if (!rightDiv || rightDiv.querySelector('.mdi-block-helper')) return; // already added
- const toggleBtn = document.createElement('div');
- toggleBtn.className = 'mdi mdi-block-helper';
- toggleBtn.title = blacklistedUsers[username] === 1 ? 'Retirer de la blacklist' : 'Ajouter à la blacklist';
- toggleBtn.style.cursor = 'pointer';
- toggleBtn.style.marginRight = '8px';
- toggleBtn.style.opacity = blacklistedUsers[username] === 1 ? '0.6' : '1.0';
- toggleBtn.addEventListener('click', (e) => {
- e.stopPropagation();
- blacklistedUsers[username] = blacklistedUsers[username] === 1 ? 0 : 1;
- saveBlacklist();
- processUsernames();
- });
- rightDiv.insertBefore(toggleBtn, rightDiv.firstChild);
- }
- // --- Traitement principal ---
- function processUsernames() {
- if (!isBlacklistActive) return;
- const messages = document.querySelectorAll('.message');
- messages.forEach(message => {
- const username = message.getAttribute('data-username');
- if (!username) return;
- addBlacklistButton(message, username);
- // Remove old placeholder if any
- const oldPlaceholder = message.previousSibling;
- if (oldPlaceholder && oldPlaceholder.classList?.contains('message-userblacklisted')) {
- oldPlaceholder.remove();
- }
- // Show or hide message depending on blacklist
- if (blacklistedUsers[username] === 1) {
- hideMessage(message, username);
- } else {
- message.style.display = '';
- }
- });
- }
- // --- Initialisation ---
- processUsernames();
- // --- Observer les nouveaux messages ---
- const observer = new MutationObserver((mutations) => {
- mutations.forEach((mutation) => {
- if (mutation.addedNodes && mutation.addedNodes.length > 0) {
- mutation.addedNodes.forEach((node) => {
- if (node.nodeType === Node.ELEMENT_NODE && node.classList.contains('message')) {
- processUsernames();
- }
- });
- }
- });
- });
- observer.observe(document.body, { childList: true, subtree: true });
- })();
Advertisement
Add Comment
Please, Sign In to add comment