diff --git a/app/page.tsx b/app/page.tsx index 01584be..09ce7a1 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,5 +1,5 @@ "use client" -import { useCallback, useEffect, useRef, useState } from "react" +import { useEffect, useRef, useState } from "react" import { DrawIoEmbed } from "react-drawio" import type { ImperativePanelHandle } from "react-resizable-panels" import ChatPanel from "@/components/chat-panel" @@ -21,8 +21,6 @@ export default function Home() { onDrawioLoad, resetDrawioReady, saveDiagramToStorage, - showSaveDialog, - setShowSaveDialog, } = useDiagram() const [isMobile, setIsMobile] = useState(false) const [isChatVisible, setIsChatVisible] = useState(true) @@ -32,24 +30,6 @@ export default function Home() { const [closeProtection, setCloseProtection] = useState(false) const chatPanelRef = useRef(null) - const isSavingRef = useRef(false) - - // Reset saving flag when dialog closes (with delay to ignore lingering save events from draw.io) - useEffect(() => { - if (!showSaveDialog && isSavingRef.current) { - const timeout = setTimeout(() => { - isSavingRef.current = false - }, 1000) - return () => clearTimeout(timeout) - } - }, [showSaveDialog]) - - // Handle save from draw.io's built-in save button - const handleDrawioSave = useCallback(() => { - if (isSavingRef.current) return - isSavingRef.current = true - setShowSaveDialog(true) - }, [setShowSaveDialog]) // Load preferences from localStorage after mount useEffect(() => { @@ -175,7 +155,6 @@ export default function Home() { ref={drawioRef} onExport={handleDiagramExport} onLoad={onDrawioLoad} - onSave={handleDrawioSave} baseUrl={drawioBaseUrl} urlParameters={{ ui: drawioUi, diff --git a/components/chat-input.tsx b/components/chat-input.tsx index 702561c..9843484 100644 --- a/components/chat-input.tsx +++ b/components/chat-input.tsx @@ -155,16 +155,12 @@ export function ChatInput({ minimalStyle = false, onMinimalStyleChange = () => {}, }: ChatInputProps) { - const { - diagramHistory, - saveDiagramToFile, - showSaveDialog, - setShowSaveDialog, - } = useDiagram() + const { diagramHistory, saveDiagramToFile } = useDiagram() const textareaRef = useRef(null) const fileInputRef = useRef(null) const [isDragging, setIsDragging] = useState(false) const [showClearDialog, setShowClearDialog] = useState(false) + const [showSaveDialog, setShowSaveDialog] = useState(false) // Allow retry when there's an error (even if status is still "streaming" or "submitted") const isDisabled = @@ -405,7 +401,7 @@ export function ChatInput({ size="sm" onClick={() => setShowSaveDialog(true)} disabled={isDisabled} - tooltipContent="Save diagram (deprecated: use Save button in upper right corner of draw.io)" + tooltipContent="Save diagram" className="h-8 w-8 p-0 text-muted-foreground hover:text-foreground" > diff --git a/contexts/diagram-context.tsx b/contexts/diagram-context.tsx index a7cd4ab..69abdc1 100644 --- a/contexts/diagram-context.tsx +++ b/contexts/diagram-context.tsx @@ -27,8 +27,6 @@ interface DiagramContextType { isDrawioReady: boolean onDrawioLoad: () => void resetDrawioReady: () => void - showSaveDialog: boolean - setShowSaveDialog: (show: boolean) => void } const DiagramContext = createContext(undefined) @@ -40,7 +38,6 @@ export function DiagramProvider({ children }: { children: React.ReactNode }) { { svg: string; xml: string }[] >([]) const [isDrawioReady, setIsDrawioReady] = useState(false) - const [showSaveDialog, setShowSaveDialog] = useState(false) const hasCalledOnLoadRef = useRef(false) const drawioRef = useRef(null) const resolverRef = useRef<((value: string) => void) | null>(null) @@ -312,8 +309,6 @@ export function DiagramProvider({ children }: { children: React.ReactNode }) { isDrawioReady, onDrawioLoad, resetDrawioReady, - showSaveDialog, - setShowSaveDialog, }} > {children}