refactor: streamline app initialization and enhance WebSocket cleanup logic

This commit is contained in:
xmk23333
2025-10-20 13:15:51 +08:00
parent a0ef64cda8
commit b77cc012e1
16 changed files with 582 additions and 554 deletions

View File

@@ -47,41 +47,30 @@ document.addEventListener("keydown", (event) => {
}
});
const initializeApp = async () => {
try {
await initializeLanguage("zh");
const initializeApp = () => {
const contexts = [
<ThemeModeProvider key="theme" />,
<LoadingCacheProvider key="loading" />,
<UpdateStateProvider key="update" />,
];
const contexts = [
<ThemeModeProvider key="theme" />,
<LoadingCacheProvider key="loading" />,
<UpdateStateProvider key="update" />,
];
const root = createRoot(container);
root.render(
<React.StrictMode>
<ComposeContextProvider contexts={contexts}>
<BaseErrorBoundary>
<WindowProvider>
<AppDataProvider>
<RouterProvider router={router} />
</AppDataProvider>
</WindowProvider>
</BaseErrorBoundary>
</ComposeContextProvider>
</React.StrictMode>,
);
} catch (error) {
console.error("[main.tsx] 应用初始化失败:", error);
const root = createRoot(container);
root.render(
<div style={{ padding: "20px", color: "red" }}>
: {error instanceof Error ? error.message : String(error)}
</div>,
);
}
const root = createRoot(container);
root.render(
<React.StrictMode>
<ComposeContextProvider contexts={contexts}>
<BaseErrorBoundary>
<WindowProvider>
<AppDataProvider>
<RouterProvider router={router} />
</AppDataProvider>
</WindowProvider>
</BaseErrorBoundary>
</ComposeContextProvider>
</React.StrictMode>,
);
};
initializeLanguage("zh").catch(console.error);
initializeApp();
// 错误处理
@@ -94,7 +83,7 @@ window.addEventListener("unhandledrejection", (event) => {
});
// 页面关闭/刷新事件
window.addEventListener("beforeunload", async () => {
// 强制清理所有 WebSocket 实例, 防止内存泄漏
await MihomoWebSocket.cleanupAll();
window.addEventListener("beforeunload", () => {
// 同步清理所有 WebSocket 实例, 防止内存泄漏
MihomoWebSocket.cleanupAll();
});