Set last known app theme background color until theme is loaded

This commit is contained in:
schroda
2025-07-28 00:20:16 +02:00
parent ff58dcc480
commit fb00f51107
2 changed files with 21 additions and 0 deletions

View File

@@ -28,6 +28,19 @@
<noscript>You need to enable JavaScript to run this app.</noscript> <noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div> <div id="root"></div>
<script type="module" src="./src/index.tsx"></script> <script type="module" src="./src/index.tsx"></script>
<script>
const backgroundColor = (() => {
try {
return JSON.parse(window.localStorage.getItem("theme_background"))
} catch (e) {
return null
}
})();
if (backgroundColor) {
document.documentElement.style.backgroundColor = backgroundColor;
}
</script>
<!-- <!--
This HTML file is a template. This HTML file is a template.
If you open it directly in the browser, you will see an empty page. If you open it directly in the browser, you will see an empty page.

View File

@@ -22,6 +22,7 @@ import { createAndSetTheme } from '@/modules/theme/services/ThemeCreator.ts';
import { makeToast } from '@/modules/core/utils/Toast.ts'; import { makeToast } from '@/modules/core/utils/Toast.ts';
import { getErrorMessage } from '@/lib/HelperFunctions.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts';
import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx'; import { useLocalStorage } from '@/modules/core/hooks/useStorage.tsx';
import { AppStorage } from '@/lib/storage/AppStorage.ts';
export const AppThemeContextProvider = ({ children }: { children: ReactNode }) => { export const AppThemeContextProvider = ({ children }: { children: ReactNode }) => {
const { t, i18n } = useTranslation(); const { t, i18n } = useTranslation();
@@ -102,6 +103,13 @@ export const AppThemeContextProvider = ({ children }: { children: ReactNode }) =
} }
}, [serverAppTheme, localAppTheme]); }, [serverAppTheme, localAppTheme]);
useEffect(() => {
// The set background color is not necessary anymore, since the theme has been loaded
document.documentElement.style.backgroundColor = '';
AppStorage.local.setItem('theme_background', theme.palette.background.default);
}, [theme.palette.background.default]);
if (directionRef.current !== currentDirection) { if (directionRef.current !== currentDirection) {
document.dir = currentDirection; document.dir = currentDirection;
directionRef.current = currentDirection; directionRef.current = currentDirection;