@anker-in/shopify-react 0.1.1-beta.40 → 0.1.1-beta.41

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.
@@ -61,6 +61,7 @@ var CUSTOMER_ATTRIBUTE_KEY = "_discounts_function_env";
61
61
  var CUSTOMER_SCRIPT_GIFT_KEY = "_giveaway_gradient_gifts";
62
62
  var CODE_AMOUNT_KEY = "_sku_code_money";
63
63
  var SCRIPT_CODE_AMOUNT_KEY = "_code_money";
64
+ var MEMBER_PRICE_ATTRIBUTE_KEY = "_member_price";
64
65
  var MAIN_PRODUCT_CODE = ["WS24", "WSTD", "WS7D", "WSCP", "WSPE", "WSPD"];
65
66
 
66
67
  // src/hooks/cart/utils/normalize-add-to-cart-lines.ts
@@ -939,59 +940,90 @@ function useRemoveCartCodes(options) {
939
940
  );
940
941
  return useSWRMutation("remove-codes", removeCodes, options);
941
942
  }
942
-
943
- // src/hooks/cart/utils/add-to-cart.ts
944
- var getLinesWithAttributes = ({
943
+ var initSameLinesAttributes = ({
945
944
  cart,
946
- lineItems
945
+ line
947
946
  }) => {
948
- return lineItems.map((line) => {
949
- const sameLineInCart = cart?.lineItems.find(
950
- (lineInCart) => lineInCart.variant.sku === line.variant?.sku && lineInCart.product?.handle === line.variant?.product?.handle
951
- );
952
- const codeAmountAttribute = sameLineInCart?.customAttributes?.find(
953
- (attr) => attr.key === CODE_AMOUNT_KEY
954
- );
955
- const scriptCodeAmountAttribute = sameLineInCart?.customAttributes?.find(
956
- (attr) => attr.key === SCRIPT_CODE_AMOUNT_KEY
947
+ const sameLineInCart = cart?.lineItems.find(
948
+ (lineInCart) => lineInCart.variant.sku === line.variant?.sku && lineInCart.product?.handle === line.variant?.product?.handle
949
+ );
950
+ const codeAmountAttribute = sameLineInCart?.customAttributes?.find(
951
+ (attr) => attr.key === CODE_AMOUNT_KEY
952
+ );
953
+ const scriptCodeAmountAttribute = sameLineInCart?.customAttributes?.find(
954
+ (attr) => attr.key === SCRIPT_CODE_AMOUNT_KEY
955
+ );
956
+ let functionAttribute = null;
957
+ try {
958
+ functionAttribute = sameLineInCart?.customAttributes?.find(
959
+ (attr) => attr.key === CUSTOMER_ATTRIBUTE_KEY && JSON.parse(attr.value)?.discounted_amount
957
960
  );
958
- let functionAttribute = null;
959
- try {
960
- functionAttribute = sameLineInCart?.customAttributes?.find(
961
- (attr) => attr.key === CUSTOMER_ATTRIBUTE_KEY && JSON.parse(attr.value)?.discounted_amount
962
- );
963
- } catch (error) {
964
- }
965
- if (codeAmountAttribute || functionAttribute || scriptCodeAmountAttribute) {
966
- return {
967
- ...line,
968
- attributes: [
969
- ...line.attributes || [],
970
- codeAmountAttribute,
971
- functionAttribute,
972
- scriptCodeAmountAttribute
973
- ].filter(Boolean)
974
- };
975
- }
976
- return line;
977
- });
961
+ } catch (error) {
962
+ }
963
+ if (codeAmountAttribute || functionAttribute || scriptCodeAmountAttribute) {
964
+ return {
965
+ ...line,
966
+ attributes: [
967
+ ...line.attributes || [],
968
+ codeAmountAttribute,
969
+ functionAttribute,
970
+ scriptCodeAmountAttribute
971
+ ].filter(Boolean)
972
+ };
973
+ }
974
+ return line;
975
+ };
976
+ var initDiscountAttributes = ({ line }) => {
977
+ let itemAttributes = line.attributes || [];
978
+ const functionEnvAttribute = itemAttributes.find((attr) => attr.key === CUSTOMER_ATTRIBUTE_KEY);
979
+ if (!functionEnvAttribute) {
980
+ itemAttributes = itemAttributes.concat([
981
+ {
982
+ key: CUSTOMER_ATTRIBUTE_KEY,
983
+ value: JSON.stringify({
984
+ is_gift: false,
985
+ discounted_amount: line.variant?.finalPrice?.amount === void 0 ? Number(line.variant?.price?.amount) * (line.quantity || 1) : Number(line.variant?.finalPrice?.amount) * (line.quantity || 1)
986
+ })
987
+ }
988
+ ]);
989
+ }
990
+ const memberPriceAttribute = itemAttributes.find(
991
+ (attr) => attr.key === MEMBER_PRICE_ATTRIBUTE_KEY
992
+ );
993
+ const coupon = line.coupon;
994
+ if (!memberPriceAttribute && coupon) {
995
+ itemAttributes = itemAttributes.concat([
996
+ {
997
+ key: MEMBER_PRICE_ATTRIBUTE_KEY,
998
+ value: JSON.stringify({ code: coupon.code })
999
+ }
1000
+ ]);
1001
+ }
1002
+ const couponDiscountAttribute = itemAttributes.find(
1003
+ (attr) => attr.key === CODE_AMOUNT_KEY || attr.key === SCRIPT_CODE_AMOUNT_KEY
1004
+ );
1005
+ if (!couponDiscountAttribute && coupon && Number(coupon?.amount) > 0) {
1006
+ itemAttributes = itemAttributes.concat([
1007
+ {
1008
+ key: CODE_AMOUNT_KEY,
1009
+ value: new Decimal2(coupon.amount).times(line.quantity || 1).toString()
1010
+ },
1011
+ {
1012
+ key: SCRIPT_CODE_AMOUNT_KEY,
1013
+ value: new Decimal2(coupon.amount).times(line.quantity || 1).toString()
1014
+ }
1015
+ ]);
1016
+ }
1017
+ return { ...line, attributes: itemAttributes };
978
1018
  };
979
- var getLinesWithFunctionAttributes = (lineItems) => {
1019
+ var getLinesWithAttributes = ({
1020
+ cart,
1021
+ lineItems
1022
+ }) => {
980
1023
  return lineItems.map((line) => {
981
- let itemAttributes = line.attributes || [];
982
- const functionEnvAttribute = itemAttributes.find((attr) => attr.key === CUSTOMER_ATTRIBUTE_KEY);
983
- if (!functionEnvAttribute) {
984
- itemAttributes = itemAttributes.concat([
985
- {
986
- key: CUSTOMER_ATTRIBUTE_KEY,
987
- value: JSON.stringify({
988
- is_gift: false,
989
- discounted_amount: line.variant?.finalPrice?.amount === void 0 ? Number(line.variant?.price?.amount) * (line.quantity || 1) : Number(line.variant?.finalPrice?.amount) * (line.quantity || 1)
990
- })
991
- }
992
- ]);
993
- }
994
- return { ...line, attributes: itemAttributes };
1024
+ const sameLine = initSameLinesAttributes({ cart, line });
1025
+ const functionLine = initDiscountAttributes({ line: sameLine });
1026
+ return functionLine;
995
1027
  });
996
1028
  };
997
1029
 
@@ -1020,11 +1052,7 @@ function useAddToCart({ withTrack = true } = {}, swrOptions) {
1020
1052
  return;
1021
1053
  }
1022
1054
  performanceAdapter?.addToCartStart();
1023
- const linesWithAttributes = getLinesWithAttributes({
1024
- cart,
1025
- lineItems
1026
- });
1027
- const linesWithFunctionAttributes = getLinesWithFunctionAttributes(linesWithAttributes);
1055
+ const linesWithFunctionAttributes = getLinesWithAttributes({ cart, lineItems });
1028
1056
  const lines = linesWithFunctionAttributes.map((item) => ({
1029
1057
  merchandiseId: item.variant?.id || "",
1030
1058
  quantity: item.quantity || 1,
@@ -1198,13 +1226,15 @@ function useBuyNow({ withTrack = true } = {}, swrOptions) {
1198
1226
  if (!lineItems || lineItems.length === 0) {
1199
1227
  return;
1200
1228
  }
1201
- const linesWithFunctionAttributes = getLinesWithFunctionAttributes(lineItems);
1229
+ const linesWithFunctionAttributes = getLinesWithAttributes({
1230
+ lineItems
1231
+ });
1202
1232
  const lines = linesWithFunctionAttributes.map((item) => ({
1203
1233
  merchandiseId: item.variant?.id || "",
1204
1234
  quantity: item.quantity || 1,
1205
1235
  attributes: item.attributes,
1206
1236
  sellingPlanId: item.sellingPlanId
1207
- })).filter((item) => item.merchandiseId && item.quantity);
1237
+ })).filter((item) => item.merchandiseId);
1208
1238
  if (lines.length === 0) {
1209
1239
  return;
1210
1240
  }
@@ -1259,17 +1289,41 @@ function useCalcGiftsFromLines({
1259
1289
  lines
1260
1290
  });
1261
1291
  const allGiftLines = useMemo(() => {
1262
- const functionGiftLines = functionGift.qualifyingGift?.itemsToAdd || [];
1263
- const scriptGiftLines = scriptGift.freeGiftLevel ? scriptGift.freeGiftLevel.giveawayProducts.map((product) => {
1264
- const giftProduct = scriptGift.giftProductsResult?.find(
1265
- (p) => p.handle === product.handle
1292
+ const functionGiftLines = (functionGift.qualifyingGift?.itemsToAdd || []).map((item) => {
1293
+ const product = functionGift.giftProductsResult?.find(
1294
+ (product2) => product2.handle === item.variant.handle
1266
1295
  );
1267
- const variant = giftProduct?.variants?.[0];
1296
+ const variants = product?.variants;
1297
+ const variant = Array.isArray(variants) ? variants.find((v) => v.sku === item.variant.sku) : void 0;
1298
+ if (!variant) {
1299
+ console.warn(
1300
+ `Function gift: Variant not found for handle=${item.variant.handle}, sku=${item.variant.sku}`
1301
+ );
1302
+ return null;
1303
+ }
1304
+ return {
1305
+ variant: {
1306
+ ...variant,
1307
+ product
1308
+ },
1309
+ quantity: item.quantity ?? 1,
1310
+ attributes: item.attributes
1311
+ };
1312
+ }).filter((item) => item !== null);
1313
+ const scriptGiftLines = scriptGift.freeGiftLevel ? scriptGift.freeGiftLevel.giveawayProducts.map((item) => {
1314
+ const product = scriptGift.giftProductsResult?.find(
1315
+ (product2) => product2.handle === item.handle
1316
+ );
1317
+ const variants = product?.variants;
1318
+ const variant = Array.isArray(variants) ? variants.find((v) => v.sku === item.sku) : void 0;
1319
+ if (!variant) {
1320
+ console.warn(`Script gift: Variant not found for handle=${item.handle}, sku=${item.sku}`);
1321
+ return null;
1322
+ }
1268
1323
  return {
1269
1324
  variant: {
1270
- id: variant?.id || "",
1271
- handle: product.handle,
1272
- sku: product.sku
1325
+ ...variant,
1326
+ product
1273
1327
  },
1274
1328
  quantity: 1,
1275
1329
  attributes: [
@@ -1279,10 +1333,11 @@ function useCalcGiftsFromLines({
1279
1333
  }
1280
1334
  ]
1281
1335
  };
1282
- }).filter((item) => item.variant.id) : [];
1336
+ }).filter((item) => item !== null) : [];
1283
1337
  return [...functionGiftLines, ...scriptGiftLines];
1284
1338
  }, [
1285
1339
  functionGift.qualifyingGift,
1340
+ functionGift.giftProductsResult,
1286
1341
  scriptGift.freeGiftLevel,
1287
1342
  scriptGift.giftProductsResult,
1288
1343
  scriptGiveawayKey
@@ -3173,6 +3228,6 @@ function clearGeoLocationCache(cacheKey = "geoLocation") {
3173
3228
  }
3174
3229
  }
3175
3230
 
3176
- export { BuyRuleType, CODE_AMOUNT_KEY, CUSTOMER_ATTRIBUTE_KEY, CUSTOMER_SCRIPT_GIFT_KEY, DeliveryPlusType, MAIN_PRODUCT_CODE, OrderBasePriceType, OrderDiscountType, PLUS_MEMBER_TYPE, PlusMemberContext, PlusMemberMode, PlusMemberProvider, PriceBasePriceType, PriceDiscountType, RuleType, SCRIPT_CODE_AMOUNT_KEY, ShippingMethodMode, SpendMoneyType, 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 };
3231
+ export { BuyRuleType, CODE_AMOUNT_KEY, CUSTOMER_ATTRIBUTE_KEY, CUSTOMER_SCRIPT_GIFT_KEY, DeliveryPlusType, MAIN_PRODUCT_CODE, MEMBER_PRICE_ATTRIBUTE_KEY, OrderBasePriceType, OrderDiscountType, PLUS_MEMBER_TYPE, PlusMemberContext, PlusMemberMode, PlusMemberProvider, PriceBasePriceType, PriceDiscountType, RuleType, SCRIPT_CODE_AMOUNT_KEY, ShippingMethodMode, SpendMoneyType, 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 };
3177
3232
  //# sourceMappingURL=index.mjs.map
3178
3233
  //# sourceMappingURL=index.mjs.map