diff --git a/com.twin.app.shoptime/src/hooks/usePriceInfo.jsx b/com.twin.app.shoptime/src/hooks/usePriceInfo.jsx index 49fb377f..5e6e76b1 100644 --- a/com.twin.app.shoptime/src/hooks/usePriceInfo.jsx +++ b/com.twin.app.shoptime/src/hooks/usePriceInfo.jsx @@ -1,36 +1,42 @@ -import React, { useCallback } from "react"; +import React, { useMemo } from "react"; + +const priceInfoKeys = [ + "originalPrice", + "discountedPrice", + "rewardFlag", + "discountAmount", + "discountRate", +]; export default function usePriceInfo(priceInfo) { - const parsePriceInfo = useCallback( - (priceInfo) => { - const priceParts = priceInfo - .split("|") - .filter((part) => part !== "N") - .map((item) => item.trim()); + const parsedPriceInfo = useMemo(() => { + const splittedPriceInfo = priceInfo.split("|").map((item) => item.trim()); - let originalPrice, discountedPrice, discountRate, discountNumeric; + const processedPriceInfo = priceInfoKeys.reduce((objcet, key, index) => { + objcet[key] = splittedPriceInfo[index]; + return objcet; + }, {}); - if (priceParts.length === 4) { - [originalPrice, discountedPrice, , discountRate] = priceParts; - discountNumeric = Number(discountRate.slice(0, -1)); - } else if (priceParts.length === 2) { - [originalPrice, discountedPrice] = priceParts; - discountRate = null; - discountNumeric = null; - } else { - originalPrice = null; - discountedPrice = null; - discountRate = null; - discountNumeric = null; - } + const { + originalPrice, + discountedPrice, + rewardFlag, + discountAmount, + discountRate, + } = processedPriceInfo; - return { originalPrice, discountedPrice, discountRate, discountNumeric }; - }, - [priceInfo] - ); + const discountRateNumeric = + discountRate || Number(discountRate.slice(0, -1)); - const { originalPrice, discountedPrice, discountRate, discountNumeric } = - parsePriceInfo(priceInfo); + return { + originalPrice, + discountedPrice, + rewardFlag, + discountAmount, + discountRate, + discountRateNumeric, + }; + }, [priceInfo]); - return { originalPrice, discountedPrice, discountRate, discountNumeric }; + return parsedPriceInfo; }