mirror of
https://github.com/invoke-ai/InvokeAI.git
synced 2026-04-23 03:00:31 -04:00
Update the frontend to incorporate the previous changes to how image selection and general image identification is handled in the frontend.
45 lines
1.6 KiB
TypeScript
45 lines
1.6 KiB
TypeScript
import { MenuItem } from '@invoke-ai/ui-library';
|
|
import { useStore } from '@nanostores/react';
|
|
import { $customStarUI } from 'app/store/nanostores/customStarUI';
|
|
import { useImageDTOContext } from 'features/gallery/contexts/ImageDTOContext';
|
|
import { memo, useCallback } from 'react';
|
|
import { useTranslation } from 'react-i18next';
|
|
import { PiStarBold, PiStarFill } from 'react-icons/pi';
|
|
import { useStarImagesMutation, useUnstarImagesMutation } from 'services/api/endpoints/images';
|
|
|
|
export const ImageMenuItemStarUnstar = memo(() => {
|
|
const { t } = useTranslation();
|
|
const imageDTO = useImageDTOContext();
|
|
const customStarUi = useStore($customStarUI);
|
|
const [starImages] = useStarImagesMutation();
|
|
const [unstarImages] = useUnstarImagesMutation();
|
|
|
|
const starImage = useCallback(() => {
|
|
if (imageDTO) {
|
|
starImages({ image_names: [imageDTO.image_name] });
|
|
}
|
|
}, [starImages, imageDTO]);
|
|
|
|
const unstarImage = useCallback(() => {
|
|
if (imageDTO) {
|
|
unstarImages({ image_names: [imageDTO.image_name] });
|
|
}
|
|
}, [unstarImages, imageDTO]);
|
|
|
|
if (imageDTO.starred) {
|
|
return (
|
|
<MenuItem icon={customStarUi ? customStarUi.off.icon : <PiStarFill />} onClickCapture={unstarImage}>
|
|
{customStarUi ? customStarUi.off.text : t('gallery.unstarImage')}
|
|
</MenuItem>
|
|
);
|
|
}
|
|
|
|
return (
|
|
<MenuItem icon={customStarUi ? customStarUi.on.icon : <PiStarBold />} onClickCapture={starImage}>
|
|
{customStarUi ? customStarUi.on.text : t('gallery.starImage')}
|
|
</MenuItem>
|
|
);
|
|
});
|
|
|
|
ImageMenuItemStarUnstar.displayName = 'ImageMenuItemStarUnstar';
|