fix(editor): Fix local storage flags defaulting to undefined string (#7603)
useStorage takes the default value `undefined` and sets it in local storage.. also returns "undefined" as string which breaks onboarding flows Github issue / Community forum post (link here to close automatically):
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
import type { AppliedThemeOption, ThemeOption } from '@/Interface';
|
||||
import { useStorage } from '@/composables/useStorage';
|
||||
import { LOCAL_STORAGE_THEME } from '@/constants';
|
||||
|
||||
const themeRef = useStorage(LOCAL_STORAGE_THEME);
|
||||
|
||||
export function addThemeToBody(theme: AppliedThemeOption) {
|
||||
window.document.body.setAttribute('data-theme', theme);
|
||||
}
|
||||
@@ -11,7 +14,7 @@ export function isValidTheme(theme: string | null): theme is AppliedThemeOption
|
||||
|
||||
// query param allows overriding theme for demo view in preview iframe without flickering
|
||||
export function getThemeOverride() {
|
||||
return getQueryParam('theme') || localStorage.getItem(LOCAL_STORAGE_THEME);
|
||||
return getQueryParam('theme') || themeRef.value;
|
||||
}
|
||||
|
||||
function getQueryParam(paramName: string): string | null {
|
||||
@@ -21,10 +24,10 @@ function getQueryParam(paramName: string): string | null {
|
||||
export function updateTheme(theme: ThemeOption) {
|
||||
if (theme === 'system') {
|
||||
window.document.body.removeAttribute('data-theme');
|
||||
localStorage.removeItem(LOCAL_STORAGE_THEME);
|
||||
themeRef.value = null;
|
||||
} else {
|
||||
addThemeToBody(theme);
|
||||
localStorage.setItem(LOCAL_STORAGE_THEME, theme);
|
||||
themeRef.value = theme;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user