Speed up app initialization and improve refresh crashing (#3717)

This commit is contained in:
Zane
2025-07-31 12:41:05 -07:00
committed by GitHub
parent 75a382bcee
commit 3f6a055790
5 changed files with 122 additions and 90 deletions
+31 -9
View File
@@ -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" />