Marmennz / No or >3 notifications

// ==UserScript==
// @name         No or >3 notifications
// @namespace    http://tampermonkey.net/
// @version      1.3
// @description  Limit the number of toast notifications to a maximum of 3, removing older ones
// @author       You
// @match        https://aio-delta.com/modules/raydium/terminal/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // Ваш код для вставки в консоль:
    window.alert = function() {};
    window.confirm = function() {};
    console.log("Уведы отключены!");
})();

(function() {
    'use strict';

    // Функция для подсчета количества элементов в Watch List и изменения стиля
    function updateWatchListCount() {
        const listItems = document.querySelectorAll('.list-group-item'); // Селектор для списка токенов
        const watchListLink = document.querySelector('#watchlist-tab'); // Селектор для ссылки Watch List

        if (watchListLink) {
            const itemCount = listItems.length;
            let fontSize = 'initial'; // По умолчанию стандартный размер шрифта
            let color = 'initial'; // По умолчанию стандартный цвет

            // Логика изменения цвета и размера шрифта в зависимости от количества элементов
            if (itemCount >= 8) {
                color = 'red'; // Красный цвет для 8 и более элементов
                fontSize = 'calc(1em + 5px)'; // Увеличиваем размер шрифта на 5px
            } else if (itemCount >= 6) {
                color = 'yellow'; // Желтый цвет для 6-7 элементов
                fontSize = 'calc(1em + 2px)'; // Увеличиваем размер шрифта на 2px
            }

            // Обновляем текст в ссылке и применяем стили
            watchListLink.textContent = `Watch List (${itemCount})`;
            watchListLink.style.color = color;
            watchListLink.style.fontSize = fontSize;
        } else {
            console.log('Ссылка Watch List не найдена!');
        }
    }

    // Set up a MutationObserver to monitor changes in the DOM
    const observer = new MutationObserver(() => {
        updateWatchListCount(); // Обновляем количество элементов и стиль при изменении DOM
    });

    // Configure the observer to watch for added nodes in the watchlist
    observer.observe(document.body, {
        childList: true,
        subtree: true
    });

    // Лог для отладки
    console.log('Обновление количества элементов в Watch List с изменением стиля активировано!');
})();

(function() {
    'use strict';

    // Максимальное количество уведомлений
    const MAX_TOASTS = 3;

    // Функция для контроля количества уведомлений
    function manageToasts() {
        const toasts = document.querySelectorAll('.toast.show'); // Находим все уведомления

        // Если уведомлений больше максимального количества
        if (toasts.length > MAX_TOASTS) {
            // Удаляем старейшие уведомления
            const excessToasts = Array.from(toasts).slice(0, toasts.length - MAX_TOASTS);
            excessToasts.forEach(toast => toast.remove());
        }
    }

    // MutationObserver для отслеживания изменений в DOM
    const observer = new MutationObserver((mutationsList) => {
        mutationsList.forEach((mutation) => {
            if (mutation.addedNodes.length > 0) {
                mutation.addedNodes.forEach((node) => {
                    // Если элемент является уведомлением
                    if (node.nodeType === 1 && node.matches('.toast.show')) {
                        manageToasts(); // Контролируем количество уведомлений
                    }
                });
            }
        });
    });

    // Наблюдаем за всем телом документа
    observer.observe(document.body, { childList: true, subtree: true });

    // Лог для отладки
    console.log('Спам отключен!');
})();