Reddit - Auto Color Scheme

Auto set dark or light mode for reddit

// ==UserScript==
// @name        Reddit - Auto Color Scheme
// @namespace   Kyan Violentmonkey Scripts
// @match       *://*.reddit.com/*
// @grant       none
// @version     1.1.2
// @license     MIT
// @author      Kyan
// @description Auto set dark or light mode for reddit
// @run-at      document-start
// ==/UserScript==
;(function () {
    'use strict';

    /* Functions */
    const is_dark = () => document.querySelector("html.theme-beta").classList.contains('theme-dark');
    const is_light = () => document.querySelector("html.theme-beta").classList.contains('theme-light');
    const to_dark = () => {
        if (is_light()) {
            document.querySelector("html.theme-beta").classList.remove("theme-light");
            document.querySelector("html.theme-beta").classList.add("theme-dark");
        }
    };
    const to_light = () => {
        if (is_dark()) {
            document.querySelector("html.theme-beta").classList.remove("theme-dark");
            document.querySelector("html.theme-beta").classList.add("theme-light");
        }
    };
    const is_prefer_dark = () => window.matchMedia("(prefers-color-scheme: dark)").matches;
    const is_prefer_light = () => window.matchMedia("(prefers-color-scheme: light)").matches;

    /* Main */
    console.log("[Auto Color Scheme] Loaded")
    if (document.querySelector("html.theme-beta")) {
        console.log(`[Auto Color Scheme] Theme Element Detected: ${document.querySelector("html.theme-beta")}`)
    } else {
        console.error("[Auto Color Scheme] Theme Element Not Found!")
    }
    console.log(`[Auto Color Scheme] Prefer: ${is_prefer_light()?"[✓ Light]":"✗ Light"}, ${is_prefer_dark()?"[✓ Dark]":"✗ Dark"}`)
    console.log(`[Auto Color Scheme] Current: ${is_light()?"[✓ Light]":"✗ Light"}, ${is_dark()?"[✓ Dark]":"✗ Dark"}`)
    if (is_dark() && is_prefer_light()) {
        to_light()
        console.log("[Auto Color Scheme] Switched to Light")
    } else if (is_light() && is_prefer_dark()) {
        to_dark()
        console.log("[Auto Color Scheme] Switched to Dark")
    } else {
        console.log("[Auto Color Scheme] No need to switch")
    }
})()