-const collectionItemToTreeItem = (items: CollectionPanelItem[]) => (item: CollectionPanelItem): TreeItem<FileTreeData> => {
- return {
- active: false,
- data: {
- name: item.name,
- size: item.type === 'file' ? item.size : undefined,
- type: item.type
- },
- id: item.id,
- items: items
- .filter(i => i.parentId === item.id)
- .map(collectionItemToTreeItem(items)),
- open: item.type === 'directory' ? !item.collapsed : false,
- selected: item.selected,
- status: TreeItemStatus.LOADED
+const collectionItemToTreeItem = (tree: Tree<CollectionPanelDirectory | CollectionPanelFile>) =>
+ (id: string): TreeItem<FileTreeData> => {
+ const node: TreeNode<CollectionPanelDirectory | CollectionPanelFile> = getNode(id)(tree) || initTreeNode({
+ id: '',
+ parent: '',
+ value: {
+ ...createCollectionDirectory({ name: 'Invalid file' }),
+ selected: false,
+ collapsed: true
+ }
+ });
+ return {
+ active: false,
+ data: {
+ name: node.value.name,
+ size: node.value.type === CollectionFileType.FILE ? node.value.size : undefined,
+ type: node.value.type,
+ url: node.value.url,
+ },
+ id: node.id,
+ items: getNodeChildrenIds(node.id)(tree)
+ .map(collectionItemToTreeItem(tree)),
+ open: node.value.type === CollectionFileType.DIRECTORY ? !node.value.collapsed : false,
+ selected: node.value.selected,
+ status: TreeItemStatus.LOADED
+ };