feat: nested folders (#266)

This commit is contained in:
Eliezer Castro
2025-08-06 10:26:38 -03:00
committed by GitHub
parent d4c5f59755
commit 424b1bdbc7
10 changed files with 457 additions and 79 deletions

View File

@@ -0,0 +1,36 @@
import { FolderType, TreeNodeData } from '@/types/folder';
export function buildFolderTree(folders: FolderType[]): TreeNodeData[] {
const folderMap = new Map<number, TreeNodeData>();
folders.forEach((folder) => {
folderMap.set(folder.id, {
id: folder.id.toString(),
name: folder.name,
detail: folder.detail,
parentFolderId: folder.parentFolderId,
projectId: folder.projectId,
folderData: folder,
children: [],
});
});
const tree: TreeNodeData[] = [];
folders.forEach((folder) => {
const currentNode = folderMap.get(folder.id);
if (!currentNode) return;
if (folder.parentFolderId === null) {
tree.push(currentNode);
} else {
const parent = folderMap.get(folder.parentFolderId);
if (parent && parent.children) {
parent.children.push(currentNode);
}
}
});
return tree;
}