HideViewedMarket

Скрываем уже просмотренные товары на маркете!

当前为 2023-08-11 提交的版本,查看 最新版本

// ==UserScript==
// @name         HideViewedMarket
// @namespace    https://greasyfork.org/ru/users/1142494-llimonix
// @version      0.5
// @description  Скрываем уже просмотренные товары на маркете!
// @author       llimonix
// @match        https://lzt.market/*
// @icon         https://i.imgur.com/SX9RWhl.png
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_deleteValue
// @license      MIT
// ==/UserScript==

(function() {
    function handleClick(itemId, event) {
        let myListItem = GM_getValue('myListItem', []);
        if ($.inArray(itemId, myListItem) === -1) {
            itemId = itemId.replace('marketItem--','')
            myListItem.push(itemId);
            GM_setValue('myListItem', myListItem);
        }
        console.log(myListItem);
    };

    // Функция, которая работает на странице товаров
    function mainMarket() {
        function check() {
            let myListItem = GM_getValue('myListItem', []);
            let marketItemCSS = []
            $.each(myListItem, function(index, element) {
                marketItemCSS += `#marketItem--${element}, `;
                //$(`#marketItem--${element}`).hide();
                // Старая логика работы
                /*$(".marketIndexItem").each(function(index, element) {
                let marketItemID = $(element).attr('id');
                let itemId = marketItemID.replace("marketItem--", "");
                if ($.inArray(itemId, myListItem) !== -1) {
                    $(element).remove();
                }*/
            });
            marketItemCSS = marketItemCSS.slice(0, -2);
            $(marketItemCSS).css ({
                'display': 'none'
            });
        };

        // Обработка клика на чекбокс
        function handleCheckboxClick() {
            if ($("#ctrl_v_by_me").is(":checked")) {
                GM_setValue('vbemy', 'checked');
            } else {
                GM_setValue('vbemy', 'notchecked');
            }
            location.reload();
        }
        // Добавление кнопок
        let myListItemButton = (GM_getValue('myListItem', [])).length;
        $('.MarketSearchBarButtons').append(`<span class="button HideViewedMarketReset mn-15-0-0">Сбросить просмотренные товары (${myListItemButton})</span>`);
        // Обработка клика сброса
        $(".HideViewedMarketReset").click(function() {
            GM_deleteValue('myListItem');
            location.reload();
        });
        function checboxAdd() {
            let checboxNotElement = $('#ctrl_v_by_me');
            if (checboxNotElement.length == 0) {
                let checkboxsearchBarForm = $('#CategoryWrapper .searchBarForm--Filter .checkboxRow:first');
                if (checkboxsearchBarForm.length > 0) {
                    $('#CategoryWrapper .searchBarForm--Filter:first .checkboxRow:last').after(`<div class="checkboxRow"><input type="checkbox" name="v_by_me" value="1" id="ctrl_v_by_me"><label for="ctrl_v_by_me"> Был ранее просмотрен мною</label></div>`);
                } else {
                    $('.HiddenFilters .searchBarForm--Filter').css({
                        'visibility': 'visible',
                    });
                    $('#CategoryWrapper .HiddenFilters:first').after(`<div class="checkboxRow"><input type="checkbox" name="v_by_me" value="1" id="ctrl_v_by_me"><label for="ctrl_v_by_me"> Был ранее просмотрен мною</label></div>`);
                }
            }
            if (GM_getValue('vbemy') === 'checked') {
                $("#ctrl_v_by_me").prop("checked", true);
            }
            $('.marketIndexItem').each(function() {
                let itemId = $(this).attr('id');
                let hasClickHandler = $(this).data('hasClickHandler');
                let isMiddleButtonClick = false;

                if (!hasClickHandler) {
                    // Обработчик для обычного клика и клика правой кнопкой
                    $(this).on('click auxclick', function(event) {
                        if (event.button !== 1 || !isMiddleButtonClick) {
                            handleClick(itemId, event);
                        }
                    });

                    // Обработчик для клика через колесико
                    $(this).on('mousedown', function(event) {
                        if (event.button === 1) { // Проверяем, что это клик через колесико
                            event.preventDefault(); // Отменяем действие по умолчанию (прокрутку)
                            isMiddleButtonClick = true;
                        }
                    });

                    $(this).on('mouseup', function(event) {
                        if (event.button === 1) {
                            isMiddleButtonClick = false;
                        }
                    });

                    // Устанавливаем флаг, что обработчики уже добавлены
                    $(this).data('hasClickHandler', true);
                }
            });



            requestAnimationFrame(checboxAdd);
        }
        checboxAdd();
        $("#ctrl_v_by_me").on("change", handleCheckboxClick);

        if (GM_getValue('vbemy') === 'checked') {
            $("#ctrl_v_by_me").prop("checked", true);
            check();
        }
    }

    // Определяет, находимся ли мы сейчас на странице просмотра всех товаров
    if ($('.MarketSearchBarButtons').length > 0) {
        mainMarket();
    }

})();