Skip to content

Commit f4aba52

Browse files
feat(ui): use flushSync for locateInGallery to ensure panel api calls finish before selecting image
1 parent d17c273 commit f4aba52

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/ImageMenuItemLocateInGalery.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { navigationApi } from 'features/ui/layouts/navigation-api';
66
import { useGalleryPanel } from 'features/ui/layouts/use-gallery-panel';
77
import { selectActiveTab } from 'features/ui/store/uiSelectors';
88
import { memo, useCallback, useMemo } from 'react';
9+
import { flushSync } from 'react-dom';
910
import { useTranslation } from 'react-i18next';
1011
import { PiCrosshairBold } from 'react-icons/pi';
1112

@@ -23,7 +24,9 @@ export const ImageMenuItemLocateInGalery = memo(() => {
2324
const onClick = useCallback(() => {
2425
navigationApi.expandRightPanel();
2526
galleryPanel.expand();
26-
dispatch(boardIdSelected({ boardId: imageDTO.board_id ?? 'none', selectedImageName: imageDTO.image_name }));
27+
flushSync(() => {
28+
dispatch(boardIdSelected({ boardId: imageDTO.board_id ?? 'none', selectedImageName: imageDTO.image_name }));
29+
});
2730
}, [dispatch, galleryPanel, imageDTO]);
2831

2932
return (

invokeai/frontend/web/src/features/gallery/components/ImageViewer/CurrentImageButtons.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { navigationApi } from 'features/ui/layouts/navigation-api';
1717
import { useGalleryPanel } from 'features/ui/layouts/use-gallery-panel';
1818
import { selectActiveTab } from 'features/ui/store/uiSelectors';
1919
import { memo, useCallback, useMemo } from 'react';
20+
import { flushSync } from 'react-dom';
2021
import { useTranslation } from 'react-i18next';
2122
import {
2223
PiArrowsCounterClockwiseBold,
@@ -45,7 +46,9 @@ export const CurrentImageButtons = memo(({ imageDTO }: { imageDTO: ImageDTO }) =
4546
const locateInGallery = useCallback(() => {
4647
navigationApi.expandRightPanel();
4748
galleryPanel.expand();
48-
dispatch(boardIdSelected({ boardId: imageDTO.board_id ?? 'none', selectedImageName: imageDTO.image_name }));
49+
flushSync(() => {
50+
dispatch(boardIdSelected({ boardId: imageDTO.board_id ?? 'none', selectedImageName: imageDTO.image_name }));
51+
});
4952
}, [dispatch, galleryPanel, imageDTO]);
5053

5154
const isCanvasOrGenerateTab = tab === 'canvas' || tab === 'generate';

0 commit comments

Comments
 (0)