ResetEra Auto Dark Mode

Automatically toggle built-in dark mode on resetera.com

  1. // ==UserScript==
  2. // @name ResetEra Auto Dark Mode
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2
  5. // @description Automatically toggle built-in dark mode on resetera.com
  6. // @author Nathaniel Wu
  7. // @match *.resetera.com/*
  8. // @license Apache-2.0
  9. // @supportURL https://gist.github.com/Nathaniel-Wu/13f3c865e190c2b182e41b9978c49782
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. (function () {
  14. 'use strict';
  15. const setDarkMode = on => {
  16. const light_dark_switch = document.querySelector('label#js-XFUniqueId3.thstyleswitch_toggleSwitch > input.thstyleswitch_toggleSwitch__checkbox');
  17. if (!Boolean(light_dark_switch)) {
  18. console.log('site updated, current script no longer works');
  19. return;
  20. }
  21. let is_light = !(light_dark_switch.checked);
  22. if (on === is_light) light_dark_switch.click();
  23. }
  24. if (window.matchMedia) {// if the browser/os supports system-level color scheme
  25. setDarkMode(window.matchMedia('(prefers-color-scheme: dark)').matches);
  26. window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', e => setDarkMode(e.matches));
  27. } else {// otherwise use local time to decide
  28. let hour = (new Date()).getHours();
  29. setDarkMode(hour > 18 || hour < 8);
  30. }
  31. })();