refactor: Decompose document and folder views into modular components and hooks, replacing monolithic list/grid implementations.

This commit is contained in:
2025-11-26 01:50:53 +01:00
parent 342714528a
commit 0a4a3ae35c
20 changed files with 1074 additions and 917 deletions
@@ -39,7 +39,7 @@ const useDocumentDragHandlers = ({
documentLookup,
setDraggedDocumentIds,
setDraggedFolderId,
documentsViewMode,
documentsViewMode: _documentsViewMode,
}: UseDocumentDragHandlersOptions) => {
const dragPreviewRef = useRef<HTMLDivElement | null>(null);
const normalizedFolderIds = useMemo(
@@ -100,8 +100,7 @@ const useDocumentDragHandlers = ({
if (item.type === 'document') {
const doc = item.payload;
const rowEl = doc?.id
? (document.getElementById(`document-row-${doc.id}`)
|| document.getElementById(`document-card-${doc.id}`))
? document.getElementById(`document-${doc.id}`)
: null;
const wrapperEl = rowEl instanceof HTMLElement
? rowEl.querySelector<HTMLElement>('.document-thumbnail-wrapper')
@@ -144,8 +143,7 @@ const useDocumentDragHandlers = ({
const payload = item.payload;
const folderId = payload as FolderIdentifier;
const rowEl = folderId
? (document.getElementById(`folder-row-${folderId}`)
|| document.getElementById(`folder-card-${folderId}`))
? document.getElementById(`folder-${folderId}`)
: null;
const iconEl = rowEl instanceof HTMLElement
? rowEl.querySelector('.thumb-icon, .folder-card__icon')
@@ -211,16 +209,13 @@ const useDocumentDragHandlers = ({
return;
}
const isGridView = documentsViewMode === 'grid';
const isAlreadySelected = selectedDocumentIds.includes(documentId);
const selection: Identifier[] = isAlreadySelected
? [...selectedDocumentIds]
: isGridView
? [...selectedDocumentIds, documentId]
: [documentId];
: [documentId];
const folderSelection: FolderIdentifier[] = [];
if (!isAlreadySelected && !isGridView) {
if (!isAlreadySelected) {
applySelection([documentKey], {
anchor: documentKey,
interactedKeys: [documentKey],
@@ -271,7 +266,6 @@ const useDocumentDragHandlers = ({
createDragPreview,
setDraggedFolderId,
setDraggedDocumentIds,
documentsViewMode,
],
);