From 957f7c113e9b31fb09f6653b60fa357377c23813 Mon Sep 17 00:00:00 2001 From: Christopher Ng Date: Tue, 13 Aug 2024 11:25:47 -0700 Subject: [PATCH] fix(files): Respect "Show hidden files" setting in tree Signed-off-by: Christopher Ng --- apps/files/src/views/folderTree.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/apps/files/src/views/folderTree.ts b/apps/files/src/views/folderTree.ts index 4224012cd5b..d74f982afc9 100644 --- a/apps/files/src/views/folderTree.ts +++ b/apps/files/src/views/folderTree.ts @@ -28,6 +28,8 @@ import { const isFolderTreeEnabled = loadState('files', 'config', { folder_tree: true }).folder_tree +let showHiddenFiles = loadState('files', 'config', { show_hidden: false }).show_hidden + const Navigation = getNavigation() const queue = new PQueue({ concurrency: 5, intervalCap: 5, interval: 200 }) @@ -63,6 +65,13 @@ const getLoadChildViews = (node: TreeNode | Folder) => { } const registerTreeNodeView = (node: TreeNode) => { + const registeredView = Navigation.views.find(view => view.id === encodeSource(node.source)) + if (registeredView) { + Navigation.remove(registeredView.id) + } + if (!showHiddenFiles && node.basename.startsWith('.')) { + return + } Navigation.register(new View({ id: encodeSource(node.source), parent: getSourceParent(node.source), @@ -84,6 +93,9 @@ const registerTreeNodeView = (node: TreeNode) => { } const registerFolderView = (folder: Folder) => { + if (!showHiddenFiles && folder.basename.startsWith('.')) { + return + } Navigation.register(new View({ id: getFolderTreeViewId(folder), parent: getFolderTreeParentId(folder), @@ -153,6 +165,15 @@ const onMoveNode = ({ node, oldSource }) => { } } +const onUserConfigUpdated = async ({ key, value }) => { + if (key === 'show_hidden') { + showHiddenFiles = value + await registerTreeNodes() + // @ts-expect-error No payload + emit('files:folder-tree:initialized') + } +} + const registerFolderTreeRoot = () => { Navigation.register(new View({ id: folderTreeId, @@ -172,6 +193,7 @@ const registerFolderTreeChildren = async () => { subscribe('files:node:created', onCreateNode) subscribe('files:node:deleted', onDeleteNode) subscribe('files:node:moved', onMoveNode) + subscribe('files:config:updated', onUserConfigUpdated) // @ts-expect-error No payload emit('files:folder-tree:initialized') }