Speed up app initialization and improve refresh crashing (#3717)
This commit is contained in:
+31
-9
@@ -8,20 +8,42 @@
|
||||
// Initialize theme before any content loads
|
||||
(function() {
|
||||
function initializeTheme() {
|
||||
const useSystemTheme = localStorage.getItem('use_system_theme') === 'true';
|
||||
const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
const savedTheme = localStorage.getItem('theme');
|
||||
const isDark = useSystemTheme ? systemPrefersDark : (savedTheme ? savedTheme === 'dark' : systemPrefersDark);
|
||||
|
||||
if (isDark) {
|
||||
document.documentElement.classList.add('dark');
|
||||
} else {
|
||||
document.documentElement.classList.remove('dark');
|
||||
try {
|
||||
if (window.localStorage) {
|
||||
const useSystemTheme = localStorage.getItem('use_system_theme') === 'true';
|
||||
const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
const savedTheme = localStorage.getItem('theme');
|
||||
const isDark = useSystemTheme ? systemPrefersDark : (savedTheme ? savedTheme === 'dark' : systemPrefersDark);
|
||||
|
||||
if (isDark) {
|
||||
document.documentElement.classList.add('dark');
|
||||
} else {
|
||||
document.documentElement.classList.remove('dark');
|
||||
}
|
||||
} else {
|
||||
const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
if (systemPrefersDark) {
|
||||
document.documentElement.classList.add('dark');
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.warn('Failed to initialize theme from localStorage, using system preference:', error);
|
||||
const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
if (systemPrefersDark) {
|
||||
document.documentElement.classList.add('dark');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Run immediately
|
||||
initializeTheme();
|
||||
|
||||
// Retry after DOM is ready if initial attempt failed
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
setTimeout(initializeTheme, 50);
|
||||
});
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
<link href="./src/styles/main.css" rel="stylesheet" />
|
||||
|
||||
Reference in New Issue
Block a user