refactor: abstract can folder toggle logic into a function

This commit is contained in:
Xu Quan 2025-06-22 15:04:50 +08:00
parent 5317a9524f
commit c41c19fe61

View file

@ -41,6 +41,7 @@ export type FolderExplorerStore = {
latestCreatedFolder: TFolder | null;
latestFolderCreatedTime: number | null;
canFolderToggle: (folder: TFolder) => boolean;
getTopLevelFolders: () => TFolder[];
getFilesCountInFolder: (
folder: TFolder,
@ -116,6 +117,12 @@ export const createFolderExplorerStore =
latestCreatedFolder: null,
latestFolderCreatedTime: null,
canFolderToggle: (folder: TFolder): boolean => {
const { hasFolderChildren } = get();
// root folder is always expanded
return !folder.isRoot() && hasFolderChildren(folder);
},
getTopLevelFolders: () => {
return plugin.app.vault
.getAllFolders()
@ -613,20 +620,20 @@ export const createFolderExplorerStore =
const {
changeExpandedFolderPaths,
expandedFolderPaths,
hasFolderChildren,
canFolderToggle,
} = get();
if (!hasFolderChildren(folder) || folder.isRoot()) return;
if (!canFolderToggle(folder)) return;
await changeExpandedFolderPaths(
uniq([...expandedFolderPaths, folder.path])
);
},
collapseFolder: async(folder: TFolder) => {
collapseFolder: async (folder: TFolder) => {
const {
changeExpandedFolderPaths,
hasFolderChildren,
expandedFolderPaths,
canFolderToggle
} = get();
if (!hasFolderChildren(folder) || folder.isRoot()) return;
if (!canFolderToggle(folder)) return;
await changeExpandedFolderPaths(
expandedFolderPaths.filter((path) => path !== folder.path)
);