FIX: Resolve symlink double-click behavior in file manager
Root cause: Duplicate handleFileOpen function definitions caused symlinks to be treated as regular files instead of navigating to their targets. Problem: - Line 575: Correct implementation with symlink handling - Line 1401: Incorrect duplicate that overrode the correct function - Double-clicking symlinks opened them as files instead of following links Solution: - Removed duplicate handleFileOpen function (lines 1401-1436) - Preserved correct implementation with symlink navigation logic - Added recordRecentFile call for consistency Now symlinks properly: - Navigate to target directories when they point to folders - Open target files when they point to files - Use identifySSHSymlink backend API for resolution 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -585,6 +585,9 @@ function FileManagerContent({ initialHost, onClose }: FileManagerModernProps) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Record to recent access for regular files
|
||||||
|
await recordRecentFile(file);
|
||||||
|
|
||||||
// Calculate window position (slightly offset)
|
// Calculate window position (slightly offset)
|
||||||
const windowCount = Date.now() % 10; // Simple offset calculation
|
const windowCount = Date.now() % 10; // Simple offset calculation
|
||||||
const offsetX = 120 + windowCount * 30;
|
const offsetX = 120 + windowCount * 30;
|
||||||
@@ -1397,43 +1400,6 @@ function FileManagerContent({ initialHost, onClose }: FileManagerModernProps) {
|
|||||||
await handleFileOpen(file);
|
await handleFileOpen(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle file opening
|
|
||||||
async function handleFileOpen(file: FileItem) {
|
|
||||||
if (file.type === "directory") {
|
|
||||||
// If it's a directory, switch to that directory
|
|
||||||
setCurrentPath(file.path);
|
|
||||||
} else {
|
|
||||||
// If it's a file, record to recent access and open file window
|
|
||||||
await recordRecentFile(file);
|
|
||||||
|
|
||||||
// Create file window
|
|
||||||
const windowCount = Date.now() % 10;
|
|
||||||
const offsetX = 100 + windowCount * 30;
|
|
||||||
const offsetY = 100 + windowCount * 30;
|
|
||||||
|
|
||||||
const createFileWindow = (windowId: string) => (
|
|
||||||
<FileWindow
|
|
||||||
windowId={windowId}
|
|
||||||
file={file}
|
|
||||||
sshHost={currentHost!}
|
|
||||||
sshSessionId={sshSessionId!}
|
|
||||||
initialX={offsetX}
|
|
||||||
initialY={offsetY}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
|
|
||||||
openWindow({
|
|
||||||
title: file.name,
|
|
||||||
x: offsetX,
|
|
||||||
y: offsetY,
|
|
||||||
width: 800,
|
|
||||||
height: 600,
|
|
||||||
isMaximized: false,
|
|
||||||
isMinimized: false,
|
|
||||||
component: createFileWindow,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load pinned files list (when host or connection changes)
|
// Load pinned files list (when host or connection changes)
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user