From 071e8bcee4264e45b3e4e34b33a4cf9330aeb906 Mon Sep 17 00:00:00 2001 From: Mary Hipp Date: Wed, 26 Jun 2024 14:15:58 -0400 Subject: [PATCH] feat(ui): make archiving and auto-add mutually exclusive --- .../gallery/components/Boards/BoardContextMenu.tsx | 10 ++++++---- .../components/Boards/BoardsList/GalleryBoard.tsx | 4 ++-- .../web/src/services/api/hooks/useBoardName.ts | 4 +++- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardContextMenu.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardContextMenu.tsx index afb15ae96c..032b9c3b01 100644 --- a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardContextMenu.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardContextMenu.tsx @@ -1,5 +1,5 @@ import type { ContextMenuProps } from '@invoke-ai/ui-library'; -import { ContextMenu, MenuGroup, MenuItem, MenuList } from '@invoke-ai/ui-library'; +import { ContextMenu, MenuGroup, MenuItem, MenuList, Tooltip } from '@invoke-ai/ui-library'; import { createSelector } from '@reduxjs/toolkit'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { autoAddBoardIdChanged, selectGallerySlice } from 'features/gallery/store/gallerySlice'; @@ -88,9 +88,11 @@ const BoardContextMenu = ({ board, board_id, setBoardToDelete, children }: Props {t('boards.unarchiveBoard')} ) : ( - } onClick={handleArchive}> - {t('boards.archiveBoard')} - + + } onClick={handleArchive} isDisabled={isSelectedForAutoAdd}> + {t('boards.archiveBoard')} + + ))} {board && } diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/GalleryBoard.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/GalleryBoard.tsx index 5f684d9bb0..125e2a93c1 100644 --- a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/GalleryBoard.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/GalleryBoard.tsx @@ -56,10 +56,10 @@ const GalleryBoard = ({ board, isSelected, setBoardToDelete }: GalleryBoardProps const handleSelectBoard = useCallback(() => { dispatch(boardIdSelected({ boardId: board_id })); - if (autoAssignBoardOnClick) { + if (autoAssignBoardOnClick && !board.archived) { dispatch(autoAddBoardIdChanged(board_id)); } - }, [board_id, autoAssignBoardOnClick, dispatch]); + }, [board_id, autoAssignBoardOnClick, dispatch, board.archived]); const [updateBoard, { isLoading: isUpdateBoardLoading }] = useUpdateBoardMutation(); diff --git a/invokeai/frontend/web/src/services/api/hooks/useBoardName.ts b/invokeai/frontend/web/src/services/api/hooks/useBoardName.ts index 478bea9f18..8798673e0d 100644 --- a/invokeai/frontend/web/src/services/api/hooks/useBoardName.ts +++ b/invokeai/frontend/web/src/services/api/hooks/useBoardName.ts @@ -2,9 +2,11 @@ import type { BoardId } from 'features/gallery/store/types'; import { t } from 'i18next'; import { useListAllBoardsQuery } from 'services/api/endpoints/boards'; import { selectListBoardsQueryArgs } from '../../../features/gallery/store/gallerySelectors'; +import { useAppSelector } from '../../../app/store/storeHooks'; export const useBoardName = (board_id: BoardId) => { - const { boardName } = useListAllBoardsQuery({}, { + const queryArgs = useAppSelector(selectListBoardsQueryArgs); + const { boardName } = useListAllBoardsQuery(queryArgs, { selectFromResult: ({ data }) => { const selectedBoard = data?.find((b) => b.board_id === board_id); const boardName = selectedBoard?.board_name || t('boards.uncategorized');