feat: Introduce FoldersManager and useFolderData to manage and display folder contents, including documents and subfolders.
This commit is contained in:
@@ -9,37 +9,23 @@ import {
|
||||
createDocumentEntryKey,
|
||||
createFolderEntryKey,
|
||||
} from '../../../app/entryKey';
|
||||
import type { FolderId, FolderNodeId, Identifier } from '../../../types/identifiers';
|
||||
import type { Document } from '../../../types/documents';
|
||||
import type { FolderNodeId, Identifier, FolderId } from '../../../types/identifiers';
|
||||
import type { Document, Folder, FolderContents } from '../../../types/documents';
|
||||
|
||||
interface FolderSummary {
|
||||
id?: FolderNodeId;
|
||||
name?: string;
|
||||
parent_id?: FolderNodeId | null;
|
||||
parentId?: FolderNodeId | null;
|
||||
children?: FolderNodeId[];
|
||||
subfolders?: FolderSummary[];
|
||||
has_children?: boolean;
|
||||
hasChildren?: boolean;
|
||||
[key: string]: unknown;
|
||||
}
|
||||
|
||||
interface FolderContentsEntry {
|
||||
folder?: FolderSummary | null;
|
||||
documents?: Document[];
|
||||
subfolders?: FolderSummary[];
|
||||
interface FolderContentsEntry extends FolderContents {
|
||||
__includesDocuments?: boolean;
|
||||
__sortField?: string | null;
|
||||
__sortDirection?: string | null;
|
||||
[key: string]: unknown;
|
||||
}
|
||||
|
||||
interface FolderTreeNode extends FolderSummary {
|
||||
interface FolderTreeNode extends Folder {
|
||||
id: FolderNodeId;
|
||||
children: FolderNodeId[];
|
||||
expanded?: boolean;
|
||||
loaded?: boolean;
|
||||
hasChildren?: boolean;
|
||||
parentId?: FolderNodeId;
|
||||
}
|
||||
|
||||
interface SelectionHelpers {
|
||||
@@ -129,8 +115,8 @@ const useFolderTree = ({
|
||||
}, []);
|
||||
|
||||
const [selectedFolder, setSelectedFolder] = useState<FolderNodeId>(initialSelectedFolder || 'root');
|
||||
const [currentFolder, setCurrentFolder] = useState<FolderSummary | null>(null);
|
||||
const [currentSubfolders, setCurrentSubfolders] = useState<FolderSummary[]>([]);
|
||||
const [currentFolder, setCurrentFolder] = useState<Folder | null>(null);
|
||||
const [currentSubfolders, setCurrentSubfolders] = useState<Folder[]>([]);
|
||||
|
||||
const {
|
||||
focusedDocumentId,
|
||||
|
||||
Reference in New Issue
Block a user