@lookiero/checkout 1.1.4-beta.3 → 1.1.4-beta.5

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.
@@ -68,20 +68,26 @@ const Item = ({ customerId, country }) => {
68
68
  trackReturnItem();
69
69
  }, [hideReturnQuestions, returnCheckoutItem, trackReturnItem]);
70
70
  /* ReturnCheckoutItem */
71
+ const currentProductVariant = useMemo(() => checkoutItem.status === CheckoutItemStatus.REPLACED && checkoutItem.replacedFor
72
+ ? { id: checkoutItem.replacedFor.id, size: checkoutItem.replacedFor.size }
73
+ : { id: checkoutItem.productVariant.id, size: checkoutItem.productVariant.size }, [checkoutItem.productVariant.id, checkoutItem.productVariant.size, checkoutItem.replacedFor, checkoutItem.status]);
71
74
  const replaceableFor = useMemo(() => sizeChangeEnabledStatus === QueryStatus.SUCCESS
72
75
  ? isSizeChangeEnabled
73
76
  ? bookedProductsVariants
74
- ? bookedProductsVariants.productVariants.map(({ id }) => id)
77
+ ? bookedProductsVariants.productVariants
78
+ .filter(({ id }) => id !== currentProductVariant.id)
79
+ .map(({ size }) => size.lookiero)
75
80
  : undefined
76
81
  : []
77
- : undefined, [bookedProductsVariants, isSizeChangeEnabled, sizeChangeEnabledStatus]);
82
+ : undefined, [bookedProductsVariants, currentProductVariant.id, isSizeChangeEnabled, sizeChangeEnabledStatus]);
78
83
  useTrackItemPageView({
79
84
  page: TrackingPage.ITEM,
80
85
  country,
81
86
  checkoutId: checkout?.id,
82
87
  checkoutItemId: checkoutItem.id,
88
+ status: checkoutItem.status,
83
89
  productVariantId: checkoutItem.productVariant.id,
84
- replaceableFor: replaceableFor ? replaceableFor.toString() : undefined,
90
+ replaceableFor,
85
91
  unique: checkoutItem.productVariant.size.unique,
86
92
  });
87
93
  const dependenciesLoaded = checkoutStatus !== QueryStatus.LOADING &&
@@ -97,7 +103,7 @@ const Item = ({ customerId, country }) => {
97
103
  return React.createElement(Spinner, null);
98
104
  }
99
105
  return (React.createElement(ReturnQuestionFeedbackProvider, { feedback: checkoutItem.feedbacks || {} },
100
- checkoutItem.status === CheckoutItemStatus.INITIAL ? (React.createElement(ItemWithoutCustomerDecission, { bookedProductsVariants: bookedProductsVariants, checkoutId: checkout.id, checkoutItem: checkoutItem, country: country, onReturn: showReturnQuestions })) : (React.createElement(ItemWithCustomerDecission, { checkoutId: checkout.id, checkoutItem: checkoutItem, country: country, returnQuestions: returnQuestions, onEditFeedback: showReturnQuestions })),
106
+ checkoutItem.status === CheckoutItemStatus.INITIAL ? (React.createElement(ItemWithoutCustomerDecission, { bookedProductsVariants: bookedProductsVariants, checkoutId: checkout.id, checkoutItem: checkoutItem, country: country, currentProductVariant: currentProductVariant, onReturn: showReturnQuestions })) : (React.createElement(ItemWithCustomerDecission, { checkoutId: checkout.id, checkoutItem: checkoutItem, country: country, currentProductVariant: currentProductVariant, returnQuestions: returnQuestions, onEditFeedback: showReturnQuestions })),
101
107
  React.createElement(ReturnQuestionsForm, { checkoutItemPrice: checkoutItem.price, country: country, productVariant: checkoutItem.productVariant, returnQuestions: returnQuestions, visible: returnQuestionsVisible, onClose: hideReturnQuestions, onSubmit: returnItem })));
102
108
  };
103
109
  export { Item };
@@ -1,5 +1,6 @@
1
1
  import { FC } from "react";
2
2
  import { CheckoutItemStatus } from "../../../../../../domain/checkoutItem/model/checkoutItem";
3
+ import { ProductVariantProjection } from "../../../../../../projection/bookedProductsVariants/bookedProductsVariants";
3
4
  import { CheckoutItemProjection } from "../../../../../../projection/checkoutItem/checkoutItem";
4
5
  import { ReturnQuestionProjection } from "../../../../../../projection/returnQuestion/returnQuestion";
5
6
  import { Country } from "../../../../../../projection/shared/country";
@@ -11,6 +12,7 @@ interface ItemWithCustomerDecissionProps {
11
12
  readonly checkoutId: string;
12
13
  readonly checkoutItem: CheckoutItemWithCustomerDecission;
13
14
  readonly returnQuestions: ReturnQuestionProjection[];
15
+ readonly currentProductVariant: ProductVariantProjection;
14
16
  readonly onEditFeedback: () => void;
15
17
  }
16
18
  declare const ItemWithCustomerDecission: FC<ItemWithCustomerDecissionProps>;
@@ -1,5 +1,5 @@
1
1
  import { CommandStatus } from "@lookiero/messaging-react";
2
- import React, { useCallback, useMemo } from "react";
2
+ import React, { useCallback } from "react";
3
3
  import { Platform, View } from "react-native";
4
4
  import { CheckoutItemStatus } from "../../../../../../domain/checkoutItem/model/checkoutItem";
5
5
  import { useLogger } from "../../../../../../shared/logging/useLogger";
@@ -14,7 +14,7 @@ import { CustomerDecissionBanner, } from "../../components/banner/CustomerDeciss
14
14
  import { ReturnQuestionsFeedback } from "../../components/returnQuestionsFeedback/ReturnQuestionsFeedback";
15
15
  import { ProductVariant } from "../../views/productVariant/ProductVariant";
16
16
  import { style } from "./ItemWithCustomerDecission.style";
17
- const ItemWithCustomerDecission = ({ country, checkoutId, checkoutItem, returnQuestions, onEditFeedback, }) => {
17
+ const ItemWithCustomerDecission = ({ country, checkoutId, checkoutItem, returnQuestions, currentProductVariant, onEditFeedback, }) => {
18
18
  const logger = useLogger();
19
19
  /* ResetCheckoutItem */
20
20
  const [resetCheckoutItem, resetCheckoutItemStatus] = useResetCheckoutItem({
@@ -32,9 +32,6 @@ const ItemWithCustomerDecission = ({ country, checkoutId, checkoutItem, returnQu
32
32
  trackResetItem();
33
33
  }, [resetCheckoutItem, trackResetItem]);
34
34
  /* ResetCheckoutItem */
35
- const currentProductVariant = useMemo(() => checkoutItem.status === CheckoutItemStatus.REPLACED && checkoutItem.replacedFor
36
- ? { id: checkoutItem.replacedFor.id, size: checkoutItem.replacedFor.size }
37
- : { id: checkoutItem.productVariant.id, size: checkoutItem.productVariant.size }, [checkoutItem.productVariant.id, checkoutItem.productVariant.size, checkoutItem.replacedFor, checkoutItem.status]);
38
35
  const dependenciesLoaded = resetCheckoutItemStatus !== CommandStatus.LOADING;
39
36
  if (!dependenciesLoaded) {
40
37
  return React.createElement(Spinner, null);
@@ -1,6 +1,6 @@
1
1
  import { FC } from "react";
2
2
  import { CheckoutItemStatus } from "../../../../../../domain/checkoutItem/model/checkoutItem";
3
- import { BookedProductsVariantsProjection } from "../../../../../../projection/bookedProductsVariants/bookedProductsVariants";
3
+ import { BookedProductsVariantsProjection, ProductVariantProjection } from "../../../../../../projection/bookedProductsVariants/bookedProductsVariants";
4
4
  import "../../../../../../projection/checkout/viewFirstAvailableCheckoutByCustomerId";
5
5
  import { CheckoutItemProjection } from "../../../../../../projection/checkoutItem/checkoutItem";
6
6
  import { Country } from "../../../../../../projection/shared/country";
@@ -12,6 +12,7 @@ interface ItemWithoutCustomerDecissionProps {
12
12
  readonly checkoutId: string;
13
13
  readonly checkoutItem: CheckoutItemWithoutCustomerDecission;
14
14
  readonly bookedProductsVariants: BookedProductsVariantsProjection;
15
+ readonly currentProductVariant: ProductVariantProjection;
15
16
  readonly onReturn: () => void;
16
17
  }
17
18
  declare const ItemWithoutCustomerDecission: FC<ItemWithoutCustomerDecissionProps>;
@@ -1,5 +1,5 @@
1
1
  import { CommandStatus } from "@lookiero/messaging-react";
2
- import React, { useCallback, useMemo, useState } from "react";
2
+ import React, { useCallback, useState } from "react";
3
3
  import { Platform } from "react-native";
4
4
  import "../../../../../../projection/checkout/viewFirstAvailableCheckoutByCustomerId";
5
5
  import { useLogger } from "../../../../../../shared/logging/useLogger";
@@ -17,7 +17,7 @@ import { ItemActions } from "../../components/itemActions/ItemActions";
17
17
  import { SizeWithoutStockModal } from "../../components/sizeWithoutStockModal/SizeWithoutStockModal";
18
18
  import { ProductVariant } from "../productVariant/ProductVariant";
19
19
  const { spaceXL } = theme();
20
- const ItemWithoutCustomerDecission = ({ country, checkoutId, checkoutItem, bookedProductsVariants, onReturn, }) => {
20
+ const ItemWithoutCustomerDecission = ({ country, checkoutId, checkoutItem, bookedProductsVariants, currentProductVariant, onReturn, }) => {
21
21
  const logger = useLogger();
22
22
  /* KeepCheckoutItem */
23
23
  const [keepCheckoutItem, keepCheckoutItemStatus] = useKeepCheckoutItem({ checkoutItemId: checkoutItem.id, logger });
@@ -54,7 +54,6 @@ const ItemWithoutCustomerDecission = ({ country, checkoutId, checkoutItem, booke
54
54
  const handleOnHideSizeWithoutStockModal = useCallback(() => setSizeWithoutStockModalVisible(false), []);
55
55
  const [stickyHeight, setStickyHeight] = useState(0);
56
56
  const handleOnStickyLayout = useCallback(({ height }) => setStickyHeight(height), []);
57
- const currentProductVariant = useMemo(() => ({ id: checkoutItem.productVariant.id, size: checkoutItem.productVariant.size }), [checkoutItem.productVariant.id, checkoutItem.productVariant.size]);
58
57
  const dependenciesLoaded = keepCheckoutItemStatus !== CommandStatus.LOADING && replaceCheckoutItemStatus !== CommandStatus.LOADING;
59
58
  if (!dependenciesLoaded) {
60
59
  return React.createElement(Spinner, null);
@@ -1,3 +1,4 @@
1
+ import { CheckoutItemStatus } from "../../../domain/checkoutItem/model/checkoutItem";
1
2
  import { TrackingPage } from "../../../infrastructure/tracking/tracking";
2
3
  import { Country } from "../../../projection/shared/country";
3
4
  interface UseTrackItemPageViewFunctionArgs {
@@ -6,7 +7,8 @@ interface UseTrackItemPageViewFunctionArgs {
6
7
  readonly checkoutId?: string;
7
8
  readonly checkoutItemId: string;
8
9
  readonly productVariantId: string;
9
- readonly replaceableFor: string | undefined;
10
+ readonly replaceableFor: string[] | undefined;
11
+ readonly status: CheckoutItemStatus;
10
12
  readonly unique: boolean;
11
13
  }
12
14
  interface UseTrackItemPageViewFunction {
@@ -2,7 +2,7 @@ import { useLayoutEffect } from "react";
2
2
  import { PROJECT } from "../../../infrastructure/tracking/tracking";
3
3
  import { TrackingEvent, TrackingEventCategory } from "../tracking";
4
4
  import { useEmitUserEvent } from "./useEmitUserEvent";
5
- const useTrackItemPageView = ({ page, country, checkoutId, checkoutItemId, productVariantId, replaceableFor, unique, }) => {
5
+ const useTrackItemPageView = ({ page, country, checkoutId, checkoutItemId, productVariantId, replaceableFor, status, unique, }) => {
6
6
  const emitUserEvent = useEmitUserEvent();
7
7
  useLayoutEffect(() => {
8
8
  if (!(checkoutId && replaceableFor)) {
@@ -15,11 +15,12 @@ const useTrackItemPageView = ({ page, country, checkoutId, checkoutItemId, produ
15
15
  store: country,
16
16
  checkoutId,
17
17
  checkoutItemId,
18
+ status,
18
19
  productVariantId,
19
- replaceableFor,
20
+ replaceableFor: replaceableFor.toString(),
20
21
  unique,
21
22
  };
22
23
  emitUserEvent(itemPageViewTrackingEvent);
23
- }, [checkoutId, checkoutItemId, country, emitUserEvent, page, productVariantId, replaceableFor, unique]);
24
+ }, [checkoutId, checkoutItemId, country, emitUserEvent, page, productVariantId, replaceableFor, status, unique]);
24
25
  };
25
26
  export { useTrackItemPageView };
@@ -1,3 +1,4 @@
1
+ import { CheckoutItemStatus } from "../../domain/checkoutItem/model/checkoutItem";
1
2
  import { MediaPerspective } from "../../projection/checkoutItem/checkoutItem";
2
3
  import { Country } from "../../projection/shared/country";
3
4
  declare enum TrackingEvent {
@@ -30,6 +31,7 @@ interface BaseTrackingEvent {
30
31
  type PageViewTrackingEvent = BaseTrackingEvent;
31
32
  interface ItemPageViewTrackingEvent extends BaseTrackingEvent {
32
33
  readonly checkoutItemId: string;
34
+ readonly status: CheckoutItemStatus;
33
35
  readonly productVariantId: string;
34
36
  readonly replaceableFor: string;
35
37
  readonly unique: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lookiero/checkout",
3
- "version": "1.1.4-beta.3",
3
+ "version": "1.1.4-beta.5",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "files": [