refactor(ui): simplify useIsEntityTypeEnabled

This commit is contained in:
psychedelicious
2025-03-18 14:17:30 +10:00
parent df32974378
commit 2b2f64b232
5 changed files with 29 additions and 52 deletions

View File

@@ -21,7 +21,9 @@ export const CanvasAddEntityButtons = memo(() => {
const addControlLayer = useAddControlLayer();
const addGlobalReferenceImage = useAddGlobalReferenceImage();
const addRegionalReferenceImage = useAddRegionalReferenceImage();
const { isReferenceImageEnabled, isRegionalGuidanceEnabled, isControlLayerEnabled } = useIsEntityTypeEnabled();
const isReferenceImageEnabled = useIsEntityTypeEnabled('reference_image');
const isRegionalGuidanceEnabled = useIsEntityTypeEnabled('regional_guidance');
const isControlLayerEnabled = useIsEntityTypeEnabled('control_layer');
return (
<Flex w="full" h="full" justifyContent="center" gap={4}>

View File

@@ -22,7 +22,9 @@ export const EntityListGlobalActionBarAddLayerMenu = memo(() => {
const addRegionalReferenceImage = useAddRegionalReferenceImage();
const addRasterLayer = useAddRasterLayer();
const addControlLayer = useAddControlLayer();
const { isReferenceImageEnabled, isRegionalGuidanceEnabled, isControlLayerEnabled } = useIsEntityTypeEnabled();
const isReferenceImageEnabled = useIsEntityTypeEnabled('reference_image');
const isRegionalGuidanceEnabled = useIsEntityTypeEnabled('regional_guidance');
const isControlLayerEnabled = useIsEntityTypeEnabled('control_layer');
return (
<Menu>

View File

@@ -1,57 +1,28 @@
import { useAppSelector } from 'app/store/storeHooks';
import { selectIsCogView4, selectIsSD3 } from 'features/controlLayers/store/paramsSlice';
import type { CanvasEntityType } from 'features/controlLayers/store/types';
import { useCallback, useMemo } from 'react';
import { useCallback } from 'react';
export const useIsEntityTypeEnabled = () => {
export const useIsEntityTypeEnabled = (entityType: CanvasEntityType) => {
const isSD3 = useAppSelector(selectIsSD3);
const isCogView4 = useAppSelector(selectIsCogView4);
const isEntityTypeEnabled = useCallback(
(layerType: CanvasEntityType) => {
switch (layerType) {
case 'reference_image':
return !isSD3 && !isCogView4;
case 'regional_guidance':
return !isSD3 && !isCogView4;
case 'control_layer':
return !isSD3 && !isCogView4;
case 'inpaint_mask':
return true;
case 'raster_layer':
return true;
default:
break;
}
},
[isSD3, isCogView4]
);
const isEntityTypeEnabled = useCallback(() => {
switch (entityType) {
case 'reference_image':
return !isSD3 && !isCogView4;
case 'regional_guidance':
return !isSD3 && !isCogView4;
case 'control_layer':
return !isSD3 && !isCogView4;
case 'inpaint_mask':
return true;
case 'raster_layer':
return true;
default:
break;
}
}, [entityType, isSD3, isCogView4]);
const isReferenceImageEnabled = useMemo(() => {
return isEntityTypeEnabled('reference_image');
}, [isEntityTypeEnabled]);
const isRegionalGuidanceEnabled = useMemo(() => {
return isEntityTypeEnabled('regional_guidance');
}, [isEntityTypeEnabled]);
const isRasterLayerEnabled = useMemo(() => {
return isEntityTypeEnabled('raster_layer');
}, [isEntityTypeEnabled]);
const isControlLayerEnabled = useMemo(() => {
return isEntityTypeEnabled('control_layer');
}, [isEntityTypeEnabled]);
const isInpaintMaskEnabled = useMemo(() => {
return isEntityTypeEnabled('inpaint_mask');
}, [isEntityTypeEnabled]);
return {
isReferenceImageEnabled,
isRegionalGuidanceEnabled,
isRasterLayerEnabled,
isControlLayerEnabled,
isInpaintMaskEnabled,
};
return isEntityTypeEnabled;
};

View File

@@ -19,7 +19,7 @@ export const ImageMenuItemNewCanvasFromImageSubMenu = memo(() => {
const imageDTO = useImageDTOContext();
const imageViewer = useImageViewer();
const isBusy = useCanvasIsBusySafe();
const { isControlLayerEnabled } = useIsEntityTypeEnabled();
const isControlLayerEnabled = useIsEntityTypeEnabled('control_layer');
const onClickNewCanvasWithRasterLayerFromImage = useCallback(() => {
const { dispatch, getState } = store;

View File

@@ -21,7 +21,9 @@ export const ImageMenuItemNewLayerFromImageSubMenu = memo(() => {
const imageDTO = useImageDTOContext();
const imageViewer = useImageViewer();
const isBusy = useCanvasIsBusySafe();
const { isRegionalGuidanceEnabled, isControlLayerEnabled, isReferenceImageEnabled } = useIsEntityTypeEnabled();
const isReferenceImageEnabled = useIsEntityTypeEnabled('reference_image');
const isRegionalGuidanceEnabled = useIsEntityTypeEnabled('regional_guidance');
const isControlLayerEnabled = useIsEntityTypeEnabled('control_layer');
const onClickNewRasterLayerFromImage = useCallback(() => {
const { dispatch, getState } = store;