diff --git a/src/ui/features/file-manager/components/FileViewer.tsx b/src/ui/features/file-manager/components/FileViewer.tsx index c5e61b43..fa581650 100644 --- a/src/ui/features/file-manager/components/FileViewer.tsx +++ b/src/ui/features/file-manager/components/FileViewer.tsx @@ -88,6 +88,7 @@ interface FileViewerProps { content?: string; savedContent?: string; isLoading?: boolean; + isSaving?: boolean; isEditable?: boolean; resetKey?: number; onContentChange?: (content: string) => void; @@ -271,6 +272,7 @@ export function FileViewer({ content = "", savedContent = "", isLoading = false, + isSaving = false, isEditable = false, resetKey, onContentChange, @@ -353,6 +355,7 @@ export function FileViewer({ }; const handleSave = () => { + if (isSaving) return; onSave?.(editedContent); }; @@ -490,6 +493,7 @@ export function FileViewer({ variant="outline" size="sm" onClick={handleRevert} + disabled={isSaving} className="flex items-center gap-2" > @@ -499,6 +503,7 @@ export function FileViewer({ variant="default" size="sm" onClick={handleSave} + disabled={isSaving} className="flex items-center gap-2" > diff --git a/src/ui/features/file-manager/components/FileWindow.tsx b/src/ui/features/file-manager/components/FileWindow.tsx index 20ee2b9e..effb16a6 100644 --- a/src/ui/features/file-manager/components/FileWindow.tsx +++ b/src/ui/features/file-manager/components/FileWindow.tsx @@ -81,6 +81,7 @@ export function FileWindow({ const [content, setContent] = useState(""); const [isLoading, setIsLoading] = useState(false); + const [isSaving, setIsSaving] = useState(false); const [isEditable, setIsEditable] = useState(false); const [pendingContent, setPendingContent] = useState(""); const [resetKey, setResetKey] = useState(0); @@ -309,7 +310,7 @@ export function FileWindow({ const handleSave = async (newContent: string) => { try { - setIsLoading(true); + setIsSaving(true); await ensureSSHConnection(); @@ -340,7 +341,7 @@ export function FileWindow({ ); } } finally { - setIsLoading(false); + setIsSaving(false); } }; @@ -553,6 +554,7 @@ export function FileWindow({ content={pendingContent || content} savedContent={content} isLoading={isLoading} + isSaving={isSaving} resetKey={resetKey} onRevert={handleRevert} isEditable={isEditable}