Optimize work experience at Microsoft

Optimize work experience at Microsoft!

// ==UserScript==
// @name         Optimize work experience at Microsoft
// @namespace
// @version      1.0.1
// @description  Optimize work experience at Microsoft!
// @author       Guosen Wang
// @match        https://ms.portal.azure.com/*
// @match        https://*.visualstudio.com/*
// @match        https://portal.microsofticm.com/imp/v3/incidents/details/*
// @match        https://eng.ms/docs/*
// @run-at       document-start
// @grant        none
// @namespace https://001.io/
// ==/UserScript==
(function () {
    'use strict';
    const host = location.host;

    switch (true) {
        case 'ms.portal.azure.com' === host:
            azure();
            break;
        case 'portal.microsofticm.com' === host:
            icm();
            break;
        case 'eng.ms' === host:
            eng_ms();
            break;
        case ["1essharedassets", "o365exchange", "supportability", "ceacc", "devdiv", "domoreexp", "imsandbox", "microsoft", "msazure", "msblox", "mscosmos", "msdata", "mseng", "office", "onebranch", "onedrive", "ossmsft", "powerbi"].indexOf(host.match(/([^\.]+).visualstudio.com/)[1].toLowerCase()) !== -1:
            vsts();
            break;
    }
})();

function azure() {
    let checkExist = setInterval(function () {
        const selector = '#_weave_e_6';
        if (document.querySelector(selector)) {
            document.querySelector(selector).remove();
            const bannerLabel = document.querySelector("#_weave_e_5 > div.fxs-topbar-internal.fxs-internal-full");
            bannerLabel.innerText = bannerLabel.innerText.replace(" (Preview)", "");
            clearInterval(checkExist);
        }
    }, 100);
    setTimeout(() => {
        clearInterval(checkExist);
    }, 5000);
}

// Redirect VSTS to DevOps
function vsts() {
    let url = location.href.replace(/(\w+)\.visualstudio.com(\/DefaultCollection)?/, 'dev.azure.com/$1');
    location.replace(url);
}

// Optimize ICM fullscreen experience
function icm() {
    window.onload = () => {
        const style = document.createElement('style');
        style.innerText = '.widget.full-frame{padding:25px 25% 0;}.in.collapse::-webkit-scrollbar{display:none;}.widget.full-frame>header{padding-left:0;}';
        document.querySelector('head').appendChild(style);

        const body = document.querySelector('body');
        body.addEventListener('keydown', e => {
            if (e.ctrlKey || e.altKey) {
                return;
            }
            if (e.key === "f" || e.key === "F") {
                if (e.target.tagName === "INPUT") {
                    return;
                }
                const enterFullScreenBtn = document.querySelector('#skip-to-main > ui-view > div > div:nth-child(3) > div.maintabs-tabset > div > div.tab-pane.active > div > detail-view > div > div.col-12.col-sm-8 > widget-panel > div > section:nth-child(1) > header > button:nth-child(5)');
                if (enterFullScreenBtn) {
                    enterFullScreenBtn.click();
                }
            } else if (e.key === "Escape") {
                const exitFullScreenBtn = document.querySelector('#skip-to-main > ui-view > div > div:nth-child(3) > div.maintabs-tabset > div > div.tab-pane.active > div > detail-view > div > div.col-12.col-sm-8 > widget-panel > div > section.widget.full.full-frame.non-draggable > header > button:nth-child(5)');
                if (exitFullScreenBtn) {
                    exitFullScreenBtn.click();
                }
            }
        });
    };
}

function eng_ms() {
    let checkExist = setInterval(
        function () {
            if (document.querySelector("#mainContent > style")) {
                document.querySelector("#mainContent > style").innerHTML = document.querySelector("#mainContent > style").innerHTML.replace(".docfx-container pre{", ".docfx-container pre{line-height:0;");
                clearInterval(checkExist);
            }
        },
        100);
    setTimeout(() => {
        clearInterval(checkExist);
    }, 5000);
}