diff --git a/src/entities/home/ui/favorite-wrapper.tsx b/src/entities/home/ui/favorite-wrapper.tsx index 824ed15..72c1f65 100644 --- a/src/entities/home/ui/favorite-wrapper.tsx +++ b/src/entities/home/ui/favorite-wrapper.tsx @@ -25,7 +25,7 @@ export const FavoriteWrapper = ({ const { menuOn, setMenuOn } = useMenuOnStore(); const { favoriteEditOn, setFavoriteEditOn } = useFavoriteEditOnStore(); const { menuIds, setMenuIds, deleteMenuId} = useMenuIds(); - + const [isFirst, setIsFirst] = useState(true); const [favoriteItems, setFavoriteItems] = useState>([]); const itemAdd: UserFavorite = { @@ -35,10 +35,18 @@ export const FavoriteWrapper = ({ iconFilePath: IMAGE_ROOT + '/ico_menu_plus.svg', programPath: '', }; - - const goToLastSlide = () => { + + const goToSlide = (key: number | 'first' | 'last') => { if(swiperInstance){ - swiperInstance.slideTo(swiperInstance.slides.length - 1); + if(key === 'first'){ + swiperInstance.slideTo(0); + } + else if(key === 'last'){ + swiperInstance.slideTo(swiperInstance.slides.length - 1); + } + else{ + swiperInstance.slideTo(key); + } } }; @@ -65,19 +73,35 @@ export const FavoriteWrapper = ({ }; const onClickToRemoveItem = (item?: UserFavorite) => { + let idx = -1; let newFavorite: Array = favoriteItems.filter((value, index) => { + if(value.menuId === item?.menuId){ + idx = index; + } return value.menuId !== item?.menuId; }); useStore.getState().UserStore.setUserFavorite(newFavorite); setFavoriteItems(newFavorite); - if(item?.menuId){ - deleteMenuId(item?.menuId); + if(idx > -1){ + goToSlide(idx); + } + if(menuIds.length <= 1){ + showAlert('바로가기는 1개이상 설정 필요 합니다.') ; + } + else{ + if(item?.menuId){ + deleteMenuId(item?.menuId); + } } }; const makeFavoriteItems = () => { let rs = []; - for(let i=0;i 4)? 4: cnt; + } + for(let i=0;i { - goToLastSlide(); getFavoriteList(); + if(usingType === 'home'){ + goToSlide('first'); + } + else if(usingType === 'menu' && !isFirst){ + setTimeout(() => { + goToSlide('last'); + }, 100); + } + setIsFirst(false); }, [changeMenuId, favoriteEditOn]); - useEffect(() => { - goToLastSlide(); - }, [menuIds]); - return ( <> { let userFavorite = useStore.getState().UserStore.userFavorite; - if(checked){ - // 즐겨찾기가 4개 이상일 경우 마지막 항목 제거 - if(userFavorite.length >= 10){ - showAlert('즐겨찾기는 10개까지만 추가 할수 있습니다.'); - } - else{ + if(userFavorite.length >= 10){ + showAlert('즐겨찾기는 10개까지만 추가 할수 있습니다.'); + } + else if(userFavorite.length <= 1){ + showAlert('바로가기는 1개이상 설정 필요 합니다.'); + } + else{ + if(checked){ userFavorite = [ ...userFavorite, { @@ -78,21 +79,15 @@ export const MenuCategory = ({ } ]; } - } - else{ - // 즐겨찾기가 1개 남았을 때는 해제하지 않음 - if(userFavorite.length <= 1){ - callFavoiteItems(); - return; + else{ + userFavorite = userFavorite.filter((value, _) => { + return value.menuId !== menuId + }); } - userFavorite = userFavorite.filter((value, _) => { - return value.menuId !== menuId - }); + useStore.getState().UserStore.setUserFavorite(userFavorite); + setChangeMenuId(`${menuId}-${checked}`); + callFavoiteItems(); } - useStore.getState().UserStore.setUserFavorite(userFavorite); - setChangeMenuId(`${menuId}-${checked}`); - callFavoiteItems(); - }; const callFavoiteItems = () => { @@ -103,11 +98,7 @@ export const MenuCategory = ({ }); setMenuIds(newArr); }; - - useEffect(() => { - callFavoiteItems(); - }, [changeMenuId]); - + const getMenuItems = () => { let rs = []; if(subMenu){ @@ -165,6 +156,10 @@ export const MenuCategory = ({ ? MenuItems.find(item => item.menuId === menuId)?.menuNameEng || menuName : menuName; + useEffect(() => { + callFavoiteItems(); + }, [changeMenuId]); + return ( <>