refactor: make draggedDocIds a required property in PointerDownOptions and simplify handlePointerDown logic accordingly

This commit is contained in:
2025-11-25 21:04:54 +01:00
parent e0fce40bc3
commit 5accfb4339
2 changed files with 8 additions and 16 deletions
+2 -2
View File
@@ -10,7 +10,7 @@ import React, {
import { resolveDocumentAssetUrl } from '../asset_manager'; import { resolveDocumentAssetUrl } from '../asset_manager';
import type { GetAsset } from '../asset_manager'; import type { GetAsset } from '../asset_manager';
import { formatTransform } from '../utils/math'; import { formatTransform } from '../utils/math';
import useDocumentDrag from './useDocumentDrag'; import useDocumentDrag, { PointerDownOptions } from './useDocumentDrag';
import PreviewZoomOverlay from '../detail/PreviewZoomOverlay'; import PreviewZoomOverlay from '../detail/PreviewZoomOverlay';
import { import {
WorkspaceEngine, WorkspaceEngine,
@@ -894,7 +894,7 @@ function DesktopWorkspaceView({
onDocumentActivate: handleDeskDocumentActivate, onDocumentActivate: handleDeskDocumentActivate,
markLayoutDirty, markLayoutDirty,
}) as { }) as {
handlePointerDown: React.PointerEventHandler<HTMLElement>; handlePointerDown: (event: React.PointerEvent<HTMLElement>, docId: Identifier | null, options: PointerDownOptions) => void;
handlePointerMove: React.PointerEventHandler<HTMLElement>; handlePointerMove: React.PointerEventHandler<HTMLElement>;
handlePointerUp: React.PointerEventHandler<HTMLElement>; handlePointerUp: React.PointerEventHandler<HTMLElement>;
handlePointerCancel: React.PointerEventHandler<HTMLElement>; handlePointerCancel: React.PointerEventHandler<HTMLElement>;
+6 -14
View File
@@ -82,8 +82,8 @@ interface DragSettings {
debugDrag?: boolean; debugDrag?: boolean;
} }
interface PointerDownOptions { export interface PointerDownOptions {
draggedDocIds?: string[]; draggedDocIds: string[];
stackSelectionApplied?: boolean; stackSelectionApplied?: boolean;
modifierActive?: boolean; modifierActive?: boolean;
} }
@@ -310,7 +310,7 @@ const useDocumentDrag = (options: UseDocumentDragOptions) => {
); );
const handlePointerDown = useCallback( const handlePointerDown = useCallback(
(event: PointerEventLike, docIdInput?: Identifier | null, options: PointerDownOptions = {}) => { (event: PointerEventLike, docIdInput: Identifier | null, options: PointerDownOptions) => {
const targetElement = getEventTargetElement(event); const targetElement = getEventTargetElement(event);
if (targetElement?.closest && targetElement.closest('[data-desk-tag-chip="true"]')) { if (targetElement?.closest && targetElement.closest('[data-desk-tag-chip="true"]')) {
return; return;
@@ -330,22 +330,14 @@ const useDocumentDrag = (options: UseDocumentDragOptions) => {
return; return;
} }
const massGrams = computeDocumentMassGrams(doc); const massGrams = computeDocumentMassGrams(doc);
const draggedDocIds = options?.draggedDocIds; const draggedDocIds = options.draggedDocIds;
let selectionIds: string[] = []; let selectionIds: string[] = draggedDocIds;
if (Array.isArray(draggedDocIds) && draggedDocIds.length > 0) {
// Use explicitly provided IDs for the drag operation
selectionIds = draggedDocIds;
} else {
// Fallback (should ideally not happen if useDeskPointer is correct)
selectionIds = [docKey];
}
selectionIds = selectionIds.filter((id, index, array) => array.indexOf(id) === index && documentLookup.has(id)); selectionIds = selectionIds.filter((id, index, array) => array.indexOf(id) === index && documentLookup.has(id));
if (!selectionIds.length) { if (!selectionIds.length) {
selectionIds = [docKey]; return;
} }
const isGroupDrag = selectionIds.length > 1; const isGroupDrag = selectionIds.length > 1;