From 993da9a8ad0cd51a5361ec9c84ed0a65fad5f94a Mon Sep 17 00:00:00 2001 From: ayangweb <75017711+ayangweb@users.noreply.github.com> Date: Mon, 18 Aug 2025 18:18:49 +0800 Subject: [PATCH] refactor: improved loss after refresh (#874) * refactor: improved loss after refresh * refactor: update * style: change code line --- src/constants/index.ts | 4 ++++ src/routes/layout.tsx | 51 +++++++++++++++++++++--------------------- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/src/constants/index.ts b/src/constants/index.ts index d473424e..2f8f3105 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -9,3 +9,7 @@ export const DEFAULT_COCO_SERVER_ID = "default_coco_server"; export const MAIN_WINDOW_LABEL = "main"; export const SETTINGS_WINDOW_LABEL = "settings"; + +export const CHECK_WINDOW_LABEL = "check"; + +export const CHAT_WINDOW_LABEL = "chat"; diff --git a/src/routes/layout.tsx b/src/routes/layout.tsx index 85993ab8..5ce3b499 100644 --- a/src/routes/layout.tsx +++ b/src/routes/layout.tsx @@ -1,14 +1,35 @@ -import { useMount } from "ahooks"; +import { useMount, useSessionStorageState } from "ahooks"; +import { useEffect } from "react"; +import { invoke } from "@tauri-apps/api/core"; + import LayoutOutlet from "./outlet"; import { useAppStore } from "@/stores/appStore"; -import { invoke } from "@tauri-apps/api/core"; import platformAdapter from "@/utils/platformAdapter"; -import { MAIN_WINDOW_LABEL, SETTINGS_WINDOW_LABEL } from "@/constants"; -import { useEffect, useState } from "react"; +import { CHAT_WINDOW_LABEL, MAIN_WINDOW_LABEL } from "@/constants"; const Layout = () => { const { language } = useAppStore(); - const [ready, setReady] = useState(false); + const [ready, setReady] = useSessionStorageState("rust_ready", { + defaultValue: false, + }); + + useMount(async () => { + const label = await platformAdapter.getCurrentWindowLabel(); + + if (label === CHAT_WINDOW_LABEL) { + setReady(true); + } + + if (ready || label !== MAIN_WINDOW_LABEL) return; + + await invoke("backend_setup", { + appLang: language, + }); + + setReady(true); + + platformAdapter.emitEvent("rust_ready"); + }); useEffect(() => { const unlisten = platformAdapter.listenEvent("rust_ready", () => { @@ -20,26 +41,6 @@ const Layout = () => { }; }, []); - useMount(async () => { - const label = await platformAdapter.getCurrentWindowLabel(); - - if (label === MAIN_WINDOW_LABEL) { - await invoke("backend_setup", { - appLang: language, - }); - - setReady(true); - - return platformAdapter.emitEvent("rust_ready", true); - } - - if (label !== SETTINGS_WINDOW_LABEL) { - setReady(true); - } - }); - - console.log("ready", ready); - return ready && ; };