HideViewedMarket

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

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

// ==UserScript==
// @name         HideViewedMarket
// @namespace    https://greasyfork.org/ru/users/1142494-llimonix
// @version      0.4
// @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 mainMarket() {
        function check() {
            let myListItem = GM_getValue('myListItem', []);
            $.each(myListItem, function(index, 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();
                }*/
            });
        };

        // Обработка клика на чекбокс
        function handleCheckboxClick() {
            if ($("#ctrl_v_by_me").is(":checked")) {
                GM_setValue('vbemy', 'checked');
            } else {
                GM_setValue('vbemy', 'notchecked');
            }
            location.reload();
        }
        // Добавление кнопок
        $('.MarketSearchBarButtons').append(`<span class="button HideViewedMarketReset mn-15-0-0">Сбросить просмотренные товары</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);
            }
            requestAnimationFrame(checboxAdd);
        }
        checboxAdd();
        $("#ctrl_v_by_me").on("change", handleCheckboxClick);

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

    // Функция, которая работает на странице с конкретным товаром
    function itemMarket() {
        function addItemToList(item) {
            let myListItem = GM_getValue('myListItem', []);
            if ($.inArray(item, myListItem) === -1) {
                myListItem.push(item);
                GM_setValue('myListItem', myListItem);
            }
        }

        let linkBuy = $('.marketViewItem--buyButton').attr('href');
        let itemId = linkBuy.split('/')[0];

        addItemToList(itemId);
    }

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

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