diff --git a/app/[lang]/page.tsx b/app/[lang]/page.tsx index 2a6049f1..76ac389a 100644 --- a/app/[lang]/page.tsx +++ b/app/[lang]/page.tsx @@ -17,8 +17,13 @@ const drawioBaseUrl = process.env.NEXT_PUBLIC_DRAWIO_BASE_URL || "https://embed.diagrams.net" export default function Home() { - const { drawioRef, handleDiagramExport, onDrawioLoad, resetDrawioReady } = - useDiagram() + const { + drawioRef, + handleDiagramExport, + onDrawioLoad, + resetDrawioReady, + setShowSaveDialog, + } = useDiagram() const router = useRouter() const pathname = usePathname() // Extract current language from pathname (e.g., "/zh/about" → "zh") @@ -34,6 +39,24 @@ export default function Home() { const chatPanelRef = useRef(null) const isMobileRef = useRef(false) + useEffect(() => { + //fix:save event is triggered frequently + const messageHandler = (drawioEvent: MessageEvent) => { + const { data } = drawioEvent + try { + const drawioInfo = + typeof data === "string" ? JSON.parse(data) : data + if (drawioInfo?.event === "save") { + setShowSaveDialog(true) + } + } catch (_err) {} + } + window.addEventListener("message", messageHandler) + return () => { + window.removeEventListener("message", messageHandler) + } + }, []) + // Load preferences from localStorage after mount useEffect(() => { // Restore saved locale and redirect if needed @@ -193,7 +216,6 @@ export default function Home() { spin: false, libraries: false, saveAndExit: false, - noSaveBtn: true, noExitBtn: true, dark: darkMode, lang: currentLang,