GeeksForGeeks Login Bypass

Get rid of login popup/blocking on GeeksForGeeks.

// ==UserScript==
// @name         GeeksForGeeks Login Bypass
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Get rid of login popup/blocking on GeeksForGeeks.
// @match        https://www.geeksforgeeks.org/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=geeksforgeeks.org
// @grant        none
// @license MIT
// ==/UserScript==


var lastScrollPos = 0;
(function() {
    'use strict';

    // Your code here...
    let observer = new MutationObserver(reactToMutation);
    var domToWatch = document.querySelector('body')
    
    observer.observe(domToWatch, {
        characterDataOldValue: true, 
        subtree: true, 
        childList: true, 
        characterData: true
    });
})();

function reactToMutation(mutations) {
    mutations.forEach((mutation) => {
        let oldValue = mutation.oldValue;
        let newValue = mutation.target;
        if (oldValue !== newValue) {
            var spinnerLoadingOverlay = newValue.querySelector('div.spinner-loading-overlay')
            // spinner overlay is present and visible
            if(spinnerLoadingOverlay && spinnerLoadingOverlay.style.display === 'block') {
                // remove the annoying overlay
                spinnerLoadingOverlay.remove()
                // save scroll position, site brings you back to the top
                if(document.documentElement.scrollTop > 0) {
                    lastScrollPos = document.documentElement.scrollTop
                }
            }
            var loginModal = newValue.querySelector('div.login-modal-div')
            // login modal is present and visible
            if(loginModal && loginModal.style.display === 'block') {
                // remove login modal
                loginModal.remove()
                // remove css scrolling restriction
                var body = document.querySelector('body')
                body.style.position = 'relative'
                body.style.overflow = 'visible'
                // nullify scoll event listener that blocks you
                window.onscroll = null
                // scroll back to where you were
                if(lastScrollPos > 0) {
                    document.documentElement.scrollTo(0, lastScrollPos)
                }
            }
        }
    });
}