Hollow favi replacement thingy skibidi

akane do your job

// ==UserScript==
// @name         Hollow favi replacement thingy skibidi
// @namespace    https://github.com/Nublord33
// @version      0.1
// @description  akane do your job
// @author       Nublord33/skibidiskid
// @license      Do whatever you want
// @match        https://hollow.live/*
// @grant        whats this?
// ==/UserScript==

(function() {
    'use strict';

    let iconTitleValue = '';
    let iconUrlValue = '';

    // Function svg to favicon
    function replaceSpecificSpanText() {
        const container = document.querySelector('div.grid.grid-cols-5.gap-6.relative');
        if (container) {
            const spans = container.querySelectorAll('span');
            const divs = container.querySelectorAll('div'); // div getter yayyyyyyyyy

            if (spans.length === 0) {
                console.error('[Userscript] no hyperlinks');
            } else {
                console.log('[Userscript] hyperlinks:');
                spans.forEach(span => {
                    console.log(span.textContent.trim());
                });

                spans.forEach(span => {
                    // Check if the span text matches the iconTitleValue
                    if (span.textContent.trim().toLowerCase() === iconTitleValue.trim().toLowerCase()) {
                        // Now get svg and stuff
                        const divContainingSpan = span.closest('div');
                        if (divContainingSpan) {
                            const svg = divContainingSpan.querySelector('svg'); // Find the SVG element
                            if (svg) {
                                // Replace svg with image
                                const faviconUrl = `https://t1.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=${encodeURIComponent(iconUrlValue)}&size=32`;
                                const img = document.createElement('img');
                                img.src = faviconUrl;
                                img.alt = 'Favicon';
                                img.style.width = '32px';
                                img.style.height = '32px';
                                svg.replaceWith(img); // Replace the SVG with the image
                                console.log('[Userscript] svg to favicon now.');
                            }
                        }
                    }
                });
            }
        } else {
            console.log('[Userscript] no divs either he changed it or you bricked it.');
        }
    }

    //  addEventListener slop
    function trackIconTitleInput() {
        const CrossReference = document.querySelector('input#icon-title[placeholder="Icon title"]');
        if (CrossReference) {
            CrossReference.addEventListener('input', () => {
                iconTitleValue = CrossReference.value;
            });
        } else {
            setTimeout(trackIconTitleInput, 500);
        }
    }

    //   addEventListener slop
    function trackIconUrlInput() {
        const Url = document.querySelector('input#icon-url[placeholder="https://example.com"]');
        if (Url) {
            Url.addEventListener('input', () => {
                iconUrlValue = Url.value;
            });
        } else {
            setTimeout(trackIconUrlInput, 500);
        }
    }

    // some more ddEventListener slop
    function waitForSaveButton() {
        const saveButton = document.querySelector('button') && Array.from(document.querySelectorAll('button')).find(button => button.textContent.trim() === 'Save');

        if (saveButton) {
            console.log('[Userscript] Found Save button.');

            saveButton.addEventListener('click', () => {
                console.log('[Userscript] you clicked save good job.');
                console.log('[Userscript] your title is ', iconTitleValue);
                console.log('[Userscript] your url is:', iconUrlValue);

                // wait a bit
                setTimeout(() => {
                    console.log('[Userscript] waited long enough');
                    replaceSpecificSpanText();
                }, 1000);
            });
        } else {
            setTimeout(waitForSaveButton, 500);
        }
    }

    // Wait some more
    function waitForAddIconButton() {
        const addButton = document.querySelector('button[aria-label="Add new icon"]');

        if (addButton) {
            console.log('[Userscript] found the button.');

            addButton.addEventListener('click', () => {
                console.log('[Userscript] you clicked the button want a prize or smth?.');
                trackIconTitleInput();
                trackIconUrlInput();
            });
        } else {
            setTimeout(waitForAddIconButton, 500);
        }
    }

    // load it babyyyyyyyy
    window.addEventListener('load', () => {
        waitForAddIconButton();
        waitForSaveButton();
    });
})();