@anker-in/shopify-react 0.1.1-beta.35 → 0.1.1-beta.37
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/hooks/index.d.mts +16 -13
- package/dist/hooks/index.d.ts +16 -13
- package/dist/hooks/index.js +119 -81
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +119 -82
- package/dist/hooks/index.mjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +119 -81
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +119 -82
- package/dist/index.mjs.map +1 -1
- package/dist/provider/index.js +65 -39
- package/dist/provider/index.js.map +1 -1
- package/dist/provider/index.mjs +65 -39
- package/dist/provider/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { CartContextValue, CartProvider, CartProviderProps, LoadingState, ShopifyContext, ShopifyContextValue, ShopifyProvider, ShopifyProviderProps, useCartContext, useShopify } from './provider/index.mjs';
|
|
2
2
|
export { C as CookieAdapter, a as CookieOptions, P as PerformanceAdapter, R as RouterAdapter, U as UserContextAdapter } from './types-SKDHauqk.mjs';
|
|
3
3
|
export { BrowserPerformanceAdapter, browserCartCookieAdapter, browserCookieAdapter } from './adapters/index.mjs';
|
|
4
|
-
export { AddCartLinesInput, ApplyCartCodesInput, AutoFreeGift, AutoFreeGiftCartLineInput, AutoFreeGiftConfig, AutoFreeGiftItem, AutoFreeGiftList, AutoFreeGiftMainProduct, BuyNowInput, BuyRuleType, CODE_AMOUNT_KEY, CUSTOMER_ATTRIBUTE_KEY, CUSTOMER_SCRIPT_GIFT_KEY, Config, CreateCartInput, DiscountLabel, FormattedGift, FunctionGiftResult, GeoLocationData, GiftProduct, GiftProductItem, GiftTier, HasPlusMemberInCartResult, ImageMedia, LocaleMapping, MAIN_PRODUCT_CODE, MainProductInfo, NormalizedSearchResultItem, Options, OrderBasePriceType, OrderDiscountConfig, OrderDiscountResult, OrderDiscountType, PlusMemberContext, PlusMemberContextValue, PlusMemberProvider, PlusMemberProviderProps, PriceBasePriceType, PriceDiscountConfig, PriceDiscountType, RemoveCartCodesInput, RemoveCartLinesInput, RewardItem, RuleCondition, RuleType, SCRIPT_CODE_AMOUNT_KEY, SearchResult, SearchResultType, SelectedOptionsResult, ShippingMethodsContext, SiteInfo, SpendMoneyType, TieredDiscount, UpdateCartAttributesInput, UseAllBlogsOptions, UseAllCollectionsOptions, UseAllProductsOptions, UseArticleOptions, UseArticlesInBlogOptions, UseArticlesOptions, UseAutoRemovePlusMemberInCartProps, UseBlogOptions, UseBuyNowOptions, UseCalcGiftsFromLinesOptions, UseCalcGiftsFromLinesResult, UseCollectionOptions, UseCollectionsOptions, UseExposureOptions, UseGeoLocationOptions, UseHasPlusMemberInCartProps, UseIntersectionOptions, UsePriceOptions, UsePriceResult, UseProductOptions, UseProductsByHandlesOptions, UseScriptAutoFreeGiftResult, UseSearchOptions, UseShippingMethodsOptions, UseShippingMethodsResult, UseSiteOptions, UseUpdatePlusMemberDeliveryOptionsProps, VariantItem, VariantMedia, VideoMedia, checkAttributesUpdateNeeded, clearGeoLocationCache, createMockCartFromLines, currencyCodeMapping, defaultSWRMutationConfiguration, formatFunctionAutoFreeGift, formatScriptAutoFreeGift, getCachedGeoLocation, getDiscountEnvAttributeValue, getMatchedMainProductSubTotal, getQuery, getReferralAttributes, normalizeAddToCartLines, preCheck, safeParse, useAddCartLines, useAddToCart, useAllBlogs, useAllCollections, useAllProducts, useApplyCartCodes, useArticle, useArticles, useArticlesInBlog, useAutoRemovePlusMemberInCart, useBlog, useBuyNow, useCalcAutoFreeGift, useCalcGiftsFromLines, useCalcOrderDiscount, useCartAttributes, useCartItemQuantityLimit, useCollection, useCollections, useCreateCart, useExposure, useGeoLocation, useHasPlusMemberInCart, useIntersection, usePlusAnnualProductVariant, usePlusMemberCheckoutCustomAttributes, usePlusMemberContext, usePlusMemberDeliveryCodes, usePlusMemberItemCustomAttributes, usePlusMemberNeedAddToCart, usePlusMonthlyProductVariant, usePrice, useProduct, useProductUrl, useProductsByHandles, useRemoveCartCodes, useRemoveCartLines, useReplaceCartPlusMember, useScriptAutoFreeGift, useSearch, useSelectedOptions, useShippingMethodAvailableCheck, useShippingMethods, useSite, useUpdateCartAttributes, useUpdateCartLines, useUpdateLineCodeAmountAttributes, useUpdatePlusMemberDeliveryOptions, useUpdateVariantQuery, useVariant, useVariantMedia } from './hooks/index.mjs';
|
|
4
|
+
export { AddCartLinesInput, ApplyCartCodesInput, AutoFreeGift, AutoFreeGiftCartLineInput, AutoFreeGiftConfig, AutoFreeGiftItem, AutoFreeGiftList, AutoFreeGiftMainProduct, BuyNowInput, BuyRuleType, CODE_AMOUNT_KEY, CUSTOMER_ATTRIBUTE_KEY, CUSTOMER_SCRIPT_GIFT_KEY, Config, CreateCartInput, DiscountLabel, FormattedGift, FunctionGiftResult, GeoLocationData, GiftProduct, GiftProductItem, GiftTier, HasPlusMemberInCartResult, ImageMedia, LocaleMapping, MAIN_PRODUCT_CODE, MainProductInfo, NormalizedSearchResultItem, Options, OrderBasePriceType, OrderDiscountConfig, OrderDiscountResult, OrderDiscountType, PlusMemberContext, PlusMemberContextValue, PlusMemberProvider, PlusMemberProviderProps, PriceBasePriceType, PriceDiscountConfig, PriceDiscountType, RemoveCartCodesInput, RemoveCartLinesInput, RewardItem, RuleCondition, RuleType, SCRIPT_CODE_AMOUNT_KEY, SearchResult, SearchResultType, SelectedOptionsResult, ShippingMethodsContext, SiteInfo, SpendMoneyType, TieredDiscount, UpdateCartAttributesInput, UseAllBlogsOptions, UseAllCollectionsOptions, UseAllProductsOptions, UseArticleOptions, UseArticlesInBlogOptions, UseArticlesOptions, UseAutoRemovePlusMemberInCartProps, UseBlogOptions, UseBuyNowOptions, UseCalcGiftsFromLinesOptions, UseCalcGiftsFromLinesResult, UseCollectionOptions, UseCollectionsOptions, UseExposureOptions, UseGeoLocationOptions, UseHasPlusMemberInCartProps, UseIntersectionOptions, UsePriceOptions, UsePriceResult, UseProductOptions, UseProductsByHandlesOptions, UseScriptAutoFreeGiftResult, UseSearchOptions, UseShippingMethodsOptions, UseShippingMethodsResult, UseSiteOptions, UseUpdatePlusMemberDeliveryOptionsProps, VariantItem, VariantMedia, VideoMedia, checkAttributesUpdateNeeded, clearGeoLocationCache, createMockCartFromLines, currencyCodeMapping, defaultSWRMutationConfiguration, formatFunctionAutoFreeGift, formatScriptAutoFreeGift, getCachedGeoLocation, getDiscountEnvAttributeValue, getMatchedMainProductSubTotal, getQuery, getReferralAttributes, normalizeAddToCartLines, preCheck, safeParse, useAddCartLines, useAddToCart, useAllBlogs, useAllCollections, useAllProducts, useApplyCartCodes, useArticle, useArticles, useArticlesInBlog, useAutoRemovePlusMemberInCart, useAvailableDeliveryCoupon, useBlog, useBuyNow, useCalcAutoFreeGift, useCalcGiftsFromLines, useCalcOrderDiscount, useCartAttributes, useCartItemQuantityLimit, useCollection, useCollections, useCreateCart, useExposure, useGeoLocation, useHasPlusMemberInCart, useIntersection, usePlusAnnualProductVariant, usePlusMemberCheckoutCustomAttributes, usePlusMemberContext, usePlusMemberDeliveryCodes, usePlusMemberItemCustomAttributes, usePlusMemberNeedAddToCart, usePlusMonthlyProductVariant, usePrice, useProduct, useProductUrl, useProductsByHandles, useRemoveCartCodes, useRemoveCartLines, useReplaceCartPlusMember, useScriptAutoFreeGift, useSearch, useSelectedOptions, useShippingMethodAvailableCheck, useShippingMethods, useSite, useUpdateCartAttributes, useUpdateCartLines, useUpdateLineCodeAmountAttributes, useUpdatePlusMemberDeliveryOptions, useUpdateVariantQuery, useVariant, useVariantMedia } from './hooks/index.mjs';
|
|
5
5
|
export { a as AddToCartInput, A as AddToCartLineItem, B as BuyNowTrackConfig, g as DeliveryCustomData, h as DeliveryData, D as DeliveryPlusType, G as GtmParams, P as PLUS_MEMBER_TYPE, b as PlusMemberMode, e as PlusMemberSettingsMetafields, d as PlusMemberShippingMethodConfig, c as PlusMemberShippingMethodMetafields, f as SelectedPlusMemberProduct, S as ShippingMethodMode, U as UseAddToCartOptions, i as gaTrack, l as trackAddToCartFBQ, t as trackAddToCartGA, j as trackBeginCheckoutGA, m as trackBuyNowFBQ, k as trackBuyNowGA } from './types-BSsb8OPm.mjs';
|
|
6
6
|
export * from '@anker-in/shopify-sdk';
|
|
7
7
|
import 'react';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { CartContextValue, CartProvider, CartProviderProps, LoadingState, ShopifyContext, ShopifyContextValue, ShopifyProvider, ShopifyProviderProps, useCartContext, useShopify } from './provider/index.js';
|
|
2
2
|
export { C as CookieAdapter, a as CookieOptions, P as PerformanceAdapter, R as RouterAdapter, U as UserContextAdapter } from './types-SKDHauqk.js';
|
|
3
3
|
export { BrowserPerformanceAdapter, browserCartCookieAdapter, browserCookieAdapter } from './adapters/index.js';
|
|
4
|
-
export { AddCartLinesInput, ApplyCartCodesInput, AutoFreeGift, AutoFreeGiftCartLineInput, AutoFreeGiftConfig, AutoFreeGiftItem, AutoFreeGiftList, AutoFreeGiftMainProduct, BuyNowInput, BuyRuleType, CODE_AMOUNT_KEY, CUSTOMER_ATTRIBUTE_KEY, CUSTOMER_SCRIPT_GIFT_KEY, Config, CreateCartInput, DiscountLabel, FormattedGift, FunctionGiftResult, GeoLocationData, GiftProduct, GiftProductItem, GiftTier, HasPlusMemberInCartResult, ImageMedia, LocaleMapping, MAIN_PRODUCT_CODE, MainProductInfo, NormalizedSearchResultItem, Options, OrderBasePriceType, OrderDiscountConfig, OrderDiscountResult, OrderDiscountType, PlusMemberContext, PlusMemberContextValue, PlusMemberProvider, PlusMemberProviderProps, PriceBasePriceType, PriceDiscountConfig, PriceDiscountType, RemoveCartCodesInput, RemoveCartLinesInput, RewardItem, RuleCondition, RuleType, SCRIPT_CODE_AMOUNT_KEY, SearchResult, SearchResultType, SelectedOptionsResult, ShippingMethodsContext, SiteInfo, SpendMoneyType, TieredDiscount, UpdateCartAttributesInput, UseAllBlogsOptions, UseAllCollectionsOptions, UseAllProductsOptions, UseArticleOptions, UseArticlesInBlogOptions, UseArticlesOptions, UseAutoRemovePlusMemberInCartProps, UseBlogOptions, UseBuyNowOptions, UseCalcGiftsFromLinesOptions, UseCalcGiftsFromLinesResult, UseCollectionOptions, UseCollectionsOptions, UseExposureOptions, UseGeoLocationOptions, UseHasPlusMemberInCartProps, UseIntersectionOptions, UsePriceOptions, UsePriceResult, UseProductOptions, UseProductsByHandlesOptions, UseScriptAutoFreeGiftResult, UseSearchOptions, UseShippingMethodsOptions, UseShippingMethodsResult, UseSiteOptions, UseUpdatePlusMemberDeliveryOptionsProps, VariantItem, VariantMedia, VideoMedia, checkAttributesUpdateNeeded, clearGeoLocationCache, createMockCartFromLines, currencyCodeMapping, defaultSWRMutationConfiguration, formatFunctionAutoFreeGift, formatScriptAutoFreeGift, getCachedGeoLocation, getDiscountEnvAttributeValue, getMatchedMainProductSubTotal, getQuery, getReferralAttributes, normalizeAddToCartLines, preCheck, safeParse, useAddCartLines, useAddToCart, useAllBlogs, useAllCollections, useAllProducts, useApplyCartCodes, useArticle, useArticles, useArticlesInBlog, useAutoRemovePlusMemberInCart, useBlog, useBuyNow, useCalcAutoFreeGift, useCalcGiftsFromLines, useCalcOrderDiscount, useCartAttributes, useCartItemQuantityLimit, useCollection, useCollections, useCreateCart, useExposure, useGeoLocation, useHasPlusMemberInCart, useIntersection, usePlusAnnualProductVariant, usePlusMemberCheckoutCustomAttributes, usePlusMemberContext, usePlusMemberDeliveryCodes, usePlusMemberItemCustomAttributes, usePlusMemberNeedAddToCart, usePlusMonthlyProductVariant, usePrice, useProduct, useProductUrl, useProductsByHandles, useRemoveCartCodes, useRemoveCartLines, useReplaceCartPlusMember, useScriptAutoFreeGift, useSearch, useSelectedOptions, useShippingMethodAvailableCheck, useShippingMethods, useSite, useUpdateCartAttributes, useUpdateCartLines, useUpdateLineCodeAmountAttributes, useUpdatePlusMemberDeliveryOptions, useUpdateVariantQuery, useVariant, useVariantMedia } from './hooks/index.js';
|
|
4
|
+
export { AddCartLinesInput, ApplyCartCodesInput, AutoFreeGift, AutoFreeGiftCartLineInput, AutoFreeGiftConfig, AutoFreeGiftItem, AutoFreeGiftList, AutoFreeGiftMainProduct, BuyNowInput, BuyRuleType, CODE_AMOUNT_KEY, CUSTOMER_ATTRIBUTE_KEY, CUSTOMER_SCRIPT_GIFT_KEY, Config, CreateCartInput, DiscountLabel, FormattedGift, FunctionGiftResult, GeoLocationData, GiftProduct, GiftProductItem, GiftTier, HasPlusMemberInCartResult, ImageMedia, LocaleMapping, MAIN_PRODUCT_CODE, MainProductInfo, NormalizedSearchResultItem, Options, OrderBasePriceType, OrderDiscountConfig, OrderDiscountResult, OrderDiscountType, PlusMemberContext, PlusMemberContextValue, PlusMemberProvider, PlusMemberProviderProps, PriceBasePriceType, PriceDiscountConfig, PriceDiscountType, RemoveCartCodesInput, RemoveCartLinesInput, RewardItem, RuleCondition, RuleType, SCRIPT_CODE_AMOUNT_KEY, SearchResult, SearchResultType, SelectedOptionsResult, ShippingMethodsContext, SiteInfo, SpendMoneyType, TieredDiscount, UpdateCartAttributesInput, UseAllBlogsOptions, UseAllCollectionsOptions, UseAllProductsOptions, UseArticleOptions, UseArticlesInBlogOptions, UseArticlesOptions, UseAutoRemovePlusMemberInCartProps, UseBlogOptions, UseBuyNowOptions, UseCalcGiftsFromLinesOptions, UseCalcGiftsFromLinesResult, UseCollectionOptions, UseCollectionsOptions, UseExposureOptions, UseGeoLocationOptions, UseHasPlusMemberInCartProps, UseIntersectionOptions, UsePriceOptions, UsePriceResult, UseProductOptions, UseProductsByHandlesOptions, UseScriptAutoFreeGiftResult, UseSearchOptions, UseShippingMethodsOptions, UseShippingMethodsResult, UseSiteOptions, UseUpdatePlusMemberDeliveryOptionsProps, VariantItem, VariantMedia, VideoMedia, checkAttributesUpdateNeeded, clearGeoLocationCache, createMockCartFromLines, currencyCodeMapping, defaultSWRMutationConfiguration, formatFunctionAutoFreeGift, formatScriptAutoFreeGift, getCachedGeoLocation, getDiscountEnvAttributeValue, getMatchedMainProductSubTotal, getQuery, getReferralAttributes, normalizeAddToCartLines, preCheck, safeParse, useAddCartLines, useAddToCart, useAllBlogs, useAllCollections, useAllProducts, useApplyCartCodes, useArticle, useArticles, useArticlesInBlog, useAutoRemovePlusMemberInCart, useAvailableDeliveryCoupon, useBlog, useBuyNow, useCalcAutoFreeGift, useCalcGiftsFromLines, useCalcOrderDiscount, useCartAttributes, useCartItemQuantityLimit, useCollection, useCollections, useCreateCart, useExposure, useGeoLocation, useHasPlusMemberInCart, useIntersection, usePlusAnnualProductVariant, usePlusMemberCheckoutCustomAttributes, usePlusMemberContext, usePlusMemberDeliveryCodes, usePlusMemberItemCustomAttributes, usePlusMemberNeedAddToCart, usePlusMonthlyProductVariant, usePrice, useProduct, useProductUrl, useProductsByHandles, useRemoveCartCodes, useRemoveCartLines, useReplaceCartPlusMember, useScriptAutoFreeGift, useSearch, useSelectedOptions, useShippingMethodAvailableCheck, useShippingMethods, useSite, useUpdateCartAttributes, useUpdateCartLines, useUpdateLineCodeAmountAttributes, useUpdatePlusMemberDeliveryOptions, useUpdateVariantQuery, useVariant, useVariantMedia } from './hooks/index.js';
|
|
5
5
|
export { a as AddToCartInput, A as AddToCartLineItem, B as BuyNowTrackConfig, g as DeliveryCustomData, h as DeliveryData, D as DeliveryPlusType, G as GtmParams, P as PLUS_MEMBER_TYPE, b as PlusMemberMode, e as PlusMemberSettingsMetafields, d as PlusMemberShippingMethodConfig, c as PlusMemberShippingMethodMetafields, f as SelectedPlusMemberProduct, S as ShippingMethodMode, U as UseAddToCartOptions, i as gaTrack, l as trackAddToCartFBQ, t as trackAddToCartGA, j as trackBeginCheckoutGA, m as trackBuyNowFBQ, k as trackBuyNowGA } from './types-BSsb8OPm.js';
|
|
6
6
|
export * from '@anker-in/shopify-sdk';
|
|
7
7
|
import 'react';
|
package/dist/index.js
CHANGED
|
@@ -485,54 +485,28 @@ var useCalcAutoFreeGift = (cart, autoFreeGiftConfig, customer, lines) => {
|
|
|
485
485
|
}
|
|
486
486
|
return { activeCampaign: null, subtotal: 0 };
|
|
487
487
|
}, [autoFreeGiftConfig, effectiveCart, tags, dealsType]);
|
|
488
|
-
const {
|
|
488
|
+
const { qualifyingTier, nextTierGoal, actualThreshold, currentCurrency } = react.useMemo(() => {
|
|
489
489
|
if (!activeCampaign || !activeCampaign.rule_result?.spend_get_reward?.gift_product) {
|
|
490
|
-
return {
|
|
490
|
+
return { qualifyingTier: null, nextTierGoal: null, actualThreshold: 0, currentCurrency: "" };
|
|
491
491
|
}
|
|
492
492
|
const giftTiers = activeCampaign.rule_result.spend_get_reward.gift_product;
|
|
493
|
-
const
|
|
494
|
-
console.log("currentCurrency useCalcAutoFreeGift", effectiveCart,
|
|
493
|
+
const currentCurrency2 = effectiveCart?.currency?.code || "";
|
|
494
|
+
console.log("currentCurrency useCalcAutoFreeGift", effectiveCart, currentCurrency2);
|
|
495
495
|
const getThresholdAmount = (tier) => {
|
|
496
|
-
if (tier.spend_sum_money_multi_markets?.[
|
|
497
|
-
return Number(tier.spend_sum_money_multi_markets[
|
|
496
|
+
if (tier.spend_sum_money_multi_markets?.[currentCurrency2]?.value) {
|
|
497
|
+
return Number(tier.spend_sum_money_multi_markets[currentCurrency2].value);
|
|
498
498
|
}
|
|
499
499
|
return Number(tier.spend_sum_money || 0);
|
|
500
500
|
};
|
|
501
|
-
const
|
|
501
|
+
const qualifyingTier2 = [...giftTiers].sort((a, b) => getThresholdAmount(b) - getThresholdAmount(a)).find((tier) => subtotal >= getThresholdAmount(tier));
|
|
502
502
|
const nextGoal = giftTiers.find((tier) => subtotal < getThresholdAmount(tier));
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
itemsToAdd: qualifyingTier.reward_list?.map((reward) => {
|
|
510
|
-
const giftProduct = reward?.variant_list?.[0];
|
|
511
|
-
if (!giftProduct) return null;
|
|
512
|
-
return {
|
|
513
|
-
variant: {
|
|
514
|
-
id: shopifyCore.btoaID(giftProduct.variant_id),
|
|
515
|
-
handle: giftProduct.handle,
|
|
516
|
-
sku: giftProduct.sku
|
|
517
|
-
},
|
|
518
|
-
quantity: reward?.get_unit || 1,
|
|
519
|
-
attributes: [
|
|
520
|
-
{
|
|
521
|
-
key: CUSTOMER_ATTRIBUTE_KEY,
|
|
522
|
-
value: JSON.stringify({
|
|
523
|
-
is_gift: true,
|
|
524
|
-
rule_id: activeCampaign.rule_id,
|
|
525
|
-
spend_sum_money: actualThreshold,
|
|
526
|
-
// 使用实际的门槛金额(多币种支持)
|
|
527
|
-
currency_code: currentCurrency
|
|
528
|
-
// 记录当前币种
|
|
529
|
-
})
|
|
530
|
-
}
|
|
531
|
-
]
|
|
532
|
-
};
|
|
533
|
-
}).filter((item) => item !== null)
|
|
503
|
+
const actualThreshold2 = qualifyingTier2 ? getThresholdAmount(qualifyingTier2) : 0;
|
|
504
|
+
return {
|
|
505
|
+
qualifyingTier: qualifyingTier2,
|
|
506
|
+
nextTierGoal: nextGoal || null,
|
|
507
|
+
actualThreshold: actualThreshold2,
|
|
508
|
+
currentCurrency: currentCurrency2
|
|
534
509
|
};
|
|
535
|
-
return { qualifyingGift: formattedGift, nextTierGoal: nextGoal || null };
|
|
536
510
|
}, [activeCampaign, subtotal, effectiveCart]);
|
|
537
511
|
const giftHandles = react.useMemo(() => {
|
|
538
512
|
const giftVariant = autoFreeGiftConfig.map(
|
|
@@ -573,6 +547,58 @@ var useCalcAutoFreeGift = (cart, autoFreeGiftConfig, customer, lines) => {
|
|
|
573
547
|
}
|
|
574
548
|
return giftProductsResult;
|
|
575
549
|
}, [giftProductsResult, shouldFetch]);
|
|
550
|
+
const qualifyingGift = react.useMemo(() => {
|
|
551
|
+
if (!qualifyingTier || !activeCampaign) {
|
|
552
|
+
return null;
|
|
553
|
+
}
|
|
554
|
+
const itemsToAdd = qualifyingTier.reward_list?.map((reward) => {
|
|
555
|
+
if (!reward.variant_list || reward.variant_list.length === 0) {
|
|
556
|
+
return null;
|
|
557
|
+
}
|
|
558
|
+
let selectedGiftProduct = null;
|
|
559
|
+
for (const giftVariant of reward.variant_list) {
|
|
560
|
+
const productInfo = finalGiftProductsResult?.find(
|
|
561
|
+
(p) => p.handle === giftVariant.handle
|
|
562
|
+
);
|
|
563
|
+
if (productInfo) {
|
|
564
|
+
const variantInfo = productInfo.variants?.find((v) => v.sku === giftVariant.sku);
|
|
565
|
+
if (variantInfo?.availableForSale) {
|
|
566
|
+
selectedGiftProduct = giftVariant;
|
|
567
|
+
break;
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
if (!selectedGiftProduct) {
|
|
572
|
+
selectedGiftProduct = reward.variant_list[0];
|
|
573
|
+
}
|
|
574
|
+
return {
|
|
575
|
+
variant: {
|
|
576
|
+
id: shopifyCore.btoaID(selectedGiftProduct.variant_id),
|
|
577
|
+
handle: selectedGiftProduct.handle,
|
|
578
|
+
sku: selectedGiftProduct.sku
|
|
579
|
+
},
|
|
580
|
+
quantity: reward?.get_unit || 1,
|
|
581
|
+
attributes: [
|
|
582
|
+
{
|
|
583
|
+
key: CUSTOMER_ATTRIBUTE_KEY,
|
|
584
|
+
value: JSON.stringify({
|
|
585
|
+
is_gift: true,
|
|
586
|
+
rule_id: activeCampaign.rule_id,
|
|
587
|
+
spend_sum_money: actualThreshold,
|
|
588
|
+
// 使用实际的门槛金额(多币种支持)
|
|
589
|
+
currency_code: currentCurrency
|
|
590
|
+
// 记录当前币种
|
|
591
|
+
})
|
|
592
|
+
}
|
|
593
|
+
]
|
|
594
|
+
};
|
|
595
|
+
}).filter((item) => item !== null);
|
|
596
|
+
const formattedGift = {
|
|
597
|
+
tier: qualifyingTier,
|
|
598
|
+
itemsToAdd
|
|
599
|
+
};
|
|
600
|
+
return formattedGift;
|
|
601
|
+
}, [qualifyingTier, activeCampaign, finalGiftProductsResult, actualThreshold, currentCurrency]);
|
|
576
602
|
return {
|
|
577
603
|
qualifyingGift,
|
|
578
604
|
nextTierGoal,
|
|
@@ -2539,15 +2565,27 @@ function usePlusAnnualProductVariant() {
|
|
|
2539
2565
|
}, [plusMemberProducts, plusAnnual]);
|
|
2540
2566
|
return plusAnnualProductVariant;
|
|
2541
2567
|
}
|
|
2542
|
-
|
|
2543
|
-
const {
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
|
|
2568
|
+
var useAvailableDeliveryCoupon = ({ profile }) => {
|
|
2569
|
+
const { data: availableDeliveryCoupon, isLoading } = useSWR__default.default(
|
|
2570
|
+
profile?.email ? ["/api/multipass/subsrv/v1/prime/delivery_coupons/current/available", profile?.email] : void 0,
|
|
2571
|
+
async ([apiPath]) => {
|
|
2572
|
+
return fetch(apiPath).then((res) => res.json());
|
|
2573
|
+
}
|
|
2574
|
+
);
|
|
2575
|
+
console.log("availableDeliveryCoupon", availableDeliveryCoupon);
|
|
2576
|
+
const { ndd_coupon: nddCoupon, tdd_coupon: tddCoupon } = availableDeliveryCoupon?.data?.data || {};
|
|
2577
|
+
return {
|
|
2548
2578
|
nddCoupon,
|
|
2549
|
-
tddCoupon
|
|
2550
|
-
|
|
2579
|
+
tddCoupon,
|
|
2580
|
+
isLoading
|
|
2581
|
+
};
|
|
2582
|
+
};
|
|
2583
|
+
|
|
2584
|
+
// src/hooks/member/plus/use-shipping-methods.ts
|
|
2585
|
+
function useShippingMethods(options) {
|
|
2586
|
+
const { variant, plusMemberMetafields, selectedPlusMemberMode, isPlus = false, profile } = options;
|
|
2587
|
+
const { nddCoupon, tddCoupon, isLoading } = useAvailableDeliveryCoupon({ profile });
|
|
2588
|
+
console.log("nddCoupon", nddCoupon);
|
|
2551
2589
|
const { plus_shipping, shippingMethod } = plusMemberMetafields || {};
|
|
2552
2590
|
const nddOverweight = react.useMemo(() => {
|
|
2553
2591
|
return (variant?.weight || 0) > (shippingMethod?.overWeight_ndd || Infinity);
|
|
@@ -2557,12 +2595,10 @@ function useShippingMethods(options) {
|
|
|
2557
2595
|
}, [shippingMethod?.overWeight_tdd, variant?.weight]);
|
|
2558
2596
|
const paymentShippingMethods = react.useMemo(() => {
|
|
2559
2597
|
const weight = variant?.weight || 0;
|
|
2560
|
-
const methods = plus_shipping?.shipping_methods?.filter(
|
|
2561
|
-
(
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
}
|
|
2565
|
-
) || [];
|
|
2598
|
+
const methods = plus_shipping?.shipping_methods?.filter(({ weight_low, weight_high, __mode, __plus }) => {
|
|
2599
|
+
const fitWeight = (!weight_low || weight >= weight_low) && (!weight_high || weight <= weight_high);
|
|
2600
|
+
return __mode !== "free" /* FREE */ && !__plus && fitWeight;
|
|
2601
|
+
}) || [];
|
|
2566
2602
|
return methods.map((method) => {
|
|
2567
2603
|
let disabled = false;
|
|
2568
2604
|
const selectedFreeMember = selectedPlusMemberMode === "free";
|
|
@@ -2589,40 +2625,34 @@ function useShippingMethods(options) {
|
|
|
2589
2625
|
]);
|
|
2590
2626
|
const nddPrice = react.useMemo(() => {
|
|
2591
2627
|
const weight = variant?.weight || 0;
|
|
2592
|
-
const nddMethod = paymentShippingMethods.find(
|
|
2593
|
-
(
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
}
|
|
2597
|
-
);
|
|
2628
|
+
const nddMethod = paymentShippingMethods.find(({ __mode, weight_high, weight_low }) => {
|
|
2629
|
+
const fitWeight = (!weight_low || weight >= weight_low) && (!weight_high || weight <= weight_high);
|
|
2630
|
+
return __mode === "ndd" && fitWeight;
|
|
2631
|
+
});
|
|
2598
2632
|
return nddMethod?.price || 0;
|
|
2599
2633
|
}, [variant?.weight, paymentShippingMethods]);
|
|
2600
2634
|
const tddPrice = react.useMemo(() => {
|
|
2601
2635
|
const weight = variant?.weight || 0;
|
|
2602
|
-
const tddMethod = paymentShippingMethods.find(
|
|
2603
|
-
(
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
}
|
|
2607
|
-
);
|
|
2636
|
+
const tddMethod = paymentShippingMethods.find(({ __mode, weight_high, weight_low }) => {
|
|
2637
|
+
const fitWeight = (!weight_low || weight >= weight_low) && (!weight_high || weight <= weight_high);
|
|
2638
|
+
return __mode === "tdd" && fitWeight;
|
|
2639
|
+
});
|
|
2608
2640
|
return tddMethod?.price || 0;
|
|
2609
2641
|
}, [variant?.weight, paymentShippingMethods]);
|
|
2610
2642
|
const freeShippingMethods = react.useMemo(() => {
|
|
2611
2643
|
const weight = variant?.weight || 0;
|
|
2612
|
-
let methods = plus_shipping?.shipping_methods?.filter(
|
|
2613
|
-
(
|
|
2614
|
-
|
|
2615
|
-
return true;
|
|
2616
|
-
}
|
|
2617
|
-
if (isPlus) {
|
|
2618
|
-
const hasCoupon = isPlus && __mode === "ndd" /* NDD */ && nddCoupon || isPlus && __mode === "tdd" /* TDD */ && (tddCoupon || nddCoupon);
|
|
2619
|
-
const fitWeight = (!weight_low || weight >= weight_low) && (!weight_high || weight <= weight_high);
|
|
2620
|
-
return hasCoupon && fitWeight && !__plus;
|
|
2621
|
-
} else {
|
|
2622
|
-
return __plus;
|
|
2623
|
-
}
|
|
2644
|
+
let methods = plus_shipping?.shipping_methods?.filter(({ __mode, __plus, weight_low, weight_high }) => {
|
|
2645
|
+
if (__mode === "free" /* FREE */) {
|
|
2646
|
+
return true;
|
|
2624
2647
|
}
|
|
2625
|
-
|
|
2648
|
+
if (isPlus) {
|
|
2649
|
+
const hasCoupon = isPlus && __mode === "ndd" /* NDD */ && nddCoupon || isPlus && __mode === "tdd" /* TDD */ && (tddCoupon || nddCoupon);
|
|
2650
|
+
const fitWeight = (!weight_low || weight >= weight_low) && (!weight_high || weight <= weight_high);
|
|
2651
|
+
return hasCoupon && fitWeight && !__plus;
|
|
2652
|
+
} else {
|
|
2653
|
+
return __plus;
|
|
2654
|
+
}
|
|
2655
|
+
}) || [];
|
|
2626
2656
|
if (isPlus) {
|
|
2627
2657
|
methods = methods.sort((a, b) => {
|
|
2628
2658
|
if (b.__mode === "free" /* FREE */) return -1;
|
|
@@ -2676,7 +2706,10 @@ function useShippingMethods(options) {
|
|
|
2676
2706
|
freeShippingMethods,
|
|
2677
2707
|
paymentShippingMethods,
|
|
2678
2708
|
nddOverweight,
|
|
2679
|
-
tddOverweight
|
|
2709
|
+
tddOverweight,
|
|
2710
|
+
nddCoupon,
|
|
2711
|
+
tddCoupon,
|
|
2712
|
+
isLoadingCoupon: isLoading
|
|
2680
2713
|
};
|
|
2681
2714
|
}
|
|
2682
2715
|
function useShippingMethodAvailableCheck() {
|
|
@@ -2966,9 +2999,9 @@ var PlusMemberProvider = ({
|
|
|
2966
2999
|
memberSetting,
|
|
2967
3000
|
initialSelectedPlusMemberMode = "free",
|
|
2968
3001
|
profile,
|
|
2969
|
-
locale,
|
|
2970
3002
|
children
|
|
2971
3003
|
}) => {
|
|
3004
|
+
const { locale } = useShopify();
|
|
2972
3005
|
const [zipCode, setZipCode] = react.useState("");
|
|
2973
3006
|
const [showTip, setShowTip] = react.useState(false);
|
|
2974
3007
|
const [selectedPlusMemberMode, setSelectedPlusMemberMode] = react.useState(
|
|
@@ -2984,7 +3017,11 @@ var PlusMemberProvider = ({
|
|
|
2984
3017
|
const shippingMethodsContext = useShippingMethods({
|
|
2985
3018
|
variant,
|
|
2986
3019
|
plusMemberMetafields: memberSetting,
|
|
2987
|
-
selectedPlusMemberMode
|
|
3020
|
+
selectedPlusMemberMode,
|
|
3021
|
+
profile,
|
|
3022
|
+
isPlus: profile?.isPlus || false
|
|
3023
|
+
});
|
|
3024
|
+
console.log("shippingMethodsContext", shippingMethodsContext);
|
|
2988
3025
|
const plusMemberHandles = react.useMemo(() => {
|
|
2989
3026
|
return [
|
|
2990
3027
|
memberSetting?.plus_monthly_product?.handle,
|
|
@@ -3500,6 +3537,7 @@ exports.useArticle = useArticle;
|
|
|
3500
3537
|
exports.useArticles = useArticles;
|
|
3501
3538
|
exports.useArticlesInBlog = useArticlesInBlog;
|
|
3502
3539
|
exports.useAutoRemovePlusMemberInCart = useAutoRemovePlusMemberInCart;
|
|
3540
|
+
exports.useAvailableDeliveryCoupon = useAvailableDeliveryCoupon;
|
|
3503
3541
|
exports.useBlog = useBlog;
|
|
3504
3542
|
exports.useBuyNow = useBuyNow;
|
|
3505
3543
|
exports.useCalcAutoFreeGift = useCalcAutoFreeGift;
|