RSS Git Download  Clone
Raw Blame History
window.gitlist.isDark = (theme = window.gitlist.getActualTheme()) => {
    for (let i = 0; i < window.gitlist.dark.length; i++) {
        if (window.gitlist.dark[i] === theme) {
            return true;
        }
    }
    return false;
}


window.gitlist.getActualTheme = (theme = window.gitlist.getThemeCookie()) => {
    const actualTheme = theme.split('-')[1]
    return actualTheme;
}

window.gitlist.getActualThemeCodemirror = () => {
    if (window.gitlist.isDark(window.gitlist.getActualTheme())) {
        return window.gitlist.codemirrorTheme.dark;
    } else {
        return window.gitlist.codemirrorTheme.light;
    }
}

let currentTheme;
let setTimeoutSwitch;
window.gitlist.setTheme = () => {
    if (window.gitlist.$body === undefined) {
        setTimeout(() => {
            window.gitlist.setTheme()
        })
        return;
    }
    const theme = window.gitlist.getActualTheme();
//    console.log('theming', 'currenTheme', currentTheme, 'new theme', theme);
    if (theme === currentTheme) {
//        console.log('same theme')
        return;
    }

    const diffButtons = $('.p3x-gitlist-diff-button.active');
    //console.log(diffButtons)
    for (let diffButton of diffButtons) {
        diffButton.click();
    }

    const switchThemeActually = () => {
        currentTheme = theme;

        /*
        const themeFragmentFileCodeMirror  = (options) => {
            const {  theme } = options
            for(let cm of window.gitlist.fragmentFileCodeMirror) {
                cm.setOption("theme", theme);
            }
        }
        */

        let bodyAddClass
        let bodyRemoveClass
        let codeMirrorTheme
        if (window.gitlist.isDark(theme)) {
            bodyAddClass = 'p3x-gitlist-dark'
            bodyRemoveClass = 'p3x-gitlist-light'
            codeMirrorTheme = window.gitlist.codemirrorTheme.dark
        } else {
            bodyAddClass = 'p3x-gitlist-light'
            bodyRemoveClass = 'p3x-gitlist-dark'
            codeMirrorTheme = window.gitlist.codemirrorTheme.light

        }

        window.gitlist.$body.addClass(bodyAddClass)
        window.gitlist.$body.removeClass(bodyRemoveClass)
        if (gitlist.viewer !== undefined) {
            gitlist.viewer.setOption("theme", codeMirrorTheme);
        }
        if (gitlist.fragmentFileCodeMirror !== undefined) {
            gitlist.fragmentFileCodeMirror.setOption("theme", codeMirrorTheme);
        }


        window.gitlist.networkRedraw();
        window.gitlist.treegraph();
//    if (window.gitlist.lastloadSpan !== undefined && window.gitlist.lastloadSpan > 1000) {
        clearTimeout(setTimeoutSwitch)
        setTimeoutSwitch = setTimeout(() => {
            $('.p3x-gitlist-overlay').remove();
        }, 250)

    }
    //    console.log('p3x-gitlist switching theme')
//    }

    if (diffButtons.length > 0) {
        $.snackbar({
            content: `We hid the shown diffs, to make the theme switching faster.`,
            timeout: window.gitlist.snapckbarLongTimeout,
        });
        window.scrollTo(0, 0);
        setTimeout(switchThemeActually, 250)
    } else {
        switchThemeActually()
    }


}