From 3e7ae05cfe0658d4cc5e41664c60c151e1b27c0c Mon Sep 17 00:00:00 2001 From: ssdfasd <2156608475@qq.com> Date: Wed, 18 Mar 2026 20:17:59 +0800 Subject: [PATCH] fix: strip api/ prefix from externalDocs, remove harmful filtering, fix nested folder click --- src/components/ApiDocViewer.tsx | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/components/ApiDocViewer.tsx b/src/components/ApiDocViewer.tsx index 073df2d..73b7940 100644 --- a/src/components/ApiDocViewer.tsx +++ b/src/components/ApiDocViewer.tsx @@ -65,22 +65,13 @@ export const ApiDocViewer = ({ onDocsPathChange, showAddModal, onCloseAddModal } for (const file of files) { const content = await window.electronAPI.readDocFile(file.path) if (content) { - docs.push({ name: file.name, path: file.path, relativePath: file.relativePath, content }) + docs.push({ name: file.name, path: file.path, relativePath: file.relativePath.replace(/^api\//, ''), content }) } } setExternalDocs(docs) - // 过滤掉与父文件夹同名的 md 文件,只用于目录树显示 - const filteredDocs = docs.filter(doc => { - const parts = doc.relativePath.split('/') - if (parts.length < 2) return true - const filename = parts[parts.length - 1].replace(/\.md$/, '') - const parentFolder = parts[parts.length - 2] - return filename !== parentFolder - }) - - const fileList = filteredDocs.map(d => d.relativePath.replace(/^api\//, '')) + const fileList = docs.map(d => d.relativePath) const tree = buildFileTree(fileList, '/') setFileTree(tree) @@ -106,12 +97,14 @@ export const ApiDocViewer = ({ onDocsPathChange, showAddModal, onCloseAddModal } }, [externalDocs]) const handleFolderClick = useCallback((folderPath: string) => { + const parts = folderPath.split('/') + const basename = parts[parts.length - 1] const sameNameDoc = externalDocs.find(d => - d.relativePath.endsWith(`/${folderPath}.md`) + d.relativePath.endsWith(`/${basename}.md`) ) if (sameNameDoc) { - setSelectedPath(sameNameDoc.relativePath.replace(/^api\//, '')) + setSelectedPath(sameNameDoc.relativePath) setCurrentContent(sameNameDoc.content) } }, [externalDocs]) @@ -133,7 +126,7 @@ export const ApiDocViewer = ({ onDocsPathChange, showAddModal, onCloseAddModal } return docPath === ref || docPath.endsWith('/' + ref.split('/').pop()) }) if (match) { - setSelectedPath(match.relativePath.replace(/^api\//, '')) + setSelectedPath(match.relativePath) setCurrentContent(match.content) } }, [externalDocs])