From fa1f852822528b7c2b2b82c1817d22921e062d28 Mon Sep 17 00:00:00 2001 From: Misode Date: Thu, 21 Nov 2024 02:05:51 +0100 Subject: [PATCH] Fix project panel flicker and filter out directories --- src/app/components/generator/ProjectPanel.tsx | 10 +++++++--- src/app/services/Spyglass.ts | 4 +++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/app/components/generator/ProjectPanel.tsx b/src/app/components/generator/ProjectPanel.tsx index d61d17dd..3693d636 100644 --- a/src/app/components/generator/ProjectPanel.tsx +++ b/src/app/components/generator/ProjectPanel.tsx @@ -27,13 +27,17 @@ export function ProjectPanel() { const [entries, setEntries] = useState() useEffect(() => { setEntries(undefined) + client.fs.readdir(projectRoot).then(entries => { + setEntries(entries.flatMap(e => { + return e.isFile() && e.name.startsWith(projectRoot) ? [e.name.slice(projectRoot.length)] : [] + })) + }) + }, [projectRoot]) + useEffect(() => { if (!service) { return } service.watchTree(projectRoot, setEntries) - client.fs.readdir(projectRoot).then(entries => { - setEntries(entries.flatMap(e => e.isFile() && e.name.startsWith(projectRoot) ? [e.name.slice(projectRoot.length)] : [])) - }) return () => service.unwatchTree(projectRoot, setEntries) }, [service, projectRoot]) diff --git a/src/app/services/Spyglass.ts b/src/app/services/Spyglass.ts index 1345c621..bb8af60b 100644 --- a/src/app/services/Spyglass.ts +++ b/src/app/services/Spyglass.ts @@ -97,7 +97,9 @@ export class SpyglassService { await new Promise((res) => setTimeout(res, 5)) await Promise.all(this.treeWatchers.map(async ({ prefix, handler }) => { const entries = await client.fs.readdir(prefix) - handler(entries.flatMap(e => e.name.startsWith(prefix) ? [e.name.slice(prefix.length)] : [])) + handler(entries.flatMap(e => { + return e.isFile() && e.name.startsWith(prefix) ? [e.name.slice(prefix.length)] : [] + })) })) }) }