CAM4 - Only "Go Private" Button

Hides tipping and interaction controls while keeping the "Go Private" button visible

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         CAM4 - Only "Go Private" Button
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Hides tipping and interaction controls while keeping the "Go Private" button visible
// @author       Sergi0
// @match        https://*.cam4.com/*
// @grant        none
// @icon         https://www.cam4.com/favicon.ico
// @license      MIT
// @homepageURL  https://greasyfork.org/es/scripts/590036-cam4-only-go-private-button
// @supportURL   https://greasyfork.org/es/scripts/590036-cam4-only-go-private-button/feedback
// ==/UserScript==

(function () {
    'use strict';

    function cleanToolbar() {

        // Hide quick tip buttons: 5, 10, 25, 50
        document.querySelectorAll(
            '[data-action-id="Quick Tip"]'
        ).forEach(el => {
            el.style.display = 'none';
        });

        // Hide tip menu
        document.querySelectorAll(
            '[data-action-id="Tip Menu"]'
        ).forEach(el => {
            el.style.display = 'none';
        });

        // Hide custom tip button
        document.querySelectorAll(
            '[data-action-id="Custom Tip"]'
        ).forEach(el => {
            el.style.display = 'none';
        });

        // Hide game button
        document.querySelectorAll(
            '[data-action-id="Play Game"]'
        ).forEach(el => {
            el.closest('span')?.style.setProperty('display', 'none', 'important');
        });

        // Hide Lovense button
        document.querySelectorAll(
            '[data-action-id="Lovense Toy"]'
        ).forEach(el => {
            el.closest('span')?.style.setProperty('display', 'none', 'important');
        });

        // Hide second-row interaction buttons
        [
            'Send Gift',
            'Beat The Leader',
            'Boost',
            'Complete Goal'
        ].forEach(action => {
            document.querySelectorAll(
                `[data-action-id="${action}"]`
            ).forEach(el => {
                el.closest('span')?.style.setProperty('display', 'none', 'important');
            });
        });

        // Hide token balance / purchase area
        document.querySelectorAll(
            '[data-action-id="Buy Tokens"]'
        ).forEach(el => {
            el.style.display = 'none';
        });

        // Hide three-dot menu
        document.querySelectorAll(
            '.DesktopTipBar__menuBtn'
        ).forEach(el => {
            el.style.display = 'none';
        });
    }

    // Initial cleanup
    cleanToolbar();

    // CAM4 dynamically updates the interface
    const observer = new MutationObserver(cleanToolbar);

    observer.observe(document.body, {
        childList: true,
        subtree: true
    });
})();