Kick.com Language Filter Memory

Automatically remembers and restores your selected language filter on Kick.com browse page

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да инсталирате разширение, като например Tampermonkey .

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name         Kick.com Language Filter Memory
// @version      1.0
// @description  Automatically remembers and restores your selected language filter on Kick.com browse page
// @description:pl Automatycznie zapamiętuje i przywraca wybrany filtr języka na stronie przeglądania Kick.com
// @author       Premiumsmart
// @match        https://kick.com/browse*
// @icon         https://kick.com/favicon.ico
// @license      MIT
// @grant        none
// @namespace https://greasyfork.org/users/1353836
// ==/UserScript==

(function() {
    'use strict';

    const STORAGE_KEY = 'kick_language_filter';

    // Get current language from URL
    function getCurrentLanguageFromURL() {
        const urlParams = new URLSearchParams(window.location.search);
        return urlParams.get('languages');
    }

    // Get saved language from localStorage
    function getSavedLanguage() {
        return localStorage.getItem(STORAGE_KEY);
    }

    // Save language to localStorage
    function saveLanguage(lang) {
        if (lang) {
            localStorage.setItem(STORAGE_KEY, lang);
            console.log(`[Kick Filter] Saved language: ${lang}`);
        } else {
            // If user removed the filter (clicked "Clear all")
            localStorage.removeItem(STORAGE_KEY);
            console.log(`[Kick Filter] Removed saved language`);
        }
    }

    // Main logic
    function applyLanguageFilter() {
        const currentLang = getCurrentLanguageFromURL();
        const savedLang = getSavedLanguage();

        // Case 1: User just selected/changed language
        if (currentLang) {
            saveLanguage(currentLang);
            console.log(`[Kick Filter] Detected language filter: ${currentLang}`);
        }
        // Case 2: No language in URL, but we have saved one
        else if (savedLang && window.location.pathname === '/browse') {
            console.log(`[Kick Filter] Restoring saved language: ${savedLang}`);
            const urlParams = new URLSearchParams(window.location.search);
            urlParams.set('languages', savedLang);

            // Keep other parameters (e.g. sort)
            if (!urlParams.has('sort')) {
                urlParams.set('sort', 'viewers_high_to_low');
            }

            // Redirect with preserved parameters
            window.location.search = urlParams.toString();
        }
        // Case 3: No language in URL and no saved language - user cleared the filter
        else if (!currentLang && !savedLang) {
            console.log(`[Kick Filter] No language filter active`);
        }
    }

    // Listen for URL changes (when user changes filter without page reload)
    let lastURL = window.location.href;
    new MutationObserver(() => {
        const currentURL = window.location.href;
        if (currentURL !== lastURL) {
            lastURL = currentURL;
            applyLanguageFilter();
        }
    }).observe(document, { subtree: true, childList: true });

    // Run on page load
    applyLanguageFilter();

})();