Skip to content

Commit

Permalink
Support overriding theme through URL search parameter
Browse files Browse the repository at this point in the history
Signed-off-by: Joshua Li <joshuali925@gmail.com>
  • Loading branch information
joshuali925 committed Aug 21, 2024
1 parent 9d692ef commit 729b030
Showing 1 changed file with 28 additions and 3 deletions.
31 changes: 28 additions & 3 deletions src/legacy/ui/ui_render/bootstrap/startup.js.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,41 @@ try {
window.console.log(error);
}

var useBrowserColorScheme = window.localStorage.getItem('useBrowserColorScheme') === 'true' || false;
/** @type {'browser' | 'light' | 'dark' | null} */
var urlThemeParam = null;
try {
urlThemeParam = new URLSearchParams(window.location.search).get('theme');
if (!urlThemeParam && window.location.hash.includes('?')) {
urlThemeParam = new URLSearchParams(window.location.hash.split('?')[1]).get('theme');
}
if (
urlThemeParam !== null &&
urlThemeParam !== 'dark' &&
urlThemeParam !== 'light' &&
urlThemeParam !== 'browser'
) {
throw new Error('theme must be "browser", "light", or "dark", received ' + urlThemeParam);
urlThemeParam = null;
}
} catch (error) {
window.console.warn('Failed to parse "theme" parameter in URL', error);
}

var useBrowserColorScheme =
urlThemeParam === 'browser' ||
window.localStorage.getItem('useBrowserColorScheme') === 'true' ||
false;

var browserDarkMode = uiSettings['theme:darkMode'] || {};
var browserDarkMode = urlThemeParam
? { userValue: urlThemeParam === 'dark' }
: uiSettings['theme:darkMode'] || {};
var browserThemeVersion = uiSettings['theme:version'] || {};

var rawDarkMode = typeof browserDarkMode.userValue !== 'boolean' ? {{configDarkMode}} : browserDarkMode.userValue;

var rawThemeVersion = browserThemeVersion.userValue || '{{configThemeVersion}}'

if ({{configEnableUserControl}}) {
if (urlThemeParam || {{configEnableUserControl}}) {
if (useBrowserColorScheme && window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches !==
rawDarkMode) {
uiSettings['theme:darkMode'] = window.matchMedia('(prefers-color-scheme: dark)').matches;
Expand Down

0 comments on commit 729b030

Please sign in to comment.