diff --git a/src/entities/home/ui/favorite-wrapper.tsx b/src/entities/home/ui/favorite-wrapper.tsx index 8fcfcc9..dedf75a 100644 --- a/src/entities/home/ui/favorite-wrapper.tsx +++ b/src/entities/home/ui/favorite-wrapper.tsx @@ -4,7 +4,7 @@ import { Swiper, SwiperSlide } from 'swiper/react'; import 'swiper/css'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { UserFavorite } from '@/entities/user/model/types'; -import { useFavoriteEditOnStore, useMenuOnStore, useStore } from '@/shared/model/store'; +import { useFavoriteEditOnStore, useMenuIds, useMenuOnStore, useStore } from '@/shared/model/store'; import { useTranslation } from 'react-i18next'; import { showAlert } from '@/widgets/show-alert'; import { checkGrant } from '@/shared/lib/check-grant'; @@ -23,6 +23,7 @@ export const FavoriteWrapper = ({ const { menuOn, setMenuOn } = useMenuOnStore(); const { favoriteEditOn, setFavoriteEditOn } = useFavoriteEditOnStore(); + const { menuIds, setMenuIds, deleteMenuId} = useMenuIds(); const [favoriteItems, setFavoriteItems] = useState>([]); @@ -56,6 +57,17 @@ export const FavoriteWrapper = ({ setFavoriteItems(userFavorite); }; + const onClickToRemoveItem = (item?: UserFavorite) => { + let newFavorite: Array = favoriteItems.filter((value, index) => { + return value.menuId !== item?.menuId; + }); + useStore.getState().UserStore.setUserFavorite(newFavorite); + setFavoriteItems(newFavorite); + if(item?.menuId){ + deleteMenuId(item?.menuId); + } + }; + const makeFavoriteItems = () => { let rs = []; for(let i=0;i + { favoriteEditOn && + onClickToRemoveItem(favoriteItems[i]) } + > + 삭제 + + } { displayName } diff --git a/src/entities/menu/ui/menu-category.tsx b/src/entities/menu/ui/menu-category.tsx index 4195eea..d4ea5c3 100644 --- a/src/entities/menu/ui/menu-category.tsx +++ b/src/entities/menu/ui/menu-category.tsx @@ -1,5 +1,5 @@ import { useNavigate } from '@/shared/lib/hooks/use-navigate'; -import { useFavoriteEditOnStore, useMenuOnStore, useStore } from '@/shared/model/store'; +import { useFavoriteEditOnStore, useMenuIds, useMenuOnStore, useStore } from '@/shared/model/store'; import { UserFavorite } from '@/entities/user/model/types'; import { RefObject, useEffect, useState } from 'react'; import { MenuItem } from '../model/types'; @@ -33,10 +33,11 @@ export const MenuCategory = ({ const { t, i18n } = useTranslation(); const [favoriteItems, setFavoriteItems] = useState>([]); - const [menuIds, setMenuIds] = useState>([]); + // const [menuIds, setMenuIds] = useState>([]); const { menuOn, setMenuOn } = useMenuOnStore(); const { favoriteEditOn, setFavoriteEditOn } = useFavoriteEditOnStore(); + const { menuIds, setMenuIds, deleteMenuId} = useMenuIds(); const onClickToNavigate = (menuId?: number, path?: string) => { if(menuId && checkGrant(menuId, 'R')){ @@ -97,27 +98,16 @@ export const MenuCategory = ({ const callFavoiteItems = () => { let userFavorite = useStore.getState().UserStore.userFavorite; setFavoriteItems(userFavorite); - let newArr: Array = userFavorite.map((value, _) => { + let newArr: Array = userFavorite.map((value, index) => { return value.menuId; }); setMenuIds(newArr); }; - useEffect(() => { - callFavoiteItems(); - }, []); - useEffect(() => { callFavoiteItems(); }, [changeMenuId]); - useEffect(() => { - if(menuIds.length > 0) { - // callShortcutSave(); - } - - }, [menuIds]); - const getMenuItems = () => { let rs = []; if(subMenu){ diff --git a/src/shared/model/store.ts b/src/shared/model/store.ts index f207b29..09da1b2 100644 --- a/src/shared/model/store.ts +++ b/src/shared/model/store.ts @@ -14,12 +14,19 @@ export interface FavoriteEditOnStore { favoriteEditOn: boolean; setFavoriteEditOn: (favoriteEditOn: boolean) => void; }; + +export interface MenuIdsStore { + menuIds: Array; + setMenuIds: (menuIds: Array) => void; + deleteMenuId: (menuId: number) => void; +}; + export const useMenuOnStore = create((set) => ({ menuOn: false, setMenuOn: (menuOn: boolean) => { set((state: { menuOn: boolean}) => ({ menuOn: (state.menuOn = menuOn) - })) + })); } })); export const useFavoriteEditOnStore = create((set) => ({ @@ -27,7 +34,26 @@ export const useFavoriteEditOnStore = create((set) => ({ setFavoriteEditOn: (favoriteEditOn: boolean) => { set((state: { favoriteEditOn: boolean}) => ({ favoriteEditOn: (state.favoriteEditOn = favoriteEditOn) - })) + })); + } +})); +export const useMenuIds = create((set) => ({ + menuIds: [], + setMenuIds: (menuIds: Array) => { + set((state: {menuIds: Array}) => ({ + menuIds: (state.menuIds = menuIds) + })); + }, + deleteMenuId: (menuId: number) => { + set((state: {menuIds: Array}) => ({ + menuIds: (state.menuIds = state.menuIds.filter(( + val?: number, + idx?: number + ) => { + console.log(val, idx); + return val !== menuId; + })) + })); } }));