fix(ui): use reactive entity adapter hooks, fix one-behind issue

This commit is contained in:
psychedelicious
2024-09-09 23:36:11 +10:00
parent d6c553ca5e
commit ebb92bee26
3 changed files with 2 additions and 34 deletions

View File

@@ -1,32 +0,0 @@
import { useCanvasManager } from 'features/controlLayers/contexts/CanvasManagerProviderGate';
import type { CanvasEntityAdapter } from 'features/controlLayers/konva/CanvasEntity/types';
import type { CanvasEntityIdentifier } from 'features/controlLayers/store/types';
import { useMemo } from 'react';
import { assert } from 'tsafe';
/** @knipignore */
export const useEntityAdapter = (entityIdentifier: CanvasEntityIdentifier): CanvasEntityAdapter => {
const canvasManager = useCanvasManager();
const adapter = useMemo(() => {
const adapter = canvasManager.getAdapter(entityIdentifier);
assert(adapter, 'Entity adapter not found');
return adapter;
}, [canvasManager, entityIdentifier]);
return adapter;
};
export const useEntityAdapterSafe = (entityIdentifier: CanvasEntityIdentifier | null): CanvasEntityAdapter | null => {
const canvasManager = useCanvasManager();
const adapter = useMemo(() => {
if (!entityIdentifier) {
return null;
}
const adapter = canvasManager.getAdapter(entityIdentifier);
return adapter ?? null;
}, [canvasManager, entityIdentifier]);
return adapter;
};

View File

@@ -2,8 +2,8 @@ import { useStore } from '@nanostores/react';
import { useAppSelector } from 'app/store/storeHooks';
import { SyncableMap } from 'common/util/SyncableMap/SyncableMap';
import { useCanvasManager } from 'features/controlLayers/contexts/CanvasManagerProviderGate';
import { useEntityAdapterSafe } from 'features/controlLayers/contexts/EntityAdapterContext';
import { useCanvasIsBusy } from 'features/controlLayers/hooks/useCanvasIsBusy';
import { useEntityAdapterSafe } from 'features/controlLayers/hooks/useEntityAdapter';
import type { AnyObjectRenderer } from 'features/controlLayers/konva/CanvasObject/types';
import { getEmptyRect } from 'features/controlLayers/konva/util';
import { selectIsStaging } from 'features/controlLayers/store/canvasStagingAreaSlice';

View File

@@ -2,8 +2,8 @@ import { useStore } from '@nanostores/react';
import { useAppSelector } from 'app/store/storeHooks';
import { SyncableMap } from 'common/util/SyncableMap/SyncableMap';
import { useCanvasManager } from 'features/controlLayers/contexts/CanvasManagerProviderGate';
import { useEntityAdapterSafe } from 'features/controlLayers/contexts/EntityAdapterContext';
import { useCanvasIsBusy } from 'features/controlLayers/hooks/useCanvasIsBusy';
import { useEntityAdapterSafe } from 'features/controlLayers/hooks/useEntityAdapter';
import type { AnyObjectRenderer } from 'features/controlLayers/konva/CanvasObject/types';
import { getEmptyRect } from 'features/controlLayers/konva/util';
import { selectIsStaging } from 'features/controlLayers/store/canvasStagingAreaSlice';