@anker-in/campaign-ui 0.2.1 → 0.2.2-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/credits/context/hooks/useActivities.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useActivities.js.map +3 -3
- package/dist/cjs/components/credits/context/hooks/useAlpcFetch.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useAlpcFetch.js.map +3 -3
- package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.d.ts +7 -0
- package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.js +2 -0
- package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.js.map +7 -0
- package/dist/cjs/components/credits/context/hooks/useMyRewards.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useMyRewards.js.map +3 -3
- package/dist/cjs/components/credits/context/hooks/useRedeemCoupon.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useRedeemCoupon.js.map +3 -3
- package/dist/cjs/components/credits/context/hooks/useRedeemProduct.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useRedeemProduct.js.map +3 -3
- package/dist/cjs/components/credits/context/hooks/useRedeemableList.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useRedeemableList.js.map +3 -3
- package/dist/cjs/components/credits/context/memberPriceConst.d.ts +10 -0
- package/dist/cjs/components/credits/context/memberPriceConst.js +2 -0
- package/dist/cjs/components/credits/context/memberPriceConst.js.map +7 -0
- package/dist/cjs/components/credits/context/memberPriceTypes.d.ts +46 -0
- package/dist/cjs/components/credits/context/memberPriceTypes.js +2 -0
- package/dist/cjs/components/credits/context/memberPriceTypes.js.map +7 -0
- package/dist/cjs/components/credits/context/provider.d.ts +4 -1
- package/dist/cjs/components/credits/context/provider.js +1 -1
- package/dist/cjs/components/credits/context/provider.js.map +3 -3
- package/dist/cjs/components/credits/context/utils/atobID.d.ts +1 -0
- package/dist/cjs/components/credits/context/utils/atobID.js +2 -0
- package/dist/cjs/components/credits/context/utils/atobID.js.map +7 -0
- package/dist/cjs/components/credits/context/utils/functionDiscountCalculate.d.ts +5 -0
- package/dist/cjs/components/credits/context/utils/functionDiscountCalculate.js +2 -0
- package/dist/cjs/components/credits/context/utils/functionDiscountCalculate.js.map +7 -0
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.d.ts +8 -0
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.js +2 -0
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.js.map +7 -0
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.d.ts +9 -0
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js +2 -0
- package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js.map +7 -0
- package/dist/cjs/components/credits/context/utils/variantGetCoupon.d.ts +6 -0
- package/dist/cjs/components/credits/context/utils/variantGetCoupon.js +2 -0
- package/dist/cjs/components/credits/context/utils/variantGetCoupon.js.map +7 -0
- package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.d.ts +4 -0
- package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +2 -0
- package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +7 -0
- package/dist/cjs/components/credits/creditsAnkersolixTask/index.d.ts +2 -0
- package/dist/cjs/components/credits/creditsAnkersolixTask/index.js +2 -0
- package/dist/cjs/components/credits/creditsAnkersolixTask/index.js.map +7 -0
- package/dist/cjs/components/credits/creditsAnkersolixTask/type.d.ts +1 -0
- package/dist/cjs/components/credits/creditsAnkersolixTask/type.js +2 -0
- package/dist/cjs/components/credits/creditsAnkersolixTask/type.js.map +7 -0
- package/dist/cjs/components/credits/creditsBanner/index.d.ts +2 -1
- package/dist/cjs/components/credits/creditsBanner/index.js +1 -1
- package/dist/cjs/components/credits/creditsBanner/index.js.map +3 -3
- package/dist/{esm/components/credits/creditsBenefits/benefitItem.d.ts → cjs/components/credits/creditsBenefits/BenefitItem.d.ts} +4 -1
- package/dist/cjs/components/credits/creditsBenefits/BenefitItem.js +2 -0
- package/dist/cjs/components/credits/creditsBenefits/BenefitItem.js.map +7 -0
- package/dist/cjs/components/credits/creditsBenefits/{iconInfo.js → IconInfo.js} +1 -1
- package/dist/cjs/components/credits/creditsBenefits/{iconInfo.js.map → IconInfo.js.map} +2 -2
- package/dist/cjs/components/credits/creditsBenefits/index.d.ts +6 -2
- package/dist/cjs/components/credits/creditsBenefits/index.js +3 -3
- package/dist/cjs/components/credits/creditsBenefits/index.js.map +3 -3
- package/dist/cjs/components/credits/creditsCash/CreditsCash.d.ts +2 -1
- package/dist/cjs/components/credits/creditsCash/CreditsCash.js +1 -1
- package/dist/cjs/components/credits/creditsCash/CreditsCash.js.map +3 -3
- package/dist/cjs/components/credits/creditsCash/RedeemableItem.js +1 -1
- package/dist/cjs/components/credits/creditsCash/RedeemableItem.js.map +2 -2
- package/dist/cjs/components/credits/creditsFaq/index.d.ts +2 -1
- package/dist/cjs/components/credits/creditsFaq/index.js +1 -1
- package/dist/cjs/components/credits/creditsFaq/index.js.map +3 -3
- package/dist/cjs/components/credits/creditsInfoCard/index.d.ts +2 -1
- package/dist/cjs/components/credits/creditsInfoCard/index.js +1 -1
- package/dist/cjs/components/credits/creditsInfoCard/index.js.map +3 -3
- package/dist/cjs/components/credits/creditsMemberPrice/CreditsMemberPrice.d.ts +5 -0
- package/dist/cjs/components/credits/creditsMemberPrice/CreditsMemberPrice.js +2 -0
- package/dist/cjs/components/credits/creditsMemberPrice/CreditsMemberPrice.js.map +7 -0
- package/dist/cjs/components/credits/creditsMemberPrice/MemberPriceItem.d.ts +7 -0
- package/dist/cjs/components/credits/creditsMemberPrice/MemberPriceItem.js +2 -0
- package/dist/cjs/components/credits/creditsMemberPrice/MemberPriceItem.js.map +7 -0
- package/dist/cjs/components/credits/creditsMemberPrice/index.d.ts +2 -0
- package/dist/cjs/components/credits/creditsMemberPrice/index.js +2 -0
- package/dist/cjs/components/credits/creditsMemberPrice/index.js.map +7 -0
- package/dist/cjs/components/credits/creditsMemberPrice/type.d.ts +64 -0
- package/dist/cjs/components/credits/creditsMemberPrice/type.js +2 -0
- package/dist/cjs/components/credits/creditsMemberPrice/type.js.map +7 -0
- package/dist/cjs/components/credits/creditsNavigation/CreditsNavigation.d.ts +4 -0
- package/dist/cjs/components/credits/creditsNavigation/CreditsNavigation.js +2 -0
- package/dist/cjs/components/credits/creditsNavigation/CreditsNavigation.js.map +7 -0
- package/dist/cjs/components/credits/creditsNavigation/index.d.ts +2 -0
- package/dist/cjs/components/credits/creditsNavigation/index.js +2 -0
- package/dist/cjs/components/credits/creditsNavigation/index.js.map +7 -0
- package/dist/cjs/components/credits/creditsNavigation/type.d.ts +7 -0
- package/dist/cjs/components/credits/creditsNavigation/type.js +2 -0
- package/dist/cjs/components/credits/creditsNavigation/type.js.map +7 -0
- package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.d.ts +2 -1
- package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Error.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Error.js.map +2 -2
- package/dist/cjs/components/credits/creditsRedeemList/type.d.ts +1 -0
- package/dist/cjs/components/credits/creditsRedeemList/type.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/type.js.map +1 -1
- package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.d.ts +3 -1
- package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
- package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +3 -3
- package/dist/cjs/templates/{credits.d.ts → Credits.d.ts} +15 -1
- package/dist/cjs/templates/Credits.js +2 -0
- package/dist/cjs/templates/Credits.js.map +7 -0
- package/dist/cjs/templates/index.d.ts +1 -1
- package/dist/cjs/templates/index.js +1 -1
- package/dist/cjs/templates/index.js.map +1 -1
- package/dist/esm/components/credits/context/hooks/useActivities.js +1 -1
- package/dist/esm/components/credits/context/hooks/useActivities.js.map +3 -3
- package/dist/esm/components/credits/context/hooks/useAlpcFetch.js +1 -1
- package/dist/esm/components/credits/context/hooks/useAlpcFetch.js.map +3 -3
- package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.d.ts +7 -0
- package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.js +2 -0
- package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.js.map +7 -0
- package/dist/esm/components/credits/context/hooks/useMyRewards.js +1 -1
- package/dist/esm/components/credits/context/hooks/useMyRewards.js.map +3 -3
- package/dist/esm/components/credits/context/hooks/useRedeemCoupon.js +1 -1
- package/dist/esm/components/credits/context/hooks/useRedeemCoupon.js.map +3 -3
- package/dist/esm/components/credits/context/hooks/useRedeemProduct.js +1 -1
- package/dist/esm/components/credits/context/hooks/useRedeemProduct.js.map +3 -3
- package/dist/esm/components/credits/context/hooks/useRedeemableList.js +1 -1
- package/dist/esm/components/credits/context/hooks/useRedeemableList.js.map +3 -3
- package/dist/esm/components/credits/context/memberPriceConst.d.ts +10 -0
- package/dist/esm/components/credits/context/memberPriceConst.js +2 -0
- package/dist/esm/components/credits/context/memberPriceConst.js.map +7 -0
- package/dist/esm/components/credits/context/memberPriceTypes.d.ts +46 -0
- package/dist/esm/components/credits/context/memberPriceTypes.js +1 -0
- package/dist/esm/components/credits/context/memberPriceTypes.js.map +7 -0
- package/dist/esm/components/credits/context/provider.d.ts +4 -1
- package/dist/esm/components/credits/context/provider.js +1 -1
- package/dist/esm/components/credits/context/provider.js.map +3 -3
- package/dist/esm/components/credits/context/utils/atobID.d.ts +1 -0
- package/dist/esm/components/credits/context/utils/atobID.js +2 -0
- package/dist/esm/components/credits/context/utils/atobID.js.map +7 -0
- package/dist/esm/components/credits/context/utils/functionDiscountCalculate.d.ts +5 -0
- package/dist/esm/components/credits/context/utils/functionDiscountCalculate.js +2 -0
- package/dist/esm/components/credits/context/utils/functionDiscountCalculate.js.map +7 -0
- package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.d.ts +8 -0
- package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.js +2 -0
- package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.js.map +7 -0
- package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.d.ts +9 -0
- package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js +2 -0
- package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js.map +7 -0
- package/dist/esm/components/credits/context/utils/variantGetCoupon.d.ts +6 -0
- package/dist/esm/components/credits/context/utils/variantGetCoupon.js +2 -0
- package/dist/esm/components/credits/context/utils/variantGetCoupon.js.map +7 -0
- package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.d.ts +4 -0
- package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +2 -0
- package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +7 -0
- package/dist/esm/components/credits/creditsAnkersolixTask/index.d.ts +2 -0
- package/dist/esm/components/credits/creditsAnkersolixTask/index.js +2 -0
- package/dist/esm/components/credits/creditsAnkersolixTask/index.js.map +7 -0
- package/dist/esm/components/credits/creditsAnkersolixTask/type.d.ts +1 -0
- package/dist/esm/components/credits/creditsAnkersolixTask/type.js +2 -0
- package/dist/esm/components/credits/creditsAnkersolixTask/type.js.map +7 -0
- package/dist/esm/components/credits/creditsBanner/index.d.ts +2 -1
- package/dist/esm/components/credits/creditsBanner/index.js +1 -1
- package/dist/esm/components/credits/creditsBanner/index.js.map +3 -3
- package/dist/{cjs/components/credits/creditsBenefits/benefitItem.d.ts → esm/components/credits/creditsBenefits/BenefitItem.d.ts} +4 -1
- package/dist/esm/components/credits/creditsBenefits/BenefitItem.js +2 -0
- package/dist/esm/components/credits/creditsBenefits/BenefitItem.js.map +7 -0
- package/dist/esm/components/credits/creditsBenefits/{iconInfo.js → IconInfo.js} +1 -1
- package/dist/esm/components/credits/creditsBenefits/{iconInfo.js.map → IconInfo.js.map} +2 -2
- package/dist/esm/components/credits/creditsBenefits/index.d.ts +6 -2
- package/dist/esm/components/credits/creditsBenefits/index.js +3 -3
- package/dist/esm/components/credits/creditsBenefits/index.js.map +3 -3
- package/dist/esm/components/credits/creditsCash/CreditsCash.d.ts +2 -1
- package/dist/esm/components/credits/creditsCash/CreditsCash.js +1 -1
- package/dist/esm/components/credits/creditsCash/CreditsCash.js.map +3 -3
- package/dist/esm/components/credits/creditsCash/RedeemableItem.js +1 -1
- package/dist/esm/components/credits/creditsCash/RedeemableItem.js.map +2 -2
- package/dist/esm/components/credits/creditsFaq/index.d.ts +2 -1
- package/dist/esm/components/credits/creditsFaq/index.js +1 -1
- package/dist/esm/components/credits/creditsFaq/index.js.map +3 -3
- package/dist/esm/components/credits/creditsInfoCard/index.d.ts +2 -1
- package/dist/esm/components/credits/creditsInfoCard/index.js +1 -1
- package/dist/esm/components/credits/creditsInfoCard/index.js.map +3 -3
- package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.d.ts +5 -0
- package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js +2 -0
- package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js.map +7 -0
- package/dist/esm/components/credits/creditsMemberPrice/MemberPriceItem.d.ts +7 -0
- package/dist/esm/components/credits/creditsMemberPrice/MemberPriceItem.js +2 -0
- package/dist/esm/components/credits/creditsMemberPrice/MemberPriceItem.js.map +7 -0
- package/dist/esm/components/credits/creditsMemberPrice/index.d.ts +2 -0
- package/dist/esm/components/credits/creditsMemberPrice/index.js +2 -0
- package/dist/esm/components/credits/creditsMemberPrice/index.js.map +7 -0
- package/dist/esm/components/credits/creditsMemberPrice/type.d.ts +64 -0
- package/dist/esm/components/credits/creditsMemberPrice/type.js +1 -0
- package/dist/esm/components/credits/creditsMemberPrice/type.js.map +7 -0
- package/dist/esm/components/credits/creditsNavigation/CreditsNavigation.d.ts +4 -0
- package/dist/esm/components/credits/creditsNavigation/CreditsNavigation.js +2 -0
- package/dist/esm/components/credits/creditsNavigation/CreditsNavigation.js.map +7 -0
- package/dist/esm/components/credits/creditsNavigation/index.d.ts +2 -0
- package/dist/esm/components/credits/creditsNavigation/index.js +2 -0
- package/dist/esm/components/credits/creditsNavigation/index.js.map +7 -0
- package/dist/esm/components/credits/creditsNavigation/type.d.ts +7 -0
- package/dist/esm/components/credits/creditsNavigation/type.js +1 -0
- package/dist/esm/components/credits/creditsNavigation/type.js.map +7 -0
- package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.d.ts +2 -1
- package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Error.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Error.js.map +2 -2
- package/dist/esm/components/credits/creditsRedeemList/type.d.ts +1 -0
- package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.d.ts +3 -1
- package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
- package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +3 -3
- package/dist/esm/templates/{credits.d.ts → Credits.d.ts} +15 -1
- package/dist/esm/templates/Credits.js +2 -0
- package/dist/esm/templates/Credits.js.map +7 -0
- package/dist/esm/templates/index.d.ts +1 -1
- package/dist/esm/templates/index.js +1 -1
- package/dist/esm/templates/index.js.map +1 -1
- package/package.json +4 -3
- package/src/components/credits/context/hooks/useActivities.ts +3 -2
- package/src/components/credits/context/hooks/useAlpcFetch.ts +8 -4
- package/src/components/credits/context/hooks/useFunctionMemberPrice.ts +33 -0
- package/src/components/credits/context/hooks/useMyRewards.ts +3 -2
- package/src/components/credits/context/hooks/useRedeemCoupon.ts +4 -1
- package/src/components/credits/context/hooks/useRedeemProduct.ts +4 -1
- package/src/components/credits/context/hooks/useRedeemableList.ts +3 -3
- package/src/components/credits/context/memberPriceConst.ts +13 -0
- package/src/components/credits/context/memberPriceTypes.ts +54 -0
- package/src/components/credits/context/provider.tsx +9 -0
- package/src/components/credits/context/utils/atobID.ts +8 -0
- package/src/components/credits/context/utils/functionDiscountCalculate.ts +57 -0
- package/src/components/credits/context/utils/getFunctionMemberPrice.ts +135 -0
- package/src/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.ts +51 -0
- package/src/components/credits/context/utils/variantGetCoupon.ts +34 -0
- package/src/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.tsx +270 -0
- package/src/components/credits/creditsAnkersolixTask/index.ts +2 -0
- package/src/components/credits/creditsAnkersolixTask/type.ts +7 -0
- package/src/components/credits/creditsBanner/index.tsx +2 -2
- package/src/components/credits/creditsBenefits/{benefitItem.tsx → BenefitItem.tsx} +28 -9
- package/src/components/credits/creditsBenefits/index.tsx +12 -3
- package/src/components/credits/creditsCash/CreditsCash.tsx +5 -3
- package/src/components/credits/creditsCash/RedeemableItem.tsx +19 -15
- package/src/components/credits/creditsFaq/index.tsx +2 -2
- package/src/components/credits/creditsInfoCard/index.tsx +2 -2
- package/src/components/credits/creditsMemberPrice/CreditsMemberPrice.tsx +389 -0
- package/src/components/credits/creditsMemberPrice/MemberPriceItem.tsx +158 -0
- package/src/components/credits/creditsMemberPrice/index.ts +2 -0
- package/src/components/credits/creditsMemberPrice/type.ts +75 -0
- package/src/components/credits/creditsNavigation/CreditsNavigation.tsx +123 -0
- package/src/components/credits/creditsNavigation/index.ts +2 -0
- package/src/components/credits/creditsNavigation/type.ts +10 -0
- package/src/components/credits/creditsRedeemList/CreditsRedeemList.tsx +17 -3
- package/src/components/credits/creditsRedeemList/RedeemProductModal/Error.tsx +1 -1
- package/src/components/credits/creditsRedeemList/type.ts +1 -0
- package/src/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.tsx +2 -2
- package/src/templates/{credits.tsx → Credits.tsx} +38 -7
- package/src/templates/index.ts +1 -1
- package/dist/cjs/components/credits/const.d.ts +0 -1
- package/dist/cjs/components/credits/const.js +0 -2
- package/dist/cjs/components/credits/const.js.map +0 -7
- package/dist/cjs/components/credits/creditsBenefits/benefitItem.js +0 -2
- package/dist/cjs/components/credits/creditsBenefits/benefitItem.js.map +0 -7
- package/dist/cjs/templates/credits.js +0 -2
- package/dist/cjs/templates/credits.js.map +0 -7
- package/dist/esm/components/credits/const.d.ts +0 -1
- package/dist/esm/components/credits/const.js +0 -2
- package/dist/esm/components/credits/const.js.map +0 -7
- package/dist/esm/components/credits/creditsBenefits/benefitItem.js +0 -2
- package/dist/esm/components/credits/creditsBenefits/benefitItem.js.map +0 -7
- package/dist/esm/templates/credits.js +0 -2
- package/dist/esm/templates/credits.js.map +0 -7
- /package/dist/cjs/components/credits/creditsBenefits/{iconInfo.d.ts → IconInfo.d.ts} +0 -0
- /package/dist/esm/components/credits/creditsBenefits/{iconInfo.d.ts → IconInfo.d.ts} +0 -0
- /package/src/components/credits/creditsBenefits/{iconInfo.tsx → IconInfo.tsx} +0 -0
|
@@ -1,21 +1,28 @@
|
|
|
1
1
|
import { HeadlessConfig } from '@anker-in/lib';
|
|
2
2
|
import { DTC_TASK_TYPE } from '../components/credits/context/const';
|
|
3
3
|
import { CreditsPageCommon } from '../components/credits/type';
|
|
4
|
+
import { FunctionMemberPriceConfig } from '../components/credits/context/memberPriceTypes';
|
|
4
5
|
import { CreditsBannerCopy } from '../components/credits/creditsBanner';
|
|
5
6
|
import { CreditsInfoCardCopy } from '../components/credits/creditsInfoCard';
|
|
6
7
|
import { CreditsBenefitsCopy } from '../components/credits/creditsBenefits';
|
|
7
8
|
import { CreditsWaysToGetCreditsCopy } from '../components/credits/creditsWaysToGetCredits';
|
|
9
|
+
import { CreditsAnkersolixTaskCopy } from '../components/credits/creditsAnkersolixTask';
|
|
8
10
|
import { CreditsRedeemListCopy } from '../components/credits/creditsRedeemList';
|
|
9
11
|
import { CreditsCashCopy } from '../components/credits/creditsCash';
|
|
12
|
+
import { CreditsMemberPriceCopy } from '../components/credits/creditsMemberPrice';
|
|
10
13
|
import { CreditsFaqCopy } from '../components/credits/creditsFaq';
|
|
14
|
+
import { CreditsNavigationCopy } from '../components/credits/creditsNavigation';
|
|
11
15
|
import { AuthCodeActivateCopy } from 'src/components/registration/authCodeActivate/type';
|
|
12
16
|
export declare enum ComponentKey {
|
|
17
|
+
Navigation = "creditsNavigation",
|
|
13
18
|
Banner = "creditsBanner",
|
|
14
19
|
InfoCard = "creditsInfoCard",
|
|
15
20
|
Benefits = "creditsBenefits",
|
|
16
21
|
WaysToGetCredits = "creditsWaysToGetCredits",
|
|
22
|
+
AnkersolixTask = "creditsAnkersolixTask",
|
|
17
23
|
RedeemList = "creditsRedeemList",
|
|
18
24
|
SpendCreditsLikeCash = "creditsCash",
|
|
25
|
+
MemberPrice = "creditsMemberPrice",
|
|
19
26
|
Faqs = "creditsFaq"
|
|
20
27
|
}
|
|
21
28
|
export type CreditsTemplateProps = {
|
|
@@ -25,17 +32,24 @@ export type CreditsTemplateProps = {
|
|
|
25
32
|
authCodeActivate: AuthCodeActivateCopy;
|
|
26
33
|
};
|
|
27
34
|
taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>;
|
|
35
|
+
memberPriceDiscount?: FunctionMemberPriceConfig[];
|
|
36
|
+
};
|
|
37
|
+
creditsConfig?: {
|
|
38
|
+
alpcBrand?: string;
|
|
28
39
|
};
|
|
29
40
|
pageConfig: {
|
|
30
41
|
order: ComponentKey[];
|
|
31
42
|
common: CreditsPageCommon;
|
|
32
43
|
components: {
|
|
44
|
+
[ComponentKey.Navigation]?: CreditsNavigationCopy;
|
|
33
45
|
[ComponentKey.Banner]?: CreditsBannerCopy;
|
|
34
46
|
[ComponentKey.InfoCard]?: CreditsInfoCardCopy;
|
|
35
47
|
[ComponentKey.Benefits]?: CreditsBenefitsCopy;
|
|
36
48
|
[ComponentKey.WaysToGetCredits]?: CreditsWaysToGetCreditsCopy;
|
|
49
|
+
[ComponentKey.AnkersolixTask]?: CreditsAnkersolixTaskCopy;
|
|
37
50
|
[ComponentKey.RedeemList]?: CreditsRedeemListCopy;
|
|
38
51
|
[ComponentKey.SpendCreditsLikeCash]?: CreditsCashCopy;
|
|
52
|
+
[ComponentKey.MemberPrice]?: CreditsMemberPriceCopy;
|
|
39
53
|
[ComponentKey.Faqs]?: CreditsFaqCopy;
|
|
40
54
|
};
|
|
41
55
|
};
|
|
@@ -56,4 +70,4 @@ export type CreditsTemplateProps = {
|
|
|
56
70
|
pageGroup: string;
|
|
57
71
|
};
|
|
58
72
|
};
|
|
59
|
-
export declare const CreditsTemplate: ({ headlessConfig, siteConfig, userContext, pageConfig, registrationContext, gtm, }: CreditsTemplateProps) => import("react/jsx-runtime").JSX.Element;
|
|
73
|
+
export declare const CreditsTemplate: ({ headlessConfig, siteConfig, creditsConfig, userContext, pageConfig, registrationContext, gtm, }: CreditsTemplateProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Fragment as K,jsx as o,jsxs as a}from"react/jsx-runtime";import{classNames as c,HeadlessProvider as f}from"@anker-in/lib";import{RegistrationProvider as l}from"../components/registration/context/provider";import{CreditsProvider as y}from"../components/credits/context/provider";import{CreditsBanner as g}from"../components/credits/creditsBanner";import{CreditsInfoCard as P}from"../components/credits/creditsInfoCard";import{CreditsBenefits as T}from"../components/credits/creditsBenefits";import{CreditsWaysToGetCredits as v}from"../components/credits/creditsWaysToGetCredits";import{CreditsAnkersolixTask as u}from"../components/credits/creditsAnkersolixTask";import{CreditsRedeemList as b}from"../components/credits/creditsRedeemList";import{CreditsCash as h}from"../components/credits/creditsCash";import{CreditsMemberPrice as B}from"../components/credits/creditsMemberPrice";import{CreditsFaq as I}from"../components/credits/creditsFaq";import{CreditsNavigation as A}from"../components/credits/creditsNavigation";var L=(r=>(r.Navigation="creditsNavigation",r.Banner="creditsBanner",r.InfoCard="creditsInfoCard",r.Benefits="creditsBenefits",r.WaysToGetCredits="creditsWaysToGetCredits",r.AnkersolixTask="creditsAnkersolixTask",r.RedeemList="creditsRedeemList",r.SpendCreditsLikeCash="creditsCash",r.MemberPrice="creditsMemberPrice",r.Faqs="creditsFaq",r))(L||{});const ne=({headlessConfig:d,siteConfig:n,creditsConfig:C,userContext:t,pageConfig:s,registrationContext:p,gtm:m})=>(console.log("siteConfig",n),o(f,{headlessConfig:d,children:o(l,{copy:n.registrationsSettings,email:t?.profile?.email,children:a(y,{profile:t?.profile,removeProfile:t?.removeProfile,isLoadingProfile:t?.isLoadingProfile,openSignInPopup:p.openSignInPopup,openSignUpPopup:p.openSignUpPopup,creditInfo:t?.creditInfo,taskIdToTypeMapping:n.taskIdToTypeMapping,customer:t?.customer,fetchCreditInfo:t?.fetchCreditInfo,customerLoading:t?.customerLoading,gtm:m,pageCommon:s.common,memberPriceDiscount:n.memberPriceDiscount,alpcBrand:C?.alpcBrand,children:[s.components.creditsNavigation&&o(A,{copy:s.components.creditsNavigation}),o("div",{className:c("bg-[#f5f5f7] leading-[1.2]"),children:s.order.map(e=>{if(e==="creditsNavigation")return null;const i=s.components?.[e];return i?a(K,{children:[e==="creditsBanner"&&o(g,{copy:i,id:e}),e==="creditsInfoCard"&&t?.profile&&o(P,{copy:i,id:e}),e==="creditsBenefits"&&o(T,{copy:i,id:e}),e==="creditsWaysToGetCredits"&&o(v,{copy:i,id:e,classNames:d.brand==="anker"?{subtitle:"text-white",equalCreditsText:"bg-gradient-to-r from-[#3AD1FF] to-[#008CD6] bg-clip-text text-transparent"}:{subtitle:"text-[#D1D1D1]",equalCreditsText:"text-[#F6EAD0]"}}),e==="creditsAnkersolixTask"&&o(u,{copy:i,id:e}),e==="creditsRedeemList"&&o(b,{copy:i,id:e}),e==="creditsCash"&&o(h,{copy:i,id:e}),e==="creditsMemberPrice"&&o(B,{copy:i,id:e}),e==="creditsFaq"&&o(I,{copy:i,id:e}),e!=="creditsBanner"&&o("div",{className:"laptop:h-16 desktop:h-[96px] lg-desktop:h-[128px] tablet:h-16 h-16"})]}):null})})]})})}));export{L as ComponentKey,ne as CreditsTemplate};
|
|
2
|
+
//# sourceMappingURL=Credits.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/templates/Credits.tsx"],
|
|
4
|
+
"sourcesContent": ["import { classNames, HeadlessConfig, HeadlessProvider } from '@anker-in/lib'\nimport { RegistrationProvider } from '../components/registration/context/provider'\n\nimport { DTC_TASK_TYPE } from '../components/credits/context/const'\nimport { CreditsProvider } from '../components/credits/context/provider'\nimport { CreditsPageCommon } from '../components/credits/type'\nimport { FunctionMemberPriceConfig } from '../components/credits/context/memberPriceTypes'\n\nimport { CreditsBanner, CreditsBannerCopy } from '../components/credits/creditsBanner'\nimport { CreditsInfoCard, CreditsInfoCardCopy } from '../components/credits/creditsInfoCard'\nimport { CreditsBenefits, CreditsBenefitsCopy } from '../components/credits/creditsBenefits'\nimport { CreditsWaysToGetCredits, CreditsWaysToGetCreditsCopy } from '../components/credits/creditsWaysToGetCredits'\nimport { CreditsAnkersolixTask, CreditsAnkersolixTaskCopy } from '../components/credits/creditsAnkersolixTask'\nimport { CreditsRedeemList, CreditsRedeemListCopy } from '../components/credits/creditsRedeemList'\nimport { CreditsCash, CreditsCashCopy } from '../components/credits/creditsCash'\nimport { CreditsMemberPrice, CreditsMemberPriceCopy } from '../components/credits/creditsMemberPrice'\nimport { CreditsFaq, CreditsFaqCopy } from '../components/credits/creditsFaq'\nimport { CreditsNavigation, CreditsNavigationCopy } from '../components/credits/creditsNavigation'\nimport { AuthCodeActivateCopy } from 'src/components/registration/authCodeActivate/type'\n\nexport enum ComponentKey {\n Navigation = 'creditsNavigation',\n Banner = 'creditsBanner',\n InfoCard = 'creditsInfoCard',\n Benefits = 'creditsBenefits',\n WaysToGetCredits = 'creditsWaysToGetCredits',\n AnkersolixTask = 'creditsAnkersolixTask',\n RedeemList = 'creditsRedeemList',\n SpendCreditsLikeCash = 'creditsCash',\n MemberPrice = 'creditsMemberPrice',\n Faqs = 'creditsFaq',\n}\nexport type CreditsTemplateProps = {\n headlessConfig: HeadlessConfig\n siteConfig: {\n registrationsSettings: {\n authCodeActivate: AuthCodeActivateCopy\n }\n taskIdToTypeMapping: Record<string, DTC_TASK_TYPE>\n memberPriceDiscount?: FunctionMemberPriceConfig[]\n }\n creditsConfig?: {\n alpcBrand?: string\n }\n pageConfig: {\n order: ComponentKey[]\n common: CreditsPageCommon\n components: {\n [ComponentKey.Navigation]?: CreditsNavigationCopy\n [ComponentKey.Banner]?: CreditsBannerCopy\n [ComponentKey.InfoCard]?: CreditsInfoCardCopy\n [ComponentKey.Benefits]?: CreditsBenefitsCopy\n [ComponentKey.WaysToGetCredits]?: CreditsWaysToGetCreditsCopy\n [ComponentKey.AnkersolixTask]?: CreditsAnkersolixTaskCopy\n [ComponentKey.RedeemList]?: CreditsRedeemListCopy\n [ComponentKey.SpendCreditsLikeCash]?: CreditsCashCopy\n [ComponentKey.MemberPrice]?: CreditsMemberPriceCopy\n [ComponentKey.Faqs]?: CreditsFaqCopy\n }\n }\n userContext: {\n profile: any\n removeProfile: () => void\n isLoadingProfile: boolean\n creditInfo: any\n customer: any\n customerLoading: boolean\n fetchCreditInfo: () => void\n }\n registrationContext: {\n openSignUpPopup: () => void\n openSignInPopup: () => void\n }\n gtm: {\n pageGroup: string\n }\n}\n\nexport const CreditsTemplate = ({\n headlessConfig,\n siteConfig,\n creditsConfig,\n userContext,\n pageConfig,\n registrationContext,\n gtm,\n}: CreditsTemplateProps) => {\n\n console.log('siteConfig', siteConfig)\n return (\n <HeadlessProvider headlessConfig={headlessConfig}>\n <RegistrationProvider copy={siteConfig.registrationsSettings} email={userContext?.profile?.email}>\n <CreditsProvider\n profile={userContext?.profile}\n removeProfile={userContext?.removeProfile}\n isLoadingProfile={userContext?.isLoadingProfile}\n openSignInPopup={registrationContext.openSignInPopup}\n openSignUpPopup={registrationContext.openSignUpPopup}\n creditInfo={userContext?.creditInfo}\n taskIdToTypeMapping={siteConfig.taskIdToTypeMapping}\n customer={userContext?.customer}\n fetchCreditInfo={userContext?.fetchCreditInfo}\n customerLoading={userContext?.customerLoading}\n gtm={gtm}\n pageCommon={pageConfig.common}\n memberPriceDiscount={siteConfig.memberPriceDiscount}\n alpcBrand={creditsConfig?.alpcBrand}\n >\n {/* \u5BFC\u822A\u7EC4\u4EF6 - \u56FA\u5B9A\u4F4D\u7F6E\uFF0C\u4E0D\u53C2\u4E0E order \u6392\u5E8F */}\n {pageConfig.components[ComponentKey.Navigation] && (\n <CreditsNavigation copy={pageConfig.components[ComponentKey.Navigation]} />\n )}\n <div className={classNames('bg-[#f5f5f7] leading-[1.2]')}>\n {pageConfig.order.map(key => {\n // \u8DF3\u8FC7\u5BFC\u822A\u7EC4\u4EF6\uFF0C\u56E0\u4E3A\u5B83\u5DF2\u7ECF\u56FA\u5B9A\u6E32\u67D3\u5728\u4E0A\u65B9\n if (key === ComponentKey.Navigation) return null\n const componentCopy = pageConfig.components?.[key]\n if (!componentCopy) return null\n return (\n <>\n {key === ComponentKey.Banner && <CreditsBanner copy={componentCopy as CreditsBannerCopy} id={key} />}\n {key === ComponentKey.InfoCard && userContext?.profile && (\n <CreditsInfoCard copy={componentCopy as CreditsInfoCardCopy} id={key} />\n )}\n {key === ComponentKey.Benefits && <CreditsBenefits copy={componentCopy as CreditsBenefitsCopy} id={key} />}\n {key === ComponentKey.WaysToGetCredits && (\n <CreditsWaysToGetCredits\n copy={componentCopy as CreditsWaysToGetCreditsCopy}\n id={key}\n classNames={\n headlessConfig.brand === 'anker'\n ? {\n subtitle: 'text-white',\n equalCreditsText:\n 'bg-gradient-to-r from-[#3AD1FF] to-[#008CD6] bg-clip-text text-transparent',\n }\n : {\n subtitle: 'text-[#D1D1D1]',\n equalCreditsText: 'text-[#F6EAD0]',\n }\n }\n />\n )}\n {key === ComponentKey.AnkersolixTask && (\n <CreditsAnkersolixTask\n copy={componentCopy as CreditsAnkersolixTaskCopy}\n id={key}\n />\n )}\n {key === ComponentKey.RedeemList && <CreditsRedeemList copy={componentCopy as CreditsRedeemListCopy} id={key} />}\n {key === ComponentKey.SpendCreditsLikeCash && <CreditsCash copy={componentCopy as CreditsCashCopy} id={key} />}\n {key === ComponentKey.MemberPrice && <CreditsMemberPrice copy={componentCopy as CreditsMemberPriceCopy} id={key} />}\n {key === ComponentKey.Faqs && <CreditsFaq copy={componentCopy as CreditsFaqCopy} id={key} />}\n {key !== ComponentKey.Banner && (\n <div className=\"laptop:h-16 desktop:h-[96px] lg-desktop:h-[128px] tablet:h-16 h-16\" />\n )}\n </>\n )\n })}\n </div>\n </CreditsProvider>\n </RegistrationProvider>\n </HeadlessProvider>\n )\n}\n"],
|
|
5
|
+
"mappings": "AA8GY,OASI,YAAAA,EATJ,OAAAC,EASI,QAAAC,MATJ,oBA9GZ,OAAS,cAAAC,EAA4B,oBAAAC,MAAwB,gBAC7D,OAAS,wBAAAC,MAA4B,8CAGrC,OAAS,mBAAAC,MAAuB,yCAIhC,OAAS,iBAAAC,MAAwC,sCACjD,OAAS,mBAAAC,MAA4C,wCACrD,OAAS,mBAAAC,MAA4C,wCACrD,OAAS,2BAAAC,MAA4D,gDACrE,OAAS,yBAAAC,MAAwD,8CACjE,OAAS,qBAAAC,MAAgD,0CACzD,OAAS,eAAAC,MAAoC,oCAC7C,OAAS,sBAAAC,MAAkD,2CAC3D,OAAS,cAAAC,MAAkC,mCAC3C,OAAS,qBAAAC,MAAgD,0CAGlD,IAAKC,OACVA,EAAA,WAAa,oBACbA,EAAA,OAAS,gBACTA,EAAA,SAAW,kBACXA,EAAA,SAAW,kBACXA,EAAA,iBAAmB,0BACnBA,EAAA,eAAiB,wBACjBA,EAAA,WAAa,oBACbA,EAAA,qBAAuB,cACvBA,EAAA,YAAc,qBACdA,EAAA,KAAO,aAVGA,OAAA,IA0DL,MAAMC,GAAkB,CAAC,CAC9B,eAAAC,EACA,WAAAC,EACA,cAAAC,EACA,YAAAC,EACA,WAAAC,EACA,oBAAAC,EACA,IAAAC,CACF,KAEE,QAAQ,IAAI,aAAcL,CAAU,EAElCnB,EAACG,EAAA,CAAiB,eAAgBe,EAChC,SAAAlB,EAACI,EAAA,CAAqB,KAAMe,EAAW,sBAAuB,MAAOE,GAAa,SAAS,MACzF,SAAApB,EAACI,EAAA,CACC,QAASgB,GAAa,QACtB,cAAeA,GAAa,cAC5B,iBAAkBA,GAAa,iBAC/B,gBAAiBE,EAAoB,gBACrC,gBAAiBA,EAAoB,gBACrC,WAAYF,GAAa,WACzB,oBAAqBF,EAAW,oBAChC,SAAUE,GAAa,SACvB,gBAAiBA,GAAa,gBAC9B,gBAAiBA,GAAa,gBAC9B,IAAKG,EACL,WAAYF,EAAW,OACvB,oBAAqBH,EAAW,oBAChC,UAAWC,GAAe,UAGzB,UAAAE,EAAW,WAAW,mBACrBtB,EAACe,EAAA,CAAkB,KAAMO,EAAW,WAAW,kBAA0B,EAE3EtB,EAAC,OAAI,UAAWE,EAAW,4BAA4B,EACpD,SAAAoB,EAAW,MAAM,IAAIG,GAAO,CAE3B,GAAIA,IAAQ,oBAAyB,OAAO,KAC5C,MAAMC,EAAgBJ,EAAW,aAAaG,CAAG,EACjD,OAAKC,EAEHzB,EAAAF,EAAA,CACG,UAAA0B,IAAQ,iBAAuBzB,EAACM,EAAA,CAAc,KAAMoB,EAAoC,GAAID,EAAK,EACjGA,IAAQ,mBAAyBJ,GAAa,SAC7CrB,EAACO,EAAA,CAAgB,KAAMmB,EAAsC,GAAID,EAAK,EAEvEA,IAAQ,mBAAyBzB,EAACQ,EAAA,CAAgB,KAAMkB,EAAsC,GAAID,EAAK,EACvGA,IAAQ,2BACPzB,EAACS,EAAA,CACC,KAAMiB,EACN,GAAID,EACJ,WACEP,EAAe,QAAU,QACrB,CACE,SAAU,aACV,iBACE,4EACJ,EACA,CACE,SAAU,iBACV,iBAAkB,gBACpB,EAER,EAEDO,IAAQ,yBACPzB,EAACU,EAAA,CACC,KAAMgB,EACN,GAAID,EACN,EAEDA,IAAQ,qBAA2BzB,EAACW,EAAA,CAAkB,KAAMe,EAAwC,GAAID,EAAK,EAC7GA,IAAQ,eAAqCzB,EAACY,EAAA,CAAY,KAAMc,EAAkC,GAAID,EAAK,EAC3GA,IAAQ,sBAA4BzB,EAACa,EAAA,CAAmB,KAAMa,EAAyC,GAAID,EAAK,EAChHA,IAAQ,cAAqBzB,EAACc,EAAA,CAAW,KAAMY,EAAiC,GAAID,EAAK,EACzFA,IAAQ,iBACPzB,EAAC,OAAI,UAAU,qEAAqE,GAExF,EAvCyB,IAyC7B,CAAC,EACH,GACF,EACF,EACF",
|
|
6
|
+
"names": ["Fragment", "jsx", "jsxs", "classNames", "HeadlessProvider", "RegistrationProvider", "CreditsProvider", "CreditsBanner", "CreditsInfoCard", "CreditsBenefits", "CreditsWaysToGetCredits", "CreditsAnkersolixTask", "CreditsRedeemList", "CreditsCash", "CreditsMemberPrice", "CreditsFaq", "CreditsNavigation", "ComponentKey", "CreditsTemplate", "headlessConfig", "siteConfig", "creditsConfig", "userContext", "pageConfig", "registrationContext", "gtm", "key", "componentCopy"]
|
|
7
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './Credits';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export*from"./
|
|
1
|
+
export*from"./Credits";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anker-in/campaign-ui",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2-beta.2",
|
|
4
4
|
"description": "Campaign UI components and utilities for Anker projects",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
@@ -80,6 +80,7 @@
|
|
|
80
80
|
"clsx": "^2.1.1",
|
|
81
81
|
"crypto-js": "^4.2.0",
|
|
82
82
|
"dayjs": "^1.11.7",
|
|
83
|
+
"decimal.js": "^10.4.3",
|
|
83
84
|
"gsap": "^3.12.5",
|
|
84
85
|
"monaco-editor": "^0.52.0",
|
|
85
86
|
"postcss": "^8.4.38",
|
|
@@ -87,8 +88,8 @@
|
|
|
87
88
|
"swiper": "^11.1.3",
|
|
88
89
|
"tailwind-merge": "^2.3.0",
|
|
89
90
|
"tailwindcss": "^3.4.3",
|
|
90
|
-
"@anker-in/headless-ui": "1.
|
|
91
|
-
"@anker-in/lib": "1.1.1"
|
|
91
|
+
"@anker-in/headless-ui": "1.1.25-alpha.1767516866003",
|
|
92
|
+
"@anker-in/lib": "1.1.2-beta.1"
|
|
92
93
|
},
|
|
93
94
|
"publishConfig": {
|
|
94
95
|
"access": "public",
|
|
@@ -6,8 +6,9 @@ import { useCreditsContext } from '../provider'
|
|
|
6
6
|
import { useHeadlessContext } from '@anker-in/lib'
|
|
7
7
|
|
|
8
8
|
function useActivities({ page, pageSize, options = {} }: { page: number; pageSize: number; options?: any }) {
|
|
9
|
-
const { profile, isLoadingProfile } = useCreditsContext()
|
|
10
|
-
const { brand } = useHeadlessContext()
|
|
9
|
+
const { profile, isLoadingProfile, alpcBrand } = useCreditsContext()
|
|
10
|
+
const { brand: headlessBrand } = useHeadlessContext()
|
|
11
|
+
const brand = alpcBrand || headlessBrand
|
|
11
12
|
const [activities, setActivities] = useState<CreditLogResponse[]>([])
|
|
12
13
|
const [total, setTotal] = useState(0)
|
|
13
14
|
|
|
@@ -192,11 +192,13 @@ export const useAlpcFetch = <TData>(
|
|
|
192
192
|
swrOptions?: UseAlpcFetchOptionsSwrOptions<TData, Error>
|
|
193
193
|
) => {
|
|
194
194
|
const [retry, setRetry] = useState(false)
|
|
195
|
-
const { removeProfile } = useCreditsContext()
|
|
195
|
+
const { removeProfile, alpcBrand } = useCreditsContext()
|
|
196
196
|
|
|
197
197
|
const { enable, ...otherSwrOptions } = swrOptions || {}
|
|
198
198
|
|
|
199
|
-
const { locale = '', brand } = useHeadlessContext()
|
|
199
|
+
const { locale = '', brand: headlessBrand } = useHeadlessContext()
|
|
200
|
+
// 优先使用 creditsContext 中的 alpcBrand,如果没有则使用 headlessConfig 中的 brand
|
|
201
|
+
const brand = alpcBrand || headlessBrand
|
|
200
202
|
|
|
201
203
|
const { queryKey = [], body: fetchBody = {}, headers, ...fetchOptions } = options
|
|
202
204
|
const fetchEnable = enable ?? true
|
|
@@ -249,9 +251,11 @@ export const useAlpcFetch = <TData>(
|
|
|
249
251
|
|
|
250
252
|
export const useAlpcMutation = <TData, TBody>(options: MutationOptions, mutationOptions?: UseMutationConfig<TData>) => {
|
|
251
253
|
const [retry, setRetry] = useState(false)
|
|
252
|
-
const { removeProfile } = useCreditsContext()
|
|
254
|
+
const { removeProfile, alpcBrand } = useCreditsContext()
|
|
253
255
|
|
|
254
|
-
const { locale = '', brand } = useHeadlessContext()
|
|
256
|
+
const { locale = '', brand: headlessBrand } = useHeadlessContext()
|
|
257
|
+
// 优先使用 creditsContext 中的 alpcBrand,如果没有则使用 headlessConfig 中的 brand
|
|
258
|
+
const brand = alpcBrand || headlessBrand
|
|
255
259
|
|
|
256
260
|
const { url, initData, headers, ...fetchOptions } = options
|
|
257
261
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ProductVariant } from '@anker-in/lib'
|
|
2
|
+
import { FunctionMemberPriceResult } from '../memberPriceTypes'
|
|
3
|
+
import { getFunctionMemberPrice } from '../utils/getFunctionMemberPrice'
|
|
4
|
+
import { useMemo } from 'react'
|
|
5
|
+
import { useCreditsContext } from '../provider'
|
|
6
|
+
import { useHeadlessContext } from '@anker-in/lib'
|
|
7
|
+
|
|
8
|
+
// 计算单件商品的会员价
|
|
9
|
+
export const useFunctionMemberPrice = ({ variant }: { variant?: ProductVariant }) => {
|
|
10
|
+
const { memberPriceDiscount } = useCreditsContext()
|
|
11
|
+
const { locale = '' } = useHeadlessContext()
|
|
12
|
+
|
|
13
|
+
const memberPrice:
|
|
14
|
+
| FunctionMemberPriceResult
|
|
15
|
+
| (Partial<FunctionMemberPriceResult> & {
|
|
16
|
+
hasMemberPrice: false
|
|
17
|
+
}) = useMemo(() => {
|
|
18
|
+
const result = getFunctionMemberPrice({
|
|
19
|
+
memberPriceDiscount: memberPriceDiscount,
|
|
20
|
+
currencyCode: variant?.price.currencyCode,
|
|
21
|
+
variant,
|
|
22
|
+
locale,
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
if (result) {
|
|
26
|
+
return result as FunctionMemberPriceResult
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return { hasMemberPrice: false }
|
|
30
|
+
}, [locale, memberPriceDiscount, variant])
|
|
31
|
+
|
|
32
|
+
return memberPrice
|
|
33
|
+
}
|
|
@@ -15,8 +15,9 @@ function useMyRewards({
|
|
|
15
15
|
pageSize: number
|
|
16
16
|
consumeType?: AlpcConsumeType
|
|
17
17
|
}) {
|
|
18
|
-
const { isLoadingProfile, profile } = useCreditsContext()
|
|
19
|
-
const { brand, locale, appName } = useHeadlessContext()
|
|
18
|
+
const { isLoadingProfile, profile, alpcBrand } = useCreditsContext()
|
|
19
|
+
const { brand: headlessBrand, locale, appName } = useHeadlessContext()
|
|
20
|
+
const brand = alpcBrand || headlessBrand
|
|
20
21
|
const isLogin = !!profile
|
|
21
22
|
|
|
22
23
|
const [myRewards, setMyRewards] = useState<RedeemLogResponse[]>([])
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ALPC_COUNTRY_MAP } from '../const'
|
|
2
2
|
import { useAlpcMutation, type UseMutationConfig } from './useAlpcFetch'
|
|
3
3
|
import { useHeadlessContext } from '@anker-in/lib'
|
|
4
|
+
import { useCreditsContext } from '../provider'
|
|
4
5
|
|
|
5
6
|
type RedeemCouponResponse = {
|
|
6
7
|
data: {
|
|
@@ -12,7 +13,9 @@ type RedeemCouponResponse = {
|
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
export const useRedeemCoupon = (mutationOptions: UseMutationConfig<RedeemCouponResponse> = {}) => {
|
|
15
|
-
const {
|
|
16
|
+
const { alpcBrand } = useCreditsContext()
|
|
17
|
+
const { locale, appName, brand: headlessBrand } = useHeadlessContext()
|
|
18
|
+
const brand = alpcBrand || headlessBrand
|
|
16
19
|
|
|
17
20
|
return useAlpcMutation<
|
|
18
21
|
RedeemCouponResponse,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ALPC_COUNTRY_MAP } from '../const'
|
|
2
2
|
import { useAlpcMutation, type UseMutationConfig } from './useAlpcFetch'
|
|
3
3
|
import { useHeadlessContext } from '@anker-in/lib'
|
|
4
|
+
import { useCreditsContext } from '../provider'
|
|
4
5
|
|
|
5
6
|
type RedeemProductResponse = {
|
|
6
7
|
code: number
|
|
@@ -10,7 +11,9 @@ type RedeemProductResponse = {
|
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
export const useRedeemProduct = (mutationOptions: UseMutationConfig<RedeemProductResponse> = {}) => {
|
|
13
|
-
const {
|
|
14
|
+
const { alpcBrand } = useCreditsContext()
|
|
15
|
+
const { storeDomain, locale, appName, brand: headlessBrand } = useHeadlessContext()
|
|
16
|
+
const brand = alpcBrand || headlessBrand
|
|
14
17
|
|
|
15
18
|
return useAlpcMutation<
|
|
16
19
|
RedeemProductResponse,
|
|
@@ -8,8 +8,9 @@ import { useHeadlessContext } from '@anker-in/lib'
|
|
|
8
8
|
|
|
9
9
|
function useRedeemableList() {
|
|
10
10
|
let locale = '' as string
|
|
11
|
-
const { profile, isLoadingProfile } = useCreditsContext()
|
|
12
|
-
const { locale: contextLocale, brand } = useHeadlessContext()
|
|
11
|
+
const { profile, isLoadingProfile, alpcBrand } = useCreditsContext()
|
|
12
|
+
const { locale: contextLocale, brand: headlessBrand } = useHeadlessContext()
|
|
13
|
+
const brand = alpcBrand || headlessBrand
|
|
13
14
|
|
|
14
15
|
if (contextLocale === 'pl') {
|
|
15
16
|
locale = 'eu'
|
|
@@ -30,7 +31,6 @@ function useRedeemableList() {
|
|
|
30
31
|
page: 1,
|
|
31
32
|
page_size: 20,
|
|
32
33
|
country: (ALPC_COUNTRY_MAP.get(locale) || locale)?.toUpperCase(),
|
|
33
|
-
task_target: 1, // 1: 'app', 2: 'website'
|
|
34
34
|
},
|
|
35
35
|
})
|
|
36
36
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Function 折扣类型
|
|
2
|
+
export enum FunctionDiscountType {
|
|
3
|
+
Percentage = 1,
|
|
4
|
+
FixedAmount,
|
|
5
|
+
FixedPrice,
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// 小数位取舍方式
|
|
9
|
+
export enum RoundSelected {
|
|
10
|
+
RoundHighest = 'round_highest',
|
|
11
|
+
RoundLowest = 'round_lowest',
|
|
12
|
+
RoundNearest = 'round_nearest',
|
|
13
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { FunctionDiscountType, RoundSelected } from './memberPriceConst'
|
|
2
|
+
|
|
3
|
+
// 价格结尾配置
|
|
4
|
+
export type PriceEndingConf = {
|
|
5
|
+
apply_price_ending: boolean
|
|
6
|
+
one_decimal_place: string
|
|
7
|
+
two_decimal_place: string
|
|
8
|
+
round_selected: RoundSelected
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// 折扣配置
|
|
12
|
+
export type DiscountConfig = {
|
|
13
|
+
discount_type: FunctionDiscountType
|
|
14
|
+
discount_value: number
|
|
15
|
+
price_ending_conf?: PriceEndingConf
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// 会员价配置类型
|
|
19
|
+
export type FunctionMemberPriceConfig = {
|
|
20
|
+
rule_id: string
|
|
21
|
+
result_detail: {
|
|
22
|
+
member_discounts?: {
|
|
23
|
+
user_identity: number // 用户身份:1-普通会员,2-高级会员等
|
|
24
|
+
main_products: {
|
|
25
|
+
all_store_variant: boolean
|
|
26
|
+
variants: {
|
|
27
|
+
variant_id: string
|
|
28
|
+
sku: string
|
|
29
|
+
handle: string
|
|
30
|
+
}[]
|
|
31
|
+
}
|
|
32
|
+
discount_conf: DiscountConfig
|
|
33
|
+
}[]
|
|
34
|
+
}
|
|
35
|
+
discount_combinations: {
|
|
36
|
+
other_product_discounts: boolean
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// 会员价计算结果
|
|
41
|
+
export type FunctionMemberPriceResult = {
|
|
42
|
+
hasMemberPrice: boolean
|
|
43
|
+
useCoupon: boolean
|
|
44
|
+
originalPrice: number
|
|
45
|
+
originalPriceWithCurrency: string
|
|
46
|
+
salePrice: number
|
|
47
|
+
salePriceWithCurrency: string
|
|
48
|
+
salePriceWithoutCoupon: number
|
|
49
|
+
salePriceWithoutCouponWithCurrency: string
|
|
50
|
+
savePrice: number
|
|
51
|
+
savePriceWithCurrency: string
|
|
52
|
+
savePriceWithoutCoupon: number
|
|
53
|
+
savePriceWithoutCouponWithCurrency: string
|
|
54
|
+
}
|
|
@@ -2,6 +2,7 @@ import { createContext, PropsWithChildren, useContext } from 'react'
|
|
|
2
2
|
import type { DTC_TASK_TYPE } from './const'
|
|
3
3
|
import type { CreditInfoResponse } from './response'
|
|
4
4
|
import { CreditsPageCommon } from '../type'
|
|
5
|
+
import { FunctionMemberPriceConfig } from './memberPriceTypes'
|
|
5
6
|
|
|
6
7
|
type Context = {
|
|
7
8
|
profile: any
|
|
@@ -18,6 +19,8 @@ type Context = {
|
|
|
18
19
|
pageGroup: string
|
|
19
20
|
}
|
|
20
21
|
pageCommon: CreditsPageCommon
|
|
22
|
+
memberPriceDiscount?: FunctionMemberPriceConfig[]
|
|
23
|
+
alpcBrand?: string
|
|
21
24
|
}
|
|
22
25
|
|
|
23
26
|
export const CreditsContext = createContext<Context>({
|
|
@@ -34,6 +37,8 @@ export const CreditsContext = createContext<Context>({
|
|
|
34
37
|
pageGroup: '',
|
|
35
38
|
},
|
|
36
39
|
pageCommon: {},
|
|
40
|
+
memberPriceDiscount: undefined,
|
|
41
|
+
alpcBrand: undefined,
|
|
37
42
|
})
|
|
38
43
|
|
|
39
44
|
export function CreditsProvider({
|
|
@@ -50,6 +55,8 @@ export function CreditsProvider({
|
|
|
50
55
|
fetchCreditInfo,
|
|
51
56
|
gtm,
|
|
52
57
|
pageCommon,
|
|
58
|
+
memberPriceDiscount,
|
|
59
|
+
alpcBrand,
|
|
53
60
|
}: PropsWithChildren<Context>) {
|
|
54
61
|
return (
|
|
55
62
|
<CreditsContext.Provider
|
|
@@ -66,6 +73,8 @@ export function CreditsProvider({
|
|
|
66
73
|
customerLoading,
|
|
67
74
|
gtm,
|
|
68
75
|
pageCommon,
|
|
76
|
+
memberPriceDiscount,
|
|
77
|
+
alpcBrand,
|
|
69
78
|
}}
|
|
70
79
|
>
|
|
71
80
|
{children}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { FunctionDiscountType, RoundSelected } from '../memberPriceConst'
|
|
2
|
+
import { DiscountConfig } from '../memberPriceTypes'
|
|
3
|
+
import Decimal from 'decimal.js'
|
|
4
|
+
|
|
5
|
+
// Function 计算折后价
|
|
6
|
+
export const functionDiscountCalculate = ({
|
|
7
|
+
config,
|
|
8
|
+
price,
|
|
9
|
+
}: {
|
|
10
|
+
config: DiscountConfig
|
|
11
|
+
price: number
|
|
12
|
+
}) => {
|
|
13
|
+
const { apply_price_ending, one_decimal_place, two_decimal_place, round_selected } =
|
|
14
|
+
config.price_ending_conf || {}
|
|
15
|
+
|
|
16
|
+
let salePrice = new Decimal(price)
|
|
17
|
+
|
|
18
|
+
switch (config.discount_type) {
|
|
19
|
+
// 百分比折扣
|
|
20
|
+
case FunctionDiscountType.Percentage:
|
|
21
|
+
salePrice = salePrice.mul(100 - config.discount_value).div(100)
|
|
22
|
+
break
|
|
23
|
+
// 固定金额折扣
|
|
24
|
+
case FunctionDiscountType.FixedAmount:
|
|
25
|
+
salePrice = salePrice.sub(config.discount_value)
|
|
26
|
+
break
|
|
27
|
+
// 固定价格折扣
|
|
28
|
+
case FunctionDiscountType.FixedPrice:
|
|
29
|
+
salePrice = new Decimal(config.discount_value)
|
|
30
|
+
break
|
|
31
|
+
default:
|
|
32
|
+
break
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (apply_price_ending) {
|
|
36
|
+
// 小数位取舍
|
|
37
|
+
switch (round_selected) {
|
|
38
|
+
case RoundSelected.RoundHighest:
|
|
39
|
+
salePrice = salePrice.ceil()
|
|
40
|
+
break
|
|
41
|
+
case RoundSelected.RoundLowest:
|
|
42
|
+
salePrice = salePrice.floor()
|
|
43
|
+
break
|
|
44
|
+
case RoundSelected.RoundNearest:
|
|
45
|
+
salePrice = salePrice.round()
|
|
46
|
+
break
|
|
47
|
+
default:
|
|
48
|
+
salePrice = new Decimal(salePrice.toFixed(2, Decimal.ROUND_DOWN))
|
|
49
|
+
break
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const priceEnding = salePrice.toString().split('.')
|
|
53
|
+
salePrice = new Decimal(priceEnding[0] + '.' + one_decimal_place + two_decimal_place)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return salePrice.toNumber()
|
|
57
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { formatPrice } from '../utils'
|
|
2
|
+
import { FunctionMemberPriceConfig, FunctionMemberPriceResult } from '../memberPriceTypes'
|
|
3
|
+
import { ProductVariant } from '@anker-in/lib'
|
|
4
|
+
import { functionDiscountCalculate } from './functionDiscountCalculate'
|
|
5
|
+
import Decimal from 'decimal.js'
|
|
6
|
+
import { getFunctionMemberPriceDiscountConfig } from './getFunctionMemberPriceDiscountConfig'
|
|
7
|
+
import variantGetCoupon from './variantGetCoupon'
|
|
8
|
+
|
|
9
|
+
// 计算单件商品的会员价
|
|
10
|
+
export const getFunctionMemberPrice = ({
|
|
11
|
+
memberPriceDiscount,
|
|
12
|
+
currencyCode,
|
|
13
|
+
variant,
|
|
14
|
+
locale,
|
|
15
|
+
}: {
|
|
16
|
+
memberPriceDiscount?: FunctionMemberPriceConfig[]
|
|
17
|
+
currencyCode?: string
|
|
18
|
+
variant?: ProductVariant
|
|
19
|
+
locale: string
|
|
20
|
+
}) => {
|
|
21
|
+
const couponData = variantGetCoupon({ variant })
|
|
22
|
+
|
|
23
|
+
// variant对应的会员价折扣配置
|
|
24
|
+
const { memberPriceDiscountConfig, activeMemberPriceConfig } = getFunctionMemberPriceDiscountConfig({
|
|
25
|
+
config: memberPriceDiscount,
|
|
26
|
+
variant,
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
const useCoupon = !!activeMemberPriceConfig?.discount_combinations.other_product_discounts
|
|
30
|
+
|
|
31
|
+
if (!memberPriceDiscountConfig) {
|
|
32
|
+
return false as false
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const originalPrice = {
|
|
36
|
+
amount: variant?.price.amount || 0,
|
|
37
|
+
priceWithCurrency: formatPrice({
|
|
38
|
+
amount: variant?.price.amount || 0,
|
|
39
|
+
currencyCode: currencyCode || 'USD',
|
|
40
|
+
locale,
|
|
41
|
+
}),
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const salePriceWithoutCouponAmount = memberPriceDiscountConfig
|
|
45
|
+
? functionDiscountCalculate({
|
|
46
|
+
config: memberPriceDiscountConfig,
|
|
47
|
+
price: variant?.price.amount || 0,
|
|
48
|
+
})
|
|
49
|
+
: variant?.price.amount || 0
|
|
50
|
+
const salePriceWithoutCoupon = {
|
|
51
|
+
amount: salePriceWithoutCouponAmount,
|
|
52
|
+
priceWithCurrency: formatPrice({
|
|
53
|
+
amount: salePriceWithoutCouponAmount,
|
|
54
|
+
currencyCode: currencyCode || 'USD',
|
|
55
|
+
locale,
|
|
56
|
+
}),
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// function 会员价是在原价的基础上进行计算,暂不支持折后价
|
|
60
|
+
let salePriceAmount = salePriceWithoutCouponAmount
|
|
61
|
+
|
|
62
|
+
// 减去code的优惠
|
|
63
|
+
if (couponData?.variant_price4wscode && variant && useCoupon) {
|
|
64
|
+
if (useCoupon) {
|
|
65
|
+
// code的优惠金额
|
|
66
|
+
const codeSaveAmountDecimal = new Decimal(variant.price.amount).minus(couponData.variant_price4wscode)
|
|
67
|
+
salePriceAmount = new Decimal(salePriceWithoutCouponAmount).minus(codeSaveAmountDecimal).toNumber()
|
|
68
|
+
} else {
|
|
69
|
+
// 不能与 code 同时使用,需要判断会员价是否小于 code 的优惠金额,如果小于则当做没有会员价
|
|
70
|
+
const codeSaveAmountDecimal = new Decimal(variant.price.amount).minus(couponData.variant_price4wscode)
|
|
71
|
+
if (salePriceWithoutCouponAmount > codeSaveAmountDecimal.toNumber()) {
|
|
72
|
+
return false as false
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const salePrice = {
|
|
78
|
+
amount: salePriceAmount,
|
|
79
|
+
priceWithCurrency: formatPrice({
|
|
80
|
+
amount: salePriceAmount,
|
|
81
|
+
currencyCode: currencyCode || 'USD',
|
|
82
|
+
locale,
|
|
83
|
+
}),
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const savePriceAmount = new Decimal(originalPrice.amount).minus(salePrice.amount).toNumber()
|
|
87
|
+
const savePrice = {
|
|
88
|
+
amount: savePriceAmount,
|
|
89
|
+
priceWithCurrency: formatPrice({
|
|
90
|
+
amount: savePriceAmount,
|
|
91
|
+
currencyCode: currencyCode || 'USD',
|
|
92
|
+
locale,
|
|
93
|
+
maximumFractionDigits: 2,
|
|
94
|
+
}),
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const savePriceWithoutCouponAmount = new Decimal(originalPrice.amount)
|
|
98
|
+
.minus(salePriceWithoutCoupon.amount)
|
|
99
|
+
.toNumber()
|
|
100
|
+
const savePriceWithoutCoupon = {
|
|
101
|
+
amount: savePriceWithoutCouponAmount,
|
|
102
|
+
priceWithCurrency: formatPrice({
|
|
103
|
+
amount: savePriceWithoutCouponAmount,
|
|
104
|
+
currencyCode: currencyCode || 'USD',
|
|
105
|
+
locale,
|
|
106
|
+
maximumFractionDigits: 2,
|
|
107
|
+
}),
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const result: FunctionMemberPriceResult = {
|
|
111
|
+
// 是否存在会员价
|
|
112
|
+
hasMemberPrice: !!memberPriceDiscountConfig,
|
|
113
|
+
useCoupon,
|
|
114
|
+
// 原价
|
|
115
|
+
originalPrice: originalPrice.amount,
|
|
116
|
+
originalPriceWithCurrency: originalPrice.priceWithCurrency as string,
|
|
117
|
+
// 使用券后的折后价
|
|
118
|
+
salePrice: salePrice.amount,
|
|
119
|
+
salePriceWithCurrency: salePrice.priceWithCurrency as string,
|
|
120
|
+
|
|
121
|
+
// 不使用券的折后价
|
|
122
|
+
salePriceWithoutCoupon: salePriceWithoutCoupon.amount,
|
|
123
|
+
salePriceWithoutCouponWithCurrency: salePriceWithoutCoupon.priceWithCurrency as string,
|
|
124
|
+
|
|
125
|
+
// 包含使用券的节省金额
|
|
126
|
+
savePrice: savePrice.amount,
|
|
127
|
+
savePriceWithCurrency: savePrice.priceWithCurrency as string,
|
|
128
|
+
|
|
129
|
+
// 不使用券的节省金额
|
|
130
|
+
savePriceWithoutCoupon: savePriceWithoutCoupon.amount,
|
|
131
|
+
savePriceWithoutCouponWithCurrency: savePriceWithoutCoupon.priceWithCurrency as string,
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return result
|
|
135
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { DiscountConfig, FunctionMemberPriceConfig } from '../memberPriceTypes'
|
|
2
|
+
import { ProductVariant } from '@anker-in/lib'
|
|
3
|
+
import { atobID } from './atobID'
|
|
4
|
+
|
|
5
|
+
// 获取会员价折扣配置
|
|
6
|
+
export const getFunctionMemberPriceDiscountConfig = ({
|
|
7
|
+
config,
|
|
8
|
+
variant,
|
|
9
|
+
}: {
|
|
10
|
+
config?: FunctionMemberPriceConfig[]
|
|
11
|
+
variant?: ProductVariant
|
|
12
|
+
}) => {
|
|
13
|
+
let memberPriceDiscountConfig: DiscountConfig | undefined
|
|
14
|
+
let activeMemberPriceConfig: FunctionMemberPriceConfig | undefined
|
|
15
|
+
|
|
16
|
+
if (!config || !variant) {
|
|
17
|
+
return {
|
|
18
|
+
memberPriceDiscountConfig,
|
|
19
|
+
activeMemberPriceConfig,
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
for (const configItem of config) {
|
|
24
|
+
memberPriceDiscountConfig = configItem.result_detail.member_discounts?.find(discountItem => {
|
|
25
|
+
if (discountItem.main_products.all_store_variant) {
|
|
26
|
+
return discountItem
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return discountItem.main_products.variants.find(
|
|
30
|
+
variantConfig => String(variantConfig.variant_id) === atobID(variant.id as string)
|
|
31
|
+
)
|
|
32
|
+
})?.discount_conf
|
|
33
|
+
|
|
34
|
+
if (memberPriceDiscountConfig) {
|
|
35
|
+
activeMemberPriceConfig = configItem
|
|
36
|
+
break
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (!memberPriceDiscountConfig) {
|
|
41
|
+
return {
|
|
42
|
+
memberPriceDiscountConfig,
|
|
43
|
+
activeMemberPriceConfig,
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return {
|
|
48
|
+
memberPriceDiscountConfig,
|
|
49
|
+
activeMemberPriceConfig,
|
|
50
|
+
}
|
|
51
|
+
}
|