mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-07-16 05:13:36 +00:00
fix: preserve file editor position on save (#1057)
This commit is contained in:
@@ -88,6 +88,7 @@ interface FileViewerProps {
|
|||||||
content?: string;
|
content?: string;
|
||||||
savedContent?: string;
|
savedContent?: string;
|
||||||
isLoading?: boolean;
|
isLoading?: boolean;
|
||||||
|
isSaving?: boolean;
|
||||||
isEditable?: boolean;
|
isEditable?: boolean;
|
||||||
resetKey?: number;
|
resetKey?: number;
|
||||||
onContentChange?: (content: string) => void;
|
onContentChange?: (content: string) => void;
|
||||||
@@ -271,6 +272,7 @@ export function FileViewer({
|
|||||||
content = "",
|
content = "",
|
||||||
savedContent = "",
|
savedContent = "",
|
||||||
isLoading = false,
|
isLoading = false,
|
||||||
|
isSaving = false,
|
||||||
isEditable = false,
|
isEditable = false,
|
||||||
resetKey,
|
resetKey,
|
||||||
onContentChange,
|
onContentChange,
|
||||||
@@ -353,6 +355,7 @@ export function FileViewer({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleSave = () => {
|
const handleSave = () => {
|
||||||
|
if (isSaving) return;
|
||||||
onSave?.(editedContent);
|
onSave?.(editedContent);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -490,6 +493,7 @@ export function FileViewer({
|
|||||||
variant="outline"
|
variant="outline"
|
||||||
size="sm"
|
size="sm"
|
||||||
onClick={handleRevert}
|
onClick={handleRevert}
|
||||||
|
disabled={isSaving}
|
||||||
className="flex items-center gap-2"
|
className="flex items-center gap-2"
|
||||||
>
|
>
|
||||||
<RotateCcw className="w-4 h-4" />
|
<RotateCcw className="w-4 h-4" />
|
||||||
@@ -499,6 +503,7 @@ export function FileViewer({
|
|||||||
variant="default"
|
variant="default"
|
||||||
size="sm"
|
size="sm"
|
||||||
onClick={handleSave}
|
onClick={handleSave}
|
||||||
|
disabled={isSaving}
|
||||||
className="flex items-center gap-2"
|
className="flex items-center gap-2"
|
||||||
>
|
>
|
||||||
<Save className="w-4 h-4" />
|
<Save className="w-4 h-4" />
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ export function FileWindow({
|
|||||||
|
|
||||||
const [content, setContent] = useState<string>("");
|
const [content, setContent] = useState<string>("");
|
||||||
const [isLoading, setIsLoading] = useState(false);
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
|
const [isSaving, setIsSaving] = useState(false);
|
||||||
const [isEditable, setIsEditable] = useState(false);
|
const [isEditable, setIsEditable] = useState(false);
|
||||||
const [pendingContent, setPendingContent] = useState<string>("");
|
const [pendingContent, setPendingContent] = useState<string>("");
|
||||||
const [resetKey, setResetKey] = useState(0);
|
const [resetKey, setResetKey] = useState(0);
|
||||||
@@ -309,7 +310,7 @@ export function FileWindow({
|
|||||||
|
|
||||||
const handleSave = async (newContent: string) => {
|
const handleSave = async (newContent: string) => {
|
||||||
try {
|
try {
|
||||||
setIsLoading(true);
|
setIsSaving(true);
|
||||||
|
|
||||||
await ensureSSHConnection();
|
await ensureSSHConnection();
|
||||||
|
|
||||||
@@ -340,7 +341,7 @@ export function FileWindow({
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
setIsLoading(false);
|
setIsSaving(false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -553,6 +554,7 @@ export function FileWindow({
|
|||||||
content={pendingContent || content}
|
content={pendingContent || content}
|
||||||
savedContent={content}
|
savedContent={content}
|
||||||
isLoading={isLoading}
|
isLoading={isLoading}
|
||||||
|
isSaving={isSaving}
|
||||||
resetKey={resetKey}
|
resetKey={resetKey}
|
||||||
onRevert={handleRevert}
|
onRevert={handleRevert}
|
||||||
isEditable={isEditable}
|
isEditable={isEditable}
|
||||||
|
|||||||
Reference in New Issue
Block a user