From a539b1dcdcf4b859e86d2e8a34ed0f3a449d6760 Mon Sep 17 00:00:00 2001 From: yonghyon Date: Mon, 7 Oct 2024 15:00:56 +0900 Subject: [PATCH] =?UTF-8?q?[SHOPTIME-3666]=20Detail=20Page=20/=20=EB=B6=88?= =?UTF-8?q?=ED=95=84=EC=9A=94=ED=95=9C=20API=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=ED=98=B8=EC=B6=9C=20=EC=9B=90=EC=9D=B8=20:=20=EC=A6=90?= =?UTF-8?q?=EA=B2=A8=20=EC=B0=BE=EA=B8=B0=20=EA=B4=80=EB=A0=A8=20=EB=B6=88?= =?UTF-8?q?=ED=95=84=EC=9A=94=20api=20=20=ED=98=B8=EC=B6=9C=20=EB=8C=80?= =?UTF-8?q?=EC=B1=85=20:=20=EC=A6=90=EA=B2=A8=EC=B0=BE=EA=B8=B0=20?= =?UTF-8?q?=EC=97=AC=EB=B6=80=EB=8A=94=20=EB=82=B4=EB=B6=80=20=EB=B3=80?= =?UTF-8?q?=EC=88=98=EB=A1=9C=20=EA=B4=80=EB=A6=AC=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SingleProduct/SingleOption.jsx | 19 ++++++++-------- .../UnableProduct/UnableOption.jsx | 22 +++++++++---------- .../DetailPanel/components/FavoriteBtn.jsx | 9 ++------ 3 files changed, 21 insertions(+), 29 deletions(-) diff --git a/com.twin.app.shoptime/src/views/DetailPanel/SingleProduct/SingleOption.jsx b/com.twin.app.shoptime/src/views/DetailPanel/SingleProduct/SingleOption.jsx index 9446cdad..52f3d4bd 100644 --- a/com.twin.app.shoptime/src/views/DetailPanel/SingleProduct/SingleOption.jsx +++ b/com.twin.app.shoptime/src/views/DetailPanel/SingleProduct/SingleOption.jsx @@ -77,10 +77,6 @@ export default function SingleOption({ (state) => state.common.appStatus.loginUserData ); - const favoriteFlagData = useSelector( - (state) => state.myPage.favoriteFlagData - ); - const [hasProductOptionArray, setHasProductOptionArray] = useState(true); const [promotions, setPromotions] = useState([]); const [selectedBtnOptIdx, setSelectedBtnOptIdx] = useState(0); @@ -96,6 +92,7 @@ export default function SingleOption({ const [selectedOptionInfo, setSelectedOptionInfo] = useState(); const [downloadCouponArr, setDownloadCouponArr] = useState([]); const [focused, setFocused] = useState(false); + const [favoriteFlag, setFavoriteFlag] = useState(productInfo?.favorYn); const webOSVersion = useSelector( (state) => state.common.appStatus.webOSVersion @@ -524,12 +521,13 @@ export default function SingleOption({ Spotlight.focus("spotlight-IndicatorContainer"); }; - const favoriteFlag = useMemo(() => { - if (favoriteFlagData && Object.keys(favoriteFlagData).length > 0) { - return favoriteFlagData?.favorFlag; - } - return productInfo?.favorYn; - }, [favoriteFlagData, productInfo]); + useEffect(() => { + setFavoriteFlag(productInfo?.favorYn ? productInfo?.favorYn : "N"); + }, [productInfo]); + + const onFavoriteFlagChanged = useCallback((ev) => { + setFavoriteFlag(ev); + }, []); const renderItem = useCallback( ({ index, ...rest }) => { @@ -777,6 +775,7 @@ export default function SingleOption({ selectedPatnrId={selectedPatnrId} selectedPrdtId={selectedPrdtId} favoriteFlag={favoriteFlag} + onFavoriteFlagChanged={onFavoriteFlagChanged} />
diff --git a/com.twin.app.shoptime/src/views/DetailPanel/UnableProduct/UnableOption.jsx b/com.twin.app.shoptime/src/views/DetailPanel/UnableProduct/UnableOption.jsx index b2450b5a..ba9d3be4 100644 --- a/com.twin.app.shoptime/src/views/DetailPanel/UnableProduct/UnableOption.jsx +++ b/com.twin.app.shoptime/src/views/DetailPanel/UnableProduct/UnableOption.jsx @@ -24,7 +24,7 @@ export default function UnableOption({ soldoutFlag, }) { const dispatch = useDispatch(); - const { USE_SELECTOR } = useWhyDidYouUpdate("UnableOption", { + const { USE_STATE, USE_SELECTOR } = useWhyDidYouUpdate("UnableOption", { handleMobileSendPopupOpen, patnrName, productInfo, @@ -37,11 +37,7 @@ export default function UnableOption({ "isLoading", (state) => state.common.appStatus?.showLoadingPanel?.show ); - const favoriteFlagData = USE_SELECTOR( - "favoriteFlagData", - (state) => state.myPage.favoriteFlagData - ); - + const [favoriteFlag, setFavoriteFlag] = USE_STATE("favoriteFlag", productInfo?.favorYn); const tooltipDes = $L("Scan for more information about the product."); const { @@ -130,12 +126,13 @@ export default function UnableOption({ } }, [dispatch, handleMobileSendPopupOpen]); - const favoriteFlag = useMemo(() => { - if (favoriteFlagData && Object.keys(favoriteFlagData).length > 0) { - return favoriteFlagData?.favorFlag; - } - return productInfo?.favorYn; - }, [favoriteFlagData, productInfo]); + useEffect(() => { + setFavoriteFlag(productInfo?.favorYn ? productInfo?.favorYn : "N"); + }, [productInfo]); + + const onFavoriteFlagChanged = useCallback((ev) => { + setFavoriteFlag(ev); + }, []); const renderPriceItem = useCallback(() => { if (productInfo && !promotionCode) { @@ -333,6 +330,7 @@ export default function UnableOption({ selectedPatnrId={selectedPatnrId} selectedPrdtId={selectedPrdtId} favoriteFlag={favoriteFlag} + onFavoriteFlagChanged={onFavoriteFlagChanged} />
{productInfo?.disclaimer}
diff --git a/com.twin.app.shoptime/src/views/DetailPanel/components/FavoriteBtn.jsx b/com.twin.app.shoptime/src/views/DetailPanel/components/FavoriteBtn.jsx index 10c7039d..5d85e613 100644 --- a/com.twin.app.shoptime/src/views/DetailPanel/components/FavoriteBtn.jsx +++ b/com.twin.app.shoptime/src/views/DetailPanel/components/FavoriteBtn.jsx @@ -52,15 +52,10 @@ export default function FavoriteBtn({ }, [dispatch, favoriteFlag, selectedPatnrId, selectedPrdtId]); const PopUpOnClick = useCallback(() => { - dispatch( - getMyFavoriteFlag({ - patnrId: selectedPatnrId, - prdtId: selectedPrdtId, - }) - ); setTimeout(() => Spotlight.focus("favoriteBtn")); dispatch(setHidePopup()); - }, [dispatch, favoriteFlag]); + onFavoriteFlagChanged(favoriteFlag === "Y" ? "N" : "Y"); + }, [dispatch, favoriteFlag, onFavoriteFlagChanged]); return (