Automatically hides both chat and sidebar on Kick.com streams for a cleaner viewing experience
// ==UserScript==
// @name Kick.com Auto Hide (Chat + Sidebar)
// @namespace https://greasyfork.org/en/users/1392176-codificalo-xyz
// @version 1.0.1
// @description Automatically hides both chat and sidebar on Kick.com streams for a cleaner viewing experience
// @author codeandoando
// @icon https://play-lh.googleusercontent.com/66czInHo_spTFWwLVYntxW8Fa_FHCDRPnd3y0HT14_xz6xb_lqSv005ARvdkJJE2TA=s256-rw
// @match https://kick.com/*
// @license MIT
// @grant none
// ==/UserScript==
/*
MIT License
Copyright (c) 2024 codeandoando
Permission is hereby granted, free of charge, to any person obtaining a copy of this software...
*/
(function() {
'use strict';
function hideChat() {
const chatContainer = document.getElementById('channel-chatroom');
if (chatContainer) {
const mainContainer = chatContainer.closest('[data-chat]');
if (mainContainer) {
mainContainer.setAttribute('data-chat', 'false');
return true;
}
}
return false;
}
function collapseSidebar() {
const sidebarButton = document.querySelector('button[aria-label="Collapse sidebar"]');
if (sidebarButton) {
sidebarButton.click();
return true;
}
return false;
}
function initializeHiding() {
let chatHidden = false;
let sidebarCollapsed = false;
function retry(attempt = 0) {
if (!chatHidden) {
chatHidden = hideChat();
}
if (!sidebarCollapsed) {
sidebarCollapsed = collapseSidebar();
}
if (!chatHidden || !sidebarCollapsed) {
const delay = Math.min(500 * (attempt + 1), 2000);
setTimeout(() => retry(attempt + 1), delay);
}
}
retry();
}
window.addEventListener('load', () => {
setTimeout(initializeHiding, 2000);
});
let lastUrl = location.href;
new MutationObserver(() => {
const url = location.href;
if (url !== lastUrl) {
lastUrl = url;
setTimeout(initializeHiding, 2000);
}
}).observe(document, {subtree: true, childList: true});
})();