| import { useAppSelector } from 'app/store/storeHooks'; |
| import type { CanvasEntityAdapterControlLayer } from 'features/controlLayers/konva/CanvasEntity/CanvasEntityAdapterControlLayer'; |
| import type { CanvasEntityAdapterInpaintMask } from 'features/controlLayers/konva/CanvasEntity/CanvasEntityAdapterInpaintMask'; |
| import type { CanvasEntityAdapterRasterLayer } from 'features/controlLayers/konva/CanvasEntity/CanvasEntityAdapterRasterLayer'; |
| import type { CanvasEntityAdapterRegionalGuidance } from 'features/controlLayers/konva/CanvasEntity/CanvasEntityAdapterRegionalGuidance'; |
| import { canvasToBlob } from 'features/controlLayers/konva/util'; |
| import { selectAutoAddBoardId } from 'features/gallery/store/gallerySelectors'; |
| import { useCallback } from 'react'; |
| import { uploadImage } from 'services/api/endpoints/images'; |
|
|
| export const useSaveLayerToAssets = () => { |
| const autoAddBoardId = useAppSelector(selectAutoAddBoardId); |
|
|
| const saveLayerToAssets = useCallback( |
| async ( |
| adapter: |
| | CanvasEntityAdapterRasterLayer |
| | CanvasEntityAdapterControlLayer |
| | CanvasEntityAdapterInpaintMask |
| | CanvasEntityAdapterRegionalGuidance |
| | null |
| ) => { |
| if (!adapter) { |
| return; |
| } |
| const canvas = adapter.getCanvas(); |
| const blob = await canvasToBlob(canvas); |
| const file = new File([blob], `layer-${adapter.id}.png`, { type: 'image/png' }); |
| uploadImage({ |
| file, |
| image_category: 'user', |
| is_intermediate: false, |
| board_id: autoAddBoardId === 'none' ? undefined : autoAddBoardId, |
| }); |
| }, |
| [autoAddBoardId] |
| ); |
|
|
| return saveLayerToAssets; |
| }; |
|
|