@anker-in/shopify-react 1.3.0-beta.0 → 1.3.0-beta.10
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 +95 -58
- package/dist/hooks/index.d.ts +95 -58
- package/dist/hooks/index.js +224 -165
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +226 -167
- package/dist/hooks/index.mjs.map +1 -1
- package/dist/index.d.mts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +114 -31
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +117 -34
- package/dist/index.mjs.map +1 -1
- package/dist/provider/index.d.mts +30 -14
- package/dist/provider/index.d.ts +30 -14
- package/dist/provider/index.js +173 -7
- package/dist/provider/index.js.map +1 -1
- package/dist/provider/index.mjs +175 -9
- package/dist/provider/index.mjs.map +1 -1
- package/dist/{types-CMMWxyUF.d.mts → types-C0UyuPrG.d.mts} +195 -15
- package/dist/{types-CMMWxyUF.d.ts → types-C0UyuPrG.d.ts} +195 -15
- package/package.json +3 -3
package/dist/index.d.mts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
export { CartContextValue, CartProvider, CartProviderProps, LoadingState, ShopifyContext, ShopifyContextValue, ShopifyProvider, ShopifyProviderProps, useCartContext, useShopify } from './provider/index.mjs';
|
|
1
|
+
export { AppContext, 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, GetCartAttributesProps, GiftProduct, GiftProductItem, GiftTier, HasPlusMemberInCartProps, HasPlusMemberInCartResult, HasPlusMemberInLinesResult, ImageMedia, LocaleMapping, MAIN_PRODUCT_CODE, MEMBER_PRICE_ATTRIBUTE_KEY, 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, UseAvailableDeliveryCouponResult, UseBlogOptions, UseBuyNowOptions, UseCalcGiftsFromLinesOptions, UseCalcGiftsFromLinesResult, UseCollectionOptions, UseCollectionsOptions, UseExposureOptions, UseGeoLocationOptions, UseHasPlusMemberInLinesProps, UseIntersectionOptions, UsePlusMemberVariantsOptions, UsePlusMemberVariantsResult, UsePriceOptions, UsePriceResult, UseProductOptions, UseProductsByHandlesOptions,
|
|
5
|
-
export {
|
|
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, GetCartAttributesProps, GiftProduct, GiftProductItem, GiftTier, HasPlusMemberInCartProps, HasPlusMemberInCartResult, HasPlusMemberInLinesResult, ImageMedia, LocaleMapping, MAIN_PRODUCT_CODE, MEMBER_PRICE_ATTRIBUTE_KEY, 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, UpdateBuyerIdentityInput, UpdateCartAttributesInput, UseAllBlogsOptions, UseAllCollectionsOptions, UseAllProductsOptions, UseArticleOptions, UseArticlesInBlogOptions, UseArticlesOptions, UseAutoRemovePlusMemberInCartProps, UseAvailableDeliveryCouponResult, UseBlogOptions, UseBuyNowOptions, UseCalcGiftsFromLinesOptions, UseCalcGiftsFromLinesResult, UseCollectionOptions, UseCollectionsOptions, UseExposureOptions, UseGeoLocationOptions, UseHasPlusMemberInLinesProps, UseIntersectionOptions, UsePlusMemberVariantsOptions, UsePlusMemberVariantsResult, UsePriceOptions, UsePriceResult, UseProductOptions, UseProductsByHandlesOptions, UseSearchOptions, UseShippingMethodsOptions, UseShippingMethodsResult, UseSiteOptions, UseUpdateBuyerIdentityOptions, UseUpdateCartAttributesOptions, VariantItem, VariantMedia, VideoMedia, clearGeoLocationCache, createMockCartFromLines, currencyCodeMapping, defaultSWRMutationConfiguration, formatFunctionAutoFreeGift, formatScriptAutoFreeGift, getCachedGeoLocation, getCartBasicAttributes, getDiscountEnvAttributeValue, getGA4Attributes, getGA4AttributesAsync, getMatchedMainProductSubTotal, getOperatingSystem, getQuery, getReferralAttributes, getUserType, hasPlusMemberInCart, hasPlusMemberInLines, 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, useHasPlusMemberInLines, useIntersection, usePlusMemberCheckoutCustomAttributes, usePlusMemberContext, usePlusMemberNeedAddToCart, usePlusMemberVariants, usePrice, useProduct, useProductUrl, useProductsByHandles, useRemoveCartCodes, useRemoveCartLines, useReplaceCartPlusMember, useSearch, useSelectedOptions, useShippingMethods, useSite, useUpdateBuyerIdentity, useUpdateCartAttributes, useUpdateCartLines, useUpdateLineCodeAmountAttributes, useUpdateVariantQuery, useVariant, useVariantMedia } from './hooks/index.mjs';
|
|
5
|
+
export { g as AddToCartInput, A as AddToCartLineItem, C as BuyNowTrackConfig, p as DeliveryCustomData, D as DeliveryPlusType, v as GA4Data, G as GtmParams, P as PLUS_MEMBER_TYPE, j as PlusMemberMode, n as PlusMemberSettingsMetafields, m as PlusMemberShippingMethodConfig, l as PlusMemberShippingMethodMetafields, S as ScriptAutoFreeGiftConfig, o as SelectedPlusMemberVariant, k as ShippingMethodMode, h as UseAddToCartOptions, U as UseAutoRemoveFreeGiftsOptions, a as UseAutoRemoveFreeGiftsResult, e as UseScriptAutoFreeGiftResult, q as gaTrack, x as getGA4ClientId, z as getGA4Data, y as getGA4SessionId, d as isAnyGift, c as isBuyGetGift, i as isFunctionGift, b as isScriptGift, B as trackAddToCartFBQ, t as trackAddToCartGA, r as trackBeginCheckoutGA, E as trackBuyNowFBQ, s as trackBuyNowGA, u as useAutoRemoveFreeGifts, f as useScriptAutoFreeGift, w as waitForGtagReady } from './types-C0UyuPrG.mjs';
|
|
6
6
|
export * from '@anker-in/shopify-sdk';
|
|
7
7
|
import 'react';
|
|
8
8
|
import 'react/jsx-runtime';
|
|
9
9
|
import 'swr';
|
|
10
10
|
import 'swr/mutation';
|
|
11
|
-
import 'decimal.js';
|
|
12
11
|
import 'swr/_internal';
|
|
12
|
+
import 'decimal.js';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Utility types for TypeScript
|
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
export { CartContextValue, CartProvider, CartProviderProps, LoadingState, ShopifyContext, ShopifyContextValue, ShopifyProvider, ShopifyProviderProps, useCartContext, useShopify } from './provider/index.js';
|
|
1
|
+
export { AppContext, 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, GetCartAttributesProps, GiftProduct, GiftProductItem, GiftTier, HasPlusMemberInCartProps, HasPlusMemberInCartResult, HasPlusMemberInLinesResult, ImageMedia, LocaleMapping, MAIN_PRODUCT_CODE, MEMBER_PRICE_ATTRIBUTE_KEY, 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, UseAvailableDeliveryCouponResult, UseBlogOptions, UseBuyNowOptions, UseCalcGiftsFromLinesOptions, UseCalcGiftsFromLinesResult, UseCollectionOptions, UseCollectionsOptions, UseExposureOptions, UseGeoLocationOptions, UseHasPlusMemberInLinesProps, UseIntersectionOptions, UsePlusMemberVariantsOptions, UsePlusMemberVariantsResult, UsePriceOptions, UsePriceResult, UseProductOptions, UseProductsByHandlesOptions,
|
|
5
|
-
export {
|
|
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, GetCartAttributesProps, GiftProduct, GiftProductItem, GiftTier, HasPlusMemberInCartProps, HasPlusMemberInCartResult, HasPlusMemberInLinesResult, ImageMedia, LocaleMapping, MAIN_PRODUCT_CODE, MEMBER_PRICE_ATTRIBUTE_KEY, 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, UpdateBuyerIdentityInput, UpdateCartAttributesInput, UseAllBlogsOptions, UseAllCollectionsOptions, UseAllProductsOptions, UseArticleOptions, UseArticlesInBlogOptions, UseArticlesOptions, UseAutoRemovePlusMemberInCartProps, UseAvailableDeliveryCouponResult, UseBlogOptions, UseBuyNowOptions, UseCalcGiftsFromLinesOptions, UseCalcGiftsFromLinesResult, UseCollectionOptions, UseCollectionsOptions, UseExposureOptions, UseGeoLocationOptions, UseHasPlusMemberInLinesProps, UseIntersectionOptions, UsePlusMemberVariantsOptions, UsePlusMemberVariantsResult, UsePriceOptions, UsePriceResult, UseProductOptions, UseProductsByHandlesOptions, UseSearchOptions, UseShippingMethodsOptions, UseShippingMethodsResult, UseSiteOptions, UseUpdateBuyerIdentityOptions, UseUpdateCartAttributesOptions, VariantItem, VariantMedia, VideoMedia, clearGeoLocationCache, createMockCartFromLines, currencyCodeMapping, defaultSWRMutationConfiguration, formatFunctionAutoFreeGift, formatScriptAutoFreeGift, getCachedGeoLocation, getCartBasicAttributes, getDiscountEnvAttributeValue, getGA4Attributes, getGA4AttributesAsync, getMatchedMainProductSubTotal, getOperatingSystem, getQuery, getReferralAttributes, getUserType, hasPlusMemberInCart, hasPlusMemberInLines, 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, useHasPlusMemberInLines, useIntersection, usePlusMemberCheckoutCustomAttributes, usePlusMemberContext, usePlusMemberNeedAddToCart, usePlusMemberVariants, usePrice, useProduct, useProductUrl, useProductsByHandles, useRemoveCartCodes, useRemoveCartLines, useReplaceCartPlusMember, useSearch, useSelectedOptions, useShippingMethods, useSite, useUpdateBuyerIdentity, useUpdateCartAttributes, useUpdateCartLines, useUpdateLineCodeAmountAttributes, useUpdateVariantQuery, useVariant, useVariantMedia } from './hooks/index.js';
|
|
5
|
+
export { g as AddToCartInput, A as AddToCartLineItem, C as BuyNowTrackConfig, p as DeliveryCustomData, D as DeliveryPlusType, v as GA4Data, G as GtmParams, P as PLUS_MEMBER_TYPE, j as PlusMemberMode, n as PlusMemberSettingsMetafields, m as PlusMemberShippingMethodConfig, l as PlusMemberShippingMethodMetafields, S as ScriptAutoFreeGiftConfig, o as SelectedPlusMemberVariant, k as ShippingMethodMode, h as UseAddToCartOptions, U as UseAutoRemoveFreeGiftsOptions, a as UseAutoRemoveFreeGiftsResult, e as UseScriptAutoFreeGiftResult, q as gaTrack, x as getGA4ClientId, z as getGA4Data, y as getGA4SessionId, d as isAnyGift, c as isBuyGetGift, i as isFunctionGift, b as isScriptGift, B as trackAddToCartFBQ, t as trackAddToCartGA, r as trackBeginCheckoutGA, E as trackBuyNowFBQ, s as trackBuyNowGA, u as useAutoRemoveFreeGifts, f as useScriptAutoFreeGift, w as waitForGtagReady } from './types-C0UyuPrG.js';
|
|
6
6
|
export * from '@anker-in/shopify-sdk';
|
|
7
7
|
import 'react';
|
|
8
8
|
import 'react/jsx-runtime';
|
|
9
9
|
import 'swr';
|
|
10
10
|
import 'swr/mutation';
|
|
11
|
-
import 'decimal.js';
|
|
12
11
|
import 'swr/_internal';
|
|
12
|
+
import 'decimal.js';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Utility types for TypeScript
|
package/dist/index.js
CHANGED
|
@@ -1163,6 +1163,26 @@ function useRemoveCartCodes(options) {
|
|
|
1163
1163
|
);
|
|
1164
1164
|
return useSWRMutation__default.default("remove-codes", removeCodes, options);
|
|
1165
1165
|
}
|
|
1166
|
+
function useUpdateCartLines(options) {
|
|
1167
|
+
const { client, locale, cartCookieAdapter } = useShopify();
|
|
1168
|
+
const { mutateCart, metafieldIdentifiers } = useCartContext();
|
|
1169
|
+
const updateLines = react.useCallback(
|
|
1170
|
+
async (_key, { arg }) => {
|
|
1171
|
+
const updatedCart = await shopifySdk.updateCartLines(client, {
|
|
1172
|
+
...arg,
|
|
1173
|
+
metafieldIdentifiers,
|
|
1174
|
+
cookieAdapter: cartCookieAdapter
|
|
1175
|
+
});
|
|
1176
|
+
if (updatedCart) {
|
|
1177
|
+
mutateCart(updatedCart);
|
|
1178
|
+
}
|
|
1179
|
+
console.log("use-update-cart-lines updatedCart", metafieldIdentifiers, updatedCart);
|
|
1180
|
+
return updatedCart;
|
|
1181
|
+
},
|
|
1182
|
+
[client, locale, cartCookieAdapter, mutateCart, metafieldIdentifiers]
|
|
1183
|
+
);
|
|
1184
|
+
return useSWRMutation__default.default("update-cart-lines", updateLines, options);
|
|
1185
|
+
}
|
|
1166
1186
|
var initSameLinesAttributes = ({
|
|
1167
1187
|
cart,
|
|
1168
1188
|
line
|
|
@@ -1295,9 +1315,13 @@ function useAutoRemoveFreeGifts(options = {}) {
|
|
|
1295
1315
|
const {
|
|
1296
1316
|
removeFunctionGifts = true,
|
|
1297
1317
|
removeScriptGifts = true,
|
|
1298
|
-
isGiftLineItem
|
|
1318
|
+
isGiftLineItem,
|
|
1319
|
+
runOnlyOnceAfterInit = false,
|
|
1320
|
+
initDelay = 500
|
|
1299
1321
|
} = options;
|
|
1300
1322
|
const [isRemoving, setIsRemoving] = react.useState(false);
|
|
1323
|
+
const [isInitialized, setIsInitialized] = react.useState(!runOnlyOnceAfterInit);
|
|
1324
|
+
const [isFinished, setIsFinished] = react.useState(false);
|
|
1301
1325
|
const { cart } = useCartContext();
|
|
1302
1326
|
const { trigger: removeCartLines2 } = useRemoveCartLines();
|
|
1303
1327
|
const giftsToRemove = react.useMemo(() => {
|
|
@@ -1334,7 +1358,29 @@ function useAutoRemoveFreeGifts(options = {}) {
|
|
|
1334
1358
|
return false;
|
|
1335
1359
|
});
|
|
1336
1360
|
}, [cart, removeFunctionGifts, removeScriptGifts, isGiftLineItem]);
|
|
1361
|
+
ahooks.useDebounceEffect(
|
|
1362
|
+
() => {
|
|
1363
|
+
if (!runOnlyOnceAfterInit || isInitialized || isFinished) {
|
|
1364
|
+
return;
|
|
1365
|
+
}
|
|
1366
|
+
if (!cart?.lineItems?.length) {
|
|
1367
|
+
return;
|
|
1368
|
+
}
|
|
1369
|
+
setIsInitialized(true);
|
|
1370
|
+
if (giftsToRemove.length === 0) {
|
|
1371
|
+
setIsFinished(true);
|
|
1372
|
+
}
|
|
1373
|
+
},
|
|
1374
|
+
[runOnlyOnceAfterInit, isInitialized, isFinished, cart?.lineItems, giftsToRemove.length],
|
|
1375
|
+
{
|
|
1376
|
+
trailing: true,
|
|
1377
|
+
wait: initDelay
|
|
1378
|
+
}
|
|
1379
|
+
);
|
|
1337
1380
|
react.useEffect(() => {
|
|
1381
|
+
if (runOnlyOnceAfterInit && (!isInitialized || isFinished)) {
|
|
1382
|
+
return;
|
|
1383
|
+
}
|
|
1338
1384
|
if (isRemoving || giftsToRemove.length === 0) {
|
|
1339
1385
|
return;
|
|
1340
1386
|
}
|
|
@@ -1348,10 +1394,16 @@ function useAutoRemoveFreeGifts(options = {}) {
|
|
|
1348
1394
|
console.error("Failed to remove free gifts:", error);
|
|
1349
1395
|
} finally {
|
|
1350
1396
|
setIsRemoving(false);
|
|
1397
|
+
if (runOnlyOnceAfterInit) {
|
|
1398
|
+
setIsFinished(true);
|
|
1399
|
+
}
|
|
1351
1400
|
}
|
|
1352
1401
|
};
|
|
1353
1402
|
performRemoval();
|
|
1354
1403
|
}, [
|
|
1404
|
+
runOnlyOnceAfterInit,
|
|
1405
|
+
isInitialized,
|
|
1406
|
+
isFinished,
|
|
1355
1407
|
isRemoving,
|
|
1356
1408
|
giftsToRemove,
|
|
1357
1409
|
removeCartLines2
|
|
@@ -2463,6 +2515,7 @@ function useAddToCart({ withTrack = true } = {}, swrOptions) {
|
|
|
2463
2515
|
const { trigger: applyCartCodes } = useApplyCartCodes();
|
|
2464
2516
|
const { trigger: removeInvalidCodes } = useRemoveCartCodes();
|
|
2465
2517
|
const { trigger: addCartLines2 } = useAddCartLines();
|
|
2518
|
+
const { trigger: updateCartLines3 } = useUpdateCartLines();
|
|
2466
2519
|
const { trigger: createCart4 } = useCreateCart({
|
|
2467
2520
|
updateCookie: true
|
|
2468
2521
|
});
|
|
@@ -2515,10 +2568,36 @@ function useAddToCart({ withTrack = true } = {}, swrOptions) {
|
|
|
2515
2568
|
// 初次加购时,就把所有 cart attributes 带上
|
|
2516
2569
|
});
|
|
2517
2570
|
} else {
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2571
|
+
const linesToUpdate = [];
|
|
2572
|
+
const linesToAddNew = lines.filter((lineToAdd) => {
|
|
2573
|
+
const existingLine = cart?.lineItems?.find(
|
|
2574
|
+
(item) => item.variant?.id === lineToAdd.merchandiseId
|
|
2575
|
+
);
|
|
2576
|
+
if (existingLine) {
|
|
2577
|
+
linesToUpdate.push({
|
|
2578
|
+
id: existingLine.id,
|
|
2579
|
+
quantity: existingLine.quantity + (lineToAdd.quantity || 1),
|
|
2580
|
+
attributes: lineToAdd.attributes || void 0
|
|
2581
|
+
});
|
|
2582
|
+
return false;
|
|
2583
|
+
}
|
|
2584
|
+
return true;
|
|
2521
2585
|
});
|
|
2586
|
+
if (linesToUpdate.length > 0) {
|
|
2587
|
+
resultCart = await updateCartLines3({
|
|
2588
|
+
cartId,
|
|
2589
|
+
lines: linesToUpdate
|
|
2590
|
+
});
|
|
2591
|
+
}
|
|
2592
|
+
if (linesToAddNew.length > 0) {
|
|
2593
|
+
resultCart = await addCartLines2({
|
|
2594
|
+
cartId: resultCart?.id || cartId,
|
|
2595
|
+
lines: linesToAddNew
|
|
2596
|
+
});
|
|
2597
|
+
}
|
|
2598
|
+
if (!resultCart) {
|
|
2599
|
+
resultCart = cart;
|
|
2600
|
+
}
|
|
2522
2601
|
console.log("npm addCartLines resultCart", resultCart);
|
|
2523
2602
|
if (resultCart && resultCart.discountCodes && resultCart.discountCodes.length > 0) {
|
|
2524
2603
|
const unapplicableCodes = resultCart.discountCodes.filter((item) => !item.applicable).map((item) => item.code);
|
|
@@ -2579,6 +2658,7 @@ function useAddToCart({ withTrack = true } = {}, swrOptions) {
|
|
|
2579
2658
|
performanceAdapter,
|
|
2580
2659
|
createCart4,
|
|
2581
2660
|
addCartLines2,
|
|
2661
|
+
updateCartLines3,
|
|
2582
2662
|
applyCartCodes,
|
|
2583
2663
|
removeInvalidCodes,
|
|
2584
2664
|
addCustomAttributes,
|
|
@@ -2588,26 +2668,6 @@ function useAddToCart({ withTrack = true } = {}, swrOptions) {
|
|
|
2588
2668
|
);
|
|
2589
2669
|
return useSWRMutation__default.default("add-to-cart", addToCart, swrOptions);
|
|
2590
2670
|
}
|
|
2591
|
-
function useUpdateCartLines(options) {
|
|
2592
|
-
const { client, locale, cartCookieAdapter } = useShopify();
|
|
2593
|
-
const { mutateCart, metafieldIdentifiers } = useCartContext();
|
|
2594
|
-
const updateLines = react.useCallback(
|
|
2595
|
-
async (_key, { arg }) => {
|
|
2596
|
-
const updatedCart = await shopifySdk.updateCartLines(client, {
|
|
2597
|
-
...arg,
|
|
2598
|
-
metafieldIdentifiers,
|
|
2599
|
-
cookieAdapter: cartCookieAdapter
|
|
2600
|
-
});
|
|
2601
|
-
if (updatedCart) {
|
|
2602
|
-
mutateCart(updatedCart);
|
|
2603
|
-
}
|
|
2604
|
-
console.log("use-update-cart-lines updatedCart", metafieldIdentifiers, updatedCart);
|
|
2605
|
-
return updatedCart;
|
|
2606
|
-
},
|
|
2607
|
-
[client, locale, cartCookieAdapter, mutateCart, metafieldIdentifiers]
|
|
2608
|
-
);
|
|
2609
|
-
return useSWRMutation__default.default("update-cart-lines", updateLines, options);
|
|
2610
|
-
}
|
|
2611
2671
|
function useUpdateCartAttributes({
|
|
2612
2672
|
mutate,
|
|
2613
2673
|
metafieldIdentifiers,
|
|
@@ -3206,8 +3266,7 @@ async function performSearch(client, locale, searchQuery, first = 20, types = ["
|
|
|
3206
3266
|
const query = (
|
|
3207
3267
|
/* GraphQL */
|
|
3208
3268
|
`
|
|
3209
|
-
query search($query: String!, $first: Int!, $types: [SearchType!])
|
|
3210
|
-
@inContext(language: $language) {
|
|
3269
|
+
query search($query: String!, $first: Int!, $types: [SearchType!]) {
|
|
3211
3270
|
search(query: $query, first: $first, types: $types, unavailableProducts: HIDE) {
|
|
3212
3271
|
totalCount
|
|
3213
3272
|
edges {
|
|
@@ -3303,7 +3362,7 @@ async function getSiteInfo(client, locale, metafieldIdentifiers) {
|
|
|
3303
3362
|
`
|
|
3304
3363
|
query getSiteInfo(
|
|
3305
3364
|
${hasMetafields ? "$shopMetafieldIdentifiers: [HasMetafieldsIdentifier!]!" : ""}
|
|
3306
|
-
)
|
|
3365
|
+
) {
|
|
3307
3366
|
shop {
|
|
3308
3367
|
name
|
|
3309
3368
|
description
|
|
@@ -3549,6 +3608,16 @@ function clearGeoLocationCache(cacheKey = "geoLocation") {
|
|
|
3549
3608
|
}
|
|
3550
3609
|
}
|
|
3551
3610
|
var CartContext = react.createContext(null);
|
|
3611
|
+
function AutoRemoveGiftsHandler({
|
|
3612
|
+
options,
|
|
3613
|
+
onRemovingChange
|
|
3614
|
+
}) {
|
|
3615
|
+
const { isRemoving } = useAutoRemoveFreeGifts(options);
|
|
3616
|
+
react.useEffect(() => {
|
|
3617
|
+
onRemovingChange(isRemoving);
|
|
3618
|
+
}, [isRemoving, onRemovingChange]);
|
|
3619
|
+
return null;
|
|
3620
|
+
}
|
|
3552
3621
|
function CartProvider({
|
|
3553
3622
|
children,
|
|
3554
3623
|
// swrOptions,
|
|
@@ -3576,6 +3645,7 @@ function CartProvider({
|
|
|
3576
3645
|
});
|
|
3577
3646
|
const [scriptAutoFreeGift, setScriptAutoFreeGift] = react.useState([]);
|
|
3578
3647
|
const [functionAutoFreeGift, setFunctionAutoFreeGift] = react.useState([]);
|
|
3648
|
+
const [isAutoRemovingFreeGifts, setIsAutoRemovingFreeGifts] = react.useState(false);
|
|
3579
3649
|
const {
|
|
3580
3650
|
run: fetchCart,
|
|
3581
3651
|
data: cart,
|
|
@@ -3735,7 +3805,9 @@ function CartProvider({
|
|
|
3735
3805
|
const autoRemoveFreeGiftsOptions = react.useMemo(() => {
|
|
3736
3806
|
return {
|
|
3737
3807
|
removeFunctionGifts: !!functionAutoFreeGiftConfig,
|
|
3738
|
-
removeScriptGifts: !!scriptAutoFreeGiftConfig
|
|
3808
|
+
removeScriptGifts: !!scriptAutoFreeGiftConfig,
|
|
3809
|
+
runOnlyOnceAfterInit: true,
|
|
3810
|
+
initDelay: 500
|
|
3739
3811
|
};
|
|
3740
3812
|
}, [functionAutoFreeGiftConfig, scriptAutoFreeGiftConfig]);
|
|
3741
3813
|
const value = react.useMemo(
|
|
@@ -3768,7 +3840,8 @@ function CartProvider({
|
|
|
3768
3840
|
metafieldIdentifiers,
|
|
3769
3841
|
memberSetting,
|
|
3770
3842
|
appContext,
|
|
3771
|
-
autoRemoveFreeGiftsOptions
|
|
3843
|
+
autoRemoveFreeGiftsOptions,
|
|
3844
|
+
isAutoRemovingFreeGifts
|
|
3772
3845
|
}),
|
|
3773
3846
|
[
|
|
3774
3847
|
cart,
|
|
@@ -3797,10 +3870,20 @@ function CartProvider({
|
|
|
3797
3870
|
profile,
|
|
3798
3871
|
memberSetting,
|
|
3799
3872
|
appContext,
|
|
3800
|
-
autoRemoveFreeGiftsOptions
|
|
3873
|
+
autoRemoveFreeGiftsOptions,
|
|
3874
|
+
isAutoRemovingFreeGifts
|
|
3801
3875
|
]
|
|
3802
3876
|
);
|
|
3803
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
3877
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(CartContext.Provider, { value, children: [
|
|
3878
|
+
(functionAutoFreeGiftConfig || scriptAutoFreeGiftConfig) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3879
|
+
AutoRemoveGiftsHandler,
|
|
3880
|
+
{
|
|
3881
|
+
options: autoRemoveFreeGiftsOptions,
|
|
3882
|
+
onRemovingChange: setIsAutoRemovingFreeGifts
|
|
3883
|
+
}
|
|
3884
|
+
),
|
|
3885
|
+
children
|
|
3886
|
+
] });
|
|
3804
3887
|
}
|
|
3805
3888
|
function useCartContext(options) {
|
|
3806
3889
|
const context = react.useContext(CartContext);
|