diff --git a/src-tauri/src/utils/resolve/window_script.rs b/src-tauri/src/utils/resolve/window_script.rs
index c331dedf6..ff7062cd1 100644
--- a/src-tauri/src/utils/resolve/window_script.rs
+++ b/src-tauri/src/utils/resolve/window_script.rs
@@ -72,12 +72,10 @@ pub const WINDOW_INITIAL_SCRIPT: &str = r##"
root.style.setProperty("--bg-color", bgColor);
root.style.setProperty("--text-color", textColor);
root.style.colorScheme = isDark ? "dark" : "light";
- root.style.backgroundColor = bgColor;
root.style.color = textColor;
}
const paintBody = () => {
if (!document.body) return;
- document.body.style.backgroundColor = bgColor;
document.body.style.color = textColor;
};
if (document.readyState === "loading") {
@@ -93,81 +91,7 @@ pub const WINDOW_INITIAL_SCRIPT: &str = r##"
return isDark;
};
- const isDarkTheme = applyInitialTheme(initialTheme);
-
- const getInitialOverlayColors = () => ({
- bg: isDarkTheme ? initialColors.darkBg : initialColors.lightBg,
- text: isDarkTheme ? "#ffffff" : "#333",
- spinnerTrack: isDarkTheme ? "#3a3a3a" : "#e3e3e3",
- spinnerTop: isDarkTheme ? "#0a84ff" : "#3498db",
- });
-
- function createOrUpdateLoadingOverlay() {
- const colors = getInitialOverlayColors();
- const existed = document.getElementById('initial-loading-overlay');
-
- const applyOverlayColors = (element) => {
- element.style.setProperty("--bg-color", colors.bg);
- element.style.setProperty("--text-color", colors.text);
- element.style.setProperty("--spinner-track", colors.spinnerTrack);
- element.style.setProperty("--spinner-top", colors.spinnerTop);
- };
-
- if (existed) {
- console.log('[Tauri] 复用已有加载指示器');
- applyOverlayColors(existed);
- return;
- }
-
- console.log('[Tauri] 创建加载指示器');
- const loadingDiv = document.createElement('div');
- loadingDiv.id = 'initial-loading-overlay';
- loadingDiv.innerHTML = `
-
-
-
Loading Clash Verge...
-
-
- `;
-
- applyOverlayColors(loadingDiv);
-
- if (document.body) {
- document.body.appendChild(loadingDiv);
- } else {
- document.addEventListener('DOMContentLoaded', () => {
- if (document.body && !document.getElementById('initial-loading-overlay')) {
- document.body.appendChild(loadingDiv);
- }
- });
- }
- }
-
- createOrUpdateLoadingOverlay();
-
- if (document.readyState === 'loading') {
- document.addEventListener('DOMContentLoaded', createOrUpdateLoadingOverlay);
- } else {
- createOrUpdateLoadingOverlay();
- }
+ applyInitialTheme(initialTheme);
console.log('[Tauri] 窗口初始化脚本执行完成');
"##;
diff --git a/src/hooks/use-verge.ts b/src/hooks/use-verge.ts
index f6415ff80..7385438ad 100644
--- a/src/hooks/use-verge.ts
+++ b/src/hooks/use-verge.ts
@@ -1,14 +1,24 @@
import useSWR from "swr";
import { getVergeConfig, patchVergeConfig } from "@/services/cmds";
+import {
+ getInitialVergeConfig,
+ setInitialVergeConfig,
+} from "@/services/preloaded-verge-config";
export const useVerge = () => {
+ const initialVergeConfig = getInitialVergeConfig();
const { data: verge, mutate: mutateVerge } = useSWR(
"getVergeConfig",
async () => {
const config = await getVergeConfig();
+ setInitialVergeConfig(config);
return config;
},
+ {
+ fallbackData: initialVergeConfig ?? undefined,
+ revalidateOnMount: !initialVergeConfig,
+ },
);
const patchVerge = async (value: Partial) => {
diff --git a/src/index.html b/src/index.html
index ebd340e25..a148cfdc8 100644
--- a/src/index.html
+++ b/src/index.html
@@ -41,7 +41,6 @@
width: 100%;
height: 100%;
margin: 0;
- background: var(--bg-color);
color: var(--text-color);
}
diff --git a/src/main.tsx b/src/main.tsx
index 41a703b3c..5db9a594a 100644
--- a/src/main.tsx
+++ b/src/main.tsx
@@ -22,6 +22,7 @@ import {
initializeLanguage,
resolveLanguage,
} from "./services/i18n";
+import { setInitialVergeConfig } from "./services/preloaded-verge-config";
import {
LoadingCacheProvider,
ThemeModeProvider,
@@ -168,9 +169,11 @@ const fetchVergeConfig = async () => {
try {
const config = await getVergeConfig();
cachedVergeConfig = config;
+ setInitialVergeConfig(config);
return config;
} catch (error) {
console.warn("[main.tsx] Failed to read Verge config:", error);
+ setInitialVergeConfig(null);
return null;
}
};
diff --git a/src/services/preloaded-verge-config.ts b/src/services/preloaded-verge-config.ts
new file mode 100644
index 000000000..96e76070b
--- /dev/null
+++ b/src/services/preloaded-verge-config.ts
@@ -0,0 +1,7 @@
+let initialVergeConfig: IVergeConfig | null | undefined;
+
+export const setInitialVergeConfig = (config: IVergeConfig | null) => {
+ initialVergeConfig = config;
+};
+
+export const getInitialVergeConfig = () => initialVergeConfig;