@lookiero/checkout 11.5.0 → 12.1.0

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.
Files changed (129) hide show
  1. package/dist/index.d.ts +1 -2
  2. package/dist/src/ExpoRoot.d.ts +0 -1
  3. package/dist/src/ExpoRoot.js +2 -3
  4. package/dist/src/infrastructure/tracking/useTrackAssignedVariationByExperiment.d.ts +2 -0
  5. package/dist/src/infrastructure/tracking/useTrackAssignedVariationByExperiment.js +3 -2
  6. package/dist/src/infrastructure/tracking/useTrackChangeFeedback.d.ts +2 -0
  7. package/dist/src/infrastructure/tracking/useTrackChangeFeedback.js +3 -2
  8. package/dist/src/infrastructure/tracking/useTrackCheckout.d.ts +2 -0
  9. package/dist/src/infrastructure/tracking/useTrackCheckout.js +3 -1
  10. package/dist/src/infrastructure/tracking/useTrackImageView.d.ts +2 -0
  11. package/dist/src/infrastructure/tracking/useTrackImageView.js +3 -2
  12. package/dist/src/infrastructure/tracking/useTrackItemPageView.d.ts +2 -0
  13. package/dist/src/infrastructure/tracking/useTrackItemPageView.js +3 -1
  14. package/dist/src/infrastructure/tracking/useTrackKeepItem.d.ts +2 -0
  15. package/dist/src/infrastructure/tracking/useTrackKeepItem.js +3 -2
  16. package/dist/src/infrastructure/tracking/useTrackPageView.d.ts +2 -0
  17. package/dist/src/infrastructure/tracking/useTrackPageView.js +3 -2
  18. package/dist/src/infrastructure/tracking/useTrackPressBack.d.ts +2 -0
  19. package/dist/src/infrastructure/tracking/useTrackPressBack.js +3 -2
  20. package/dist/src/infrastructure/tracking/useTrackPressContinue.d.ts +2 -0
  21. package/dist/src/infrastructure/tracking/useTrackPressContinue.js +3 -2
  22. package/dist/src/infrastructure/tracking/useTrackPressItem.d.ts +2 -0
  23. package/dist/src/infrastructure/tracking/useTrackPressItem.js +3 -2
  24. package/dist/src/infrastructure/tracking/useTrackPressNext.d.ts +2 -0
  25. package/dist/src/infrastructure/tracking/useTrackPressNext.js +3 -2
  26. package/dist/src/infrastructure/tracking/useTrackPressPrevious.d.ts +2 -0
  27. package/dist/src/infrastructure/tracking/useTrackPressPrevious.js +3 -2
  28. package/dist/src/infrastructure/tracking/useTrackPressPricing.d.ts +2 -0
  29. package/dist/src/infrastructure/tracking/useTrackPressPricing.js +3 -2
  30. package/dist/src/infrastructure/tracking/useTrackReplaceItem.d.ts +2 -0
  31. package/dist/src/infrastructure/tracking/useTrackReplaceItem.js +3 -2
  32. package/dist/src/infrastructure/tracking/useTrackResetItem.d.ts +2 -0
  33. package/dist/src/infrastructure/tracking/useTrackResetItem.js +3 -2
  34. package/dist/src/infrastructure/tracking/useTrackReturnItem.d.ts +2 -0
  35. package/dist/src/infrastructure/tracking/useTrackReturnItem.js +3 -2
  36. package/dist/src/infrastructure/tracking/useTrackTabView.d.ts +3 -1
  37. package/dist/src/infrastructure/tracking/useTrackTabView.js +3 -2
  38. package/dist/src/infrastructure/ui/hooks/useCheckoutFlow.js +2 -1
  39. package/dist/src/infrastructure/ui/routing/CheckoutMiddleware.d.ts +1 -1
  40. package/dist/src/infrastructure/ui/routing/CheckoutMiddleware.js +5 -3
  41. package/dist/src/infrastructure/ui/test/render.js +1 -1
  42. package/dist/src/infrastructure/ui/views/App.d.ts +1 -1
  43. package/dist/src/infrastructure/ui/views/checkout/Checkout.js +4 -1
  44. package/dist/src/infrastructure/ui/views/feedback/Feedback.js +4 -1
  45. package/dist/src/infrastructure/ui/views/item/Item.js +5 -1
  46. package/dist/src/infrastructure/ui/views/item/views/itemWithCustomerDecission/ItemWithCustomerDecission.js +3 -2
  47. package/dist/src/infrastructure/ui/views/item/views/itemWithoutCustomerDecission/ItemWithoutCustomerDecission.js +4 -2
  48. package/dist/src/infrastructure/ui/views/item/views/productVariant/ProductVariant.d.ts +2 -0
  49. package/dist/src/infrastructure/ui/views/item/views/productVariant/ProductVariant.js +2 -1
  50. package/dist/src/infrastructure/ui/views/return/components/returnQuestionsForm/ReturnQuestionsForm.js +5 -2
  51. package/dist/src/infrastructure/ui/views/summary/Summary.js +4 -1
  52. package/dist/src/infrastructure/ui/views/summaryTabs/SummaryTabs.js +4 -1
  53. package/dist/src/projection/returnQuestion/returnQuestion.typeguard.d.ts +2 -2
  54. package/dist/src/version.d.ts +1 -1
  55. package/dist/src/version.js +1 -1
  56. package/index.ts +1 -1
  57. package/jest.config.js +0 -3
  58. package/jest.setup.js +9 -1
  59. package/package.json +22 -20
  60. package/src/ExpoRoot.tsx +2 -3
  61. package/src/infrastructure/tracking/useTrackAssignedVariationByExperiment.test.ts +4 -0
  62. package/src/infrastructure/tracking/useTrackAssignedVariationByExperiment.ts +5 -1
  63. package/src/infrastructure/tracking/useTrackChangeFeedback.test.tsx +4 -0
  64. package/src/infrastructure/tracking/useTrackChangeFeedback.ts +5 -2
  65. package/src/infrastructure/tracking/useTrackCheckout.test.tsx +4 -0
  66. package/src/infrastructure/tracking/useTrackCheckout.ts +5 -0
  67. package/src/infrastructure/tracking/useTrackImageView.test.tsx +4 -0
  68. package/src/infrastructure/tracking/useTrackImageView.ts +5 -1
  69. package/src/infrastructure/tracking/useTrackItemPageView.test.tsx +4 -0
  70. package/src/infrastructure/tracking/useTrackItemPageView.ts +5 -0
  71. package/src/infrastructure/tracking/useTrackKeepItem.test.tsx +4 -0
  72. package/src/infrastructure/tracking/useTrackKeepItem.ts +12 -2
  73. package/src/infrastructure/tracking/useTrackPageView.test.tsx +4 -0
  74. package/src/infrastructure/tracking/useTrackPageView.ts +5 -2
  75. package/src/infrastructure/tracking/useTrackPressBack.test.tsx +4 -0
  76. package/src/infrastructure/tracking/useTrackPressBack.ts +5 -2
  77. package/src/infrastructure/tracking/useTrackPressContinue.test.tsx +4 -0
  78. package/src/infrastructure/tracking/useTrackPressContinue.ts +5 -2
  79. package/src/infrastructure/tracking/useTrackPressItem.test.tsx +4 -0
  80. package/src/infrastructure/tracking/useTrackPressItem.ts +5 -2
  81. package/src/infrastructure/tracking/useTrackPressNext.test.tsx +4 -0
  82. package/src/infrastructure/tracking/useTrackPressNext.ts +5 -2
  83. package/src/infrastructure/tracking/useTrackPressPrevious.test.tsx +4 -0
  84. package/src/infrastructure/tracking/useTrackPressPrevious.ts +5 -2
  85. package/src/infrastructure/tracking/useTrackPressPricing.test.tsx +4 -0
  86. package/src/infrastructure/tracking/useTrackPressPricing.ts +5 -2
  87. package/src/infrastructure/tracking/useTrackReplaceItem.test.tsx +4 -0
  88. package/src/infrastructure/tracking/useTrackReplaceItem.ts +5 -1
  89. package/src/infrastructure/tracking/useTrackResetItem.test.tsx +4 -0
  90. package/src/infrastructure/tracking/useTrackResetItem.ts +12 -2
  91. package/src/infrastructure/tracking/useTrackReturnItem.test.tsx +4 -0
  92. package/src/infrastructure/tracking/useTrackReturnItem.ts +12 -2
  93. package/src/infrastructure/tracking/useTrackTabView.test.tsx +4 -0
  94. package/src/infrastructure/tracking/useTrackTabView.ts +5 -1
  95. package/src/infrastructure/ui/hooks/useCheckoutFlow.test.tsx +11 -1
  96. package/src/infrastructure/ui/hooks/useCheckoutFlow.tsx +2 -0
  97. package/src/infrastructure/ui/hooks/useQueryBus.test.tsx +1 -1
  98. package/src/infrastructure/ui/hooks/useStaticInfo.test.tsx +1 -1
  99. package/src/infrastructure/ui/routing/CheckoutMiddleware.tsx +6 -4
  100. package/src/infrastructure/ui/test/render.tsx +1 -1
  101. package/src/infrastructure/ui/views/App.tsx +1 -1
  102. package/src/infrastructure/ui/views/checkout/Checkout.test.tsx +9 -2
  103. package/src/infrastructure/ui/views/checkout/Checkout.tsx +4 -0
  104. package/src/infrastructure/ui/views/feedback/Feedback.test.tsx +7 -1
  105. package/src/infrastructure/ui/views/feedback/Feedback.tsx +4 -0
  106. package/src/infrastructure/ui/views/item/Item.test.tsx +7 -1
  107. package/src/infrastructure/ui/views/item/Item.tsx +5 -0
  108. package/src/infrastructure/ui/views/item/components/getOutOfCheckoutModal/__snapshots__/GetOutOfCheckoutModal.test.tsx.snap +34 -43
  109. package/src/infrastructure/ui/views/item/components/itemActions/__snapshots__/ItemActions.test.tsx.snap +34 -43
  110. package/src/infrastructure/ui/views/item/components/productVariantSlider/__snapshots__/ProductVariantSlider.test.tsx.snap +76 -99
  111. package/src/infrastructure/ui/views/item/components/selectModal/__snapshots__/SelecModal.test.tsx.snap +34 -43
  112. package/src/infrastructure/ui/views/item/components/sizeWithoutStockModal/__snapshots__/SizeWithoutStockModal.test.tsx.snap +34 -43
  113. package/src/infrastructure/ui/views/item/views/itemWithCustomerDecission/ItemWithCustomerDecission.test.tsx +7 -1
  114. package/src/infrastructure/ui/views/item/views/itemWithCustomerDecission/ItemWithCustomerDecission.tsx +3 -0
  115. package/src/infrastructure/ui/views/item/views/itemWithoutCustomerDecission/ItemWithoutCustomerDecission.test.tsx +7 -1
  116. package/src/infrastructure/ui/views/item/views/itemWithoutCustomerDecission/ItemWithoutCustomerDecission.tsx +4 -0
  117. package/src/infrastructure/ui/views/item/views/productVariant/ProductVariant.test.tsx +2 -0
  118. package/src/infrastructure/ui/views/item/views/productVariant/ProductVariant.tsx +4 -0
  119. package/src/infrastructure/ui/views/item/views/productVariant/__snapshots__/ProductVariant.test.tsx.snap +228 -297
  120. package/src/infrastructure/ui/views/return/Return.test.tsx +8 -1
  121. package/src/infrastructure/ui/views/return/components/returnQuestionsForm/ReturnQuestionsForm.test.tsx +2 -1
  122. package/src/infrastructure/ui/views/return/components/returnQuestionsForm/ReturnQuestionsForm.tsx +5 -2
  123. package/src/infrastructure/ui/views/shared/components/productVariant/__snapshots__/ProductVariant.test.tsx.snap +26 -32
  124. package/src/infrastructure/ui/views/summary/Summary.test.tsx +7 -1
  125. package/src/infrastructure/ui/views/summary/Summary.tsx +4 -0
  126. package/src/infrastructure/ui/views/summary/components/collapsiblePricing/__snapshots__/CollapsiblePricing.test.tsx.snap +16 -24
  127. package/src/infrastructure/ui/views/summaryTabs/SummaryTabs.test.tsx +7 -1
  128. package/src/infrastructure/ui/views/summaryTabs/SummaryTabs.tsx +4 -0
  129. package/src/infrastructure/ui/views/summaryTabs/components/checkoutItemsTabs/__snapshots__/CheckoutItemsTabs.test.tsx.snap +105 -135
@@ -1,5 +1,6 @@
1
1
  import { Country } from "@lookiero/sty-psp-locale";
2
2
  import { Segment } from "@lookiero/sty-psp-segment";
3
+ import { Tradename } from "@lookiero/sty-sp-tradename";
3
4
  import { TrackingPage } from "./tracking";
4
5
  interface ReturnItemFunction {
5
6
  (): void;
@@ -10,6 +11,7 @@ interface UseTrackReturnItemFunctionArgs {
10
11
  readonly segment: Segment;
11
12
  readonly checkoutId: string | undefined;
12
13
  readonly checkoutItemId: string;
14
+ readonly tradename: Tradename;
13
15
  }
14
16
  interface UseTrackReturnItemFunction {
15
17
  (agrs: UseTrackReturnItemFunctionArgs): ReturnItemFunction;
@@ -1,7 +1,7 @@
1
1
  import { useCallback } from "react";
2
2
  import { useEmitUserEvent } from "@lookiero/sty-psp-tracking";
3
3
  import { PROJECT, TrackingEventName, TrackingEventCategory } from "./tracking";
4
- const useTrackReturnItem = ({ page, country, segment, checkoutId, checkoutItemId }) => {
4
+ const useTrackReturnItem = ({ page, country, segment, checkoutId, tradename, checkoutItemId, }) => {
5
5
  const emitUserEvent = useEmitUserEvent();
6
6
  const returnItem = useCallback(() => {
7
7
  if (!checkoutId) {
@@ -14,10 +14,11 @@ const useTrackReturnItem = ({ page, country, segment, checkoutId, checkoutItemId
14
14
  store: country,
15
15
  segment,
16
16
  checkoutId,
17
+ tradename,
17
18
  checkoutItemId,
18
19
  };
19
20
  emitUserEvent(returnItemTrackingEvent);
20
- }, [checkoutId, checkoutItemId, country, emitUserEvent, page, segment]);
21
+ }, [checkoutId, tradename, checkoutItemId, country, emitUserEvent, page, segment]);
21
22
  return returnItem;
22
23
  };
23
24
  export { useTrackReturnItem };
@@ -1,5 +1,6 @@
1
1
  import { Country } from "@lookiero/sty-psp-locale";
2
2
  import { Segment } from "@lookiero/sty-psp-segment";
3
+ import { Tradename } from "@lookiero/sty-sp-tradename";
3
4
  import { TrackingPage } from "./tracking";
4
5
  interface TabViewFunctionArgs<T> {
5
6
  readonly tab: T;
@@ -12,6 +13,7 @@ interface UseTrackTabViewFunctionArgs {
12
13
  readonly country: Country;
13
14
  readonly segment: Segment;
14
15
  readonly checkoutId: string | undefined;
16
+ readonly tradename: Tradename;
15
17
  }
16
- declare const useTrackTabView: <T>({ page, country, segment, checkoutId, }: UseTrackTabViewFunctionArgs) => TabViewFunction<T>;
18
+ declare const useTrackTabView: <T>({ page, country, segment, checkoutId, tradename, }: UseTrackTabViewFunctionArgs) => TabViewFunction<T>;
17
19
  export { useTrackTabView };
@@ -1,7 +1,7 @@
1
1
  import { useCallback } from "react";
2
2
  import { useEmitUserEvent } from "@lookiero/sty-psp-tracking";
3
3
  import { PROJECT, TrackingEventName, TrackingEventCategory } from "./tracking";
4
- const useTrackTabView = ({ page, country, segment, checkoutId, }) => {
4
+ const useTrackTabView = ({ page, country, segment, checkoutId, tradename, }) => {
5
5
  const emitUserEvent = useEmitUserEvent();
6
6
  const tabView = useCallback(({ tab }) => {
7
7
  if (!checkoutId) {
@@ -14,10 +14,11 @@ const useTrackTabView = ({ page, country, segment, checkoutId, }) => {
14
14
  store: country,
15
15
  segment,
16
16
  checkoutId,
17
+ tradename,
17
18
  tab,
18
19
  };
19
20
  emitUserEvent(tabViewTrackingEvent);
20
- }, [checkoutId, country, emitUserEvent, page, segment]);
21
+ }, [checkoutId, tradename, country, emitUserEvent, page, segment]);
21
22
  return tabView;
22
23
  };
23
24
  export { useTrackTabView };
@@ -19,7 +19,7 @@ import { useStaticInfo } from "./useStaticInfo";
19
19
  const useCheckoutFlow = ({ checkout: checkoutProjection, order: orderProjection, subscription: subscriptionProjection, getAuthToken, onSuccess, }) => {
20
20
  const logger = useLogger();
21
21
  const queryBus = useQueryBus();
22
- const { customer: { customerId, country, segment, name, email }, basePath, } = useStaticInfo();
22
+ const { customer: { customerId, country, segment, name, email }, basePath, tradename, } = useStaticInfo();
23
23
  const paymentFlowRef = useRef(null);
24
24
  const [paymentFlowPayload] = useViewPaymentFlowPayloadByCheckoutId({
25
25
  checkoutId: checkoutProjection?.id,
@@ -53,6 +53,7 @@ const useCheckoutFlow = ({ checkout: checkoutProjection, order: orderProjection,
53
53
  userId: customerId,
54
54
  country,
55
55
  segment,
56
+ tradename,
56
57
  });
57
58
  const checkoutFlow = useCallback(async () => {
58
59
  try {
@@ -1,4 +1,4 @@
1
- import { FC } from "react";
1
+ import { FC, JSX } from "react";
2
2
  interface CheckoutMiddlewareProps {
3
3
  readonly customerId: string;
4
4
  readonly onNotAccessible: () => void;
@@ -34,7 +34,7 @@ const CheckoutMiddleware = ({ customerId, onNotAccessible, loader = React.create
34
34
  const feedbackRouteMatchRef = useRef(feedbackRouteMatch);
35
35
  feedbackRouteMatchRef.current = feedbackRouteMatch;
36
36
  const [checkout] = useViewFirstAvailableCheckoutByCustomerId({ customerId });
37
- const checkoutItemsRef = useRef();
37
+ const checkoutItemsRef = useRef([]);
38
38
  /* This hook is mounted at this level, although not being used directly, for optimization (regarding cache) */
39
39
  useViewIsSizeChangeEnabledByCheckoutId({ checkoutId: checkout?.id });
40
40
  const [startCheckout] = useStartCheckout({ checkoutId: checkout?.id, logger });
@@ -55,7 +55,9 @@ const CheckoutMiddleware = ({ customerId, onNotAccessible, loader = React.create
55
55
  */
56
56
  const itemWithoutCustomerDecision = checkout?.items.find((item) => item.status === CheckoutItemStatus.INITIAL &&
57
57
  checkoutItemsRef.current?.find((previousItem) => previousItem.id === item.id && previousItem.status !== CheckoutItemStatus.INITIAL)) || checkout?.items.find((item) => item.status === CheckoutItemStatus.INITIAL);
58
- checkoutItemsRef.current = checkout?.items;
58
+ if (checkout?.items) {
59
+ checkoutItemsRef.current = checkout.items;
60
+ }
59
61
  /* Navigate to the summary if required */
60
62
  if (itemWithoutCustomerDecision === undefined &&
61
63
  !(summaryRouteMatchRef.current ||
@@ -71,7 +73,7 @@ const CheckoutMiddleware = ({ customerId, onNotAccessible, loader = React.create
71
73
  });
72
74
  }
73
75
  }
74
- }, [basePath, checkout?.status, checkout?.items]);
76
+ }, [basePath, checkout?.items, checkout?.status]);
75
77
  if (checkout === undefined) {
76
78
  return loader;
77
79
  }
@@ -9,7 +9,7 @@ const I18nProvider = createI18nProvider({ domain: DOMAIN });
9
9
  const renderWrapper = ({ locale, messages = {}, wrapper: Wrapper = Fragment, logger = mock() }) =>
10
10
  // eslint-disable-next-line react/display-name, react/prop-types
11
11
  ({ children }) => (React.createElement(Aurora, null,
12
- React.createElement(I18nProvider, { locale: locale, messages: messages, onError: () => void 0 },
12
+ React.createElement(I18nProvider, { locale: locale, messages: messages, onError: () => { }, onWarn: () => { } },
13
13
  React.createElement(LoggerProvider, { logger: logger },
14
14
  React.createElement(Wrapper, null, children)))));
15
15
  const renderWithProviders = (ui, { locale, messages, wrapper } = { locale: "en" }) => render(ui, { wrapper: renderWrapper({ locale, messages, wrapper }) });
@@ -1,4 +1,4 @@
1
- import { FC } from "react";
1
+ import { FC, JSX } from "react";
2
2
  interface AppProps {
3
3
  readonly children: JSX.Element;
4
4
  }
@@ -25,7 +25,7 @@ import { style as checkoutStyle } from "./Checkout.style";
25
25
  import { DeliveryBanner } from "./components/deliveryBanner/DeliveryBanner";
26
26
  import { PaymentInstrument } from "./components/paymentInstrument/PaymentInstrument";
27
27
  const Checkout = ({ layout: Layout, order, subscription, getAuthToken, useRedirect, onCheckoutFlowSuccess, }) => {
28
- const { customer: { customerId, country, segment }, basePath, } = useStaticInfo();
28
+ const { customer: { customerId, country, segment }, basePath, tradename, } = useStaticInfo();
29
29
  const screenSize = useScreenSize();
30
30
  const isDektopScreen = screenSize === "L";
31
31
  const style = useMemo(() => checkoutStyle(), []);
@@ -46,6 +46,7 @@ const Checkout = ({ layout: Layout, order, subscription, getAuthToken, useRedire
46
46
  page: TrackingPage.CHECKOUT,
47
47
  country,
48
48
  segment,
49
+ tradename,
49
50
  checkoutId: checkout?.id,
50
51
  });
51
52
  const navigate = useNavigate();
@@ -53,6 +54,7 @@ const Checkout = ({ layout: Layout, order, subscription, getAuthToken, useRedire
53
54
  page: TrackingPage.CHECKOUT,
54
55
  country,
55
56
  segment,
57
+ tradename,
56
58
  checkoutId: checkout?.id,
57
59
  });
58
60
  const handleOnSubmit = useCallback(async () => {
@@ -65,6 +67,7 @@ const Checkout = ({ layout: Layout, order, subscription, getAuthToken, useRedire
65
67
  page: TrackingPage.CHECKOUT,
66
68
  country,
67
69
  segment,
70
+ tradename,
68
71
  checkoutId: checkout?.id,
69
72
  });
70
73
  const handleOnBack = useCallback(() => {
@@ -20,7 +20,7 @@ const Feedback = ({ layout: Layout }) => {
20
20
  const logger = useLogger();
21
21
  const screenSize = useScreenSize();
22
22
  const isDesktop = screenSize === "L";
23
- const { customer: { customerId, country, segment }, } = useStaticInfo();
23
+ const { customer: { customerId, country, segment }, tradename, } = useStaticInfo();
24
24
  const style = useMemo(() => feedbackStyle(), []);
25
25
  const [checkout, checkoutStatus] = useViewFirstAvailableCheckoutByCustomerId({ customerId });
26
26
  const [checkoutQuestions, checkoutQuestionsStatus] = useListCheckoutQuestionsByCheckoutId({
@@ -31,12 +31,14 @@ const Feedback = ({ layout: Layout }) => {
31
31
  country,
32
32
  segment,
33
33
  checkoutId: checkout?.id,
34
+ tradename,
34
35
  });
35
36
  const trackChangeFeedback = useTrackChangeFeedback({
36
37
  page: TrackingPage.FEEDBACK,
37
38
  country,
38
39
  segment,
39
40
  checkoutId: checkout?.id,
41
+ tradename,
40
42
  });
41
43
  const handleOnChangedFeedback = useCallback(({ checkoutQuestionId, checkoutQuestionFeedback, hasFeedback }) => {
42
44
  const question = checkoutQuestions?.find((question) => question.id === checkoutQuestionId);
@@ -59,6 +61,7 @@ const Feedback = ({ layout: Layout }) => {
59
61
  country,
60
62
  segment,
61
63
  checkoutId: checkout?.id,
64
+ tradename,
62
65
  });
63
66
  const handleOnSubmit = useCallback(async (feedbacks) => {
64
67
  try {
@@ -28,7 +28,7 @@ import { ItemWithoutCustomerDecission, } from "./views/itemWithoutCustomerDeciss
28
28
  const Item = ({ layout: Layout }) => {
29
29
  const logger = useLogger();
30
30
  const navigate = useNavigate();
31
- const { customer: { customerId, country, segment }, basePath, } = useStaticInfo();
31
+ const { customer: { customerId, country, segment }, basePath, tradename, } = useStaticInfo();
32
32
  const style = useMemo(() => itemStyle(), []);
33
33
  const screenSize = useScreenSize();
34
34
  const isDesktopScreen = screenSize !== "S";
@@ -83,6 +83,7 @@ const Item = ({ layout: Layout }) => {
83
83
  page: TrackingPage.ITEM,
84
84
  country,
85
85
  segment,
86
+ tradename,
86
87
  checkoutId: checkout?.id,
87
88
  checkoutItemId: checkoutItem.id,
88
89
  status: checkoutItem.status,
@@ -94,6 +95,7 @@ const Item = ({ layout: Layout }) => {
94
95
  page: TrackingPage.ITEM,
95
96
  country,
96
97
  segment,
98
+ tradename,
97
99
  checkoutId: checkout?.id,
98
100
  });
99
101
  const handleOnNext = useCallback(({ from, to }) => trackPressNext({ from, to }), [trackPressNext]);
@@ -101,6 +103,7 @@ const Item = ({ layout: Layout }) => {
101
103
  page: TrackingPage.ITEM,
102
104
  country,
103
105
  segment,
106
+ tradename,
104
107
  checkoutId: checkout?.id,
105
108
  });
106
109
  const handleOnPrevious = useCallback(({ from, to }) => trackPressPrevious({ from, to }), [trackPressPrevious]);
@@ -108,6 +111,7 @@ const Item = ({ layout: Layout }) => {
108
111
  page: TrackingPage.ITEM,
109
112
  country,
110
113
  segment,
114
+ tradename,
111
115
  checkoutId: checkout?.id,
112
116
  });
113
117
  const handleOnBack = useCallback(() => {
@@ -19,7 +19,7 @@ const ItemWithCustomerDecission = ({ checkoutId, checkoutItem, returnQuestions,
19
19
  const screenSize = useScreenSize();
20
20
  const isMobile = screenSize === "S";
21
21
  const logger = useLogger();
22
- const { customer: { country, segment }, } = useStaticInfo();
22
+ const { customer: { country, segment }, tradename, } = useStaticInfo();
23
23
  /* ResetCheckoutItem */
24
24
  const [resetCheckoutItem, resetCheckoutItemStatus] = useResetCheckoutItem({
25
25
  checkoutItemId: checkoutItem.id,
@@ -29,6 +29,7 @@ const ItemWithCustomerDecission = ({ checkoutId, checkoutItem, returnQuestions,
29
29
  page: TrackingPage.ITEM,
30
30
  country,
31
31
  segment,
32
+ tradename,
32
33
  checkoutId,
33
34
  checkoutItemId: checkoutItem.id,
34
35
  });
@@ -42,7 +43,7 @@ const ItemWithCustomerDecission = ({ checkoutId, checkoutItem, returnQuestions,
42
43
  return React.createElement(Spinner, { testID: "spinner" });
43
44
  }
44
45
  return (React.createElement(Body, { style: { row: style.container } },
45
- React.createElement(ProductVariant, { checkoutId: checkoutId, checkoutItem: checkoutItem, country: country, currentProductVariant: currentProductVariant, segment: segment, customerDecissionBanner: React.createElement(CustomerDecissionBanner, { checkoutItemStatus: checkoutItem.status, onPress: resetItem }) }, checkoutItem.status === CheckoutItemStatus.RETURNED && (React.createElement(View, { style: [style.feedbackContainer, isMobile ? style.feedbackContainerMobile : undefined] },
46
+ React.createElement(ProductVariant, { checkoutId: checkoutId, checkoutItem: checkoutItem, country: country, currentProductVariant: currentProductVariant, segment: segment, tradename: tradename, customerDecissionBanner: React.createElement(CustomerDecissionBanner, { checkoutItemStatus: checkoutItem.status, onPress: resetItem }) }, checkoutItem.status === CheckoutItemStatus.RETURNED && (React.createElement(View, { style: [style.feedbackContainer, isMobile ? style.feedbackContainerMobile : undefined] },
46
47
  React.createElement(ReturnQuestionsFeedback, { returnQuestions: returnQuestions, onEditFeedback: onEditFeedback }))))));
47
48
  };
48
49
  export { ItemWithCustomerDecission };
@@ -17,7 +17,7 @@ import { ProductVariant } from "../productVariant/ProductVariant";
17
17
  import { style as itemWithoutCustomerDecissionStyle } from "./ItemWithoutCustomerDecission.style";
18
18
  const ItemWithoutCustomerDecission = ({ checkoutId, checkoutItem, bookedProductsVariants, currentProductVariant, onReturn, }) => {
19
19
  const logger = useLogger();
20
- const { customer: { country, segment }, } = useStaticInfo();
20
+ const { customer: { country, segment }, tradename, } = useStaticInfo();
21
21
  const style = useMemo(() => itemWithoutCustomerDecissionStyle(), []);
22
22
  /* KeepCheckoutItem */
23
23
  const [keepCheckoutItem, keepCheckoutItemStatus] = useKeepCheckoutItem({ checkoutItemId: checkoutItem.id, logger });
@@ -25,6 +25,7 @@ const ItemWithoutCustomerDecission = ({ checkoutId, checkoutItem, bookedProducts
25
25
  page: TrackingPage.ITEM,
26
26
  country,
27
27
  segment,
28
+ tradename,
28
29
  checkoutId,
29
30
  checkoutItemId: checkoutItem.id,
30
31
  });
@@ -42,6 +43,7 @@ const ItemWithoutCustomerDecission = ({ checkoutId, checkoutItem, bookedProducts
42
43
  page: TrackingPage.ITEM,
43
44
  country,
44
45
  segment,
46
+ tradename,
45
47
  checkoutId,
46
48
  checkoutItemId: checkoutItem.id,
47
49
  productVariantId: checkoutItem.productVariant.id,
@@ -64,7 +66,7 @@ const ItemWithoutCustomerDecission = ({ checkoutId, checkoutItem, bookedProducts
64
66
  React.createElement(SizeWithoutStockModal, { visible: sizeWithoutStockModalVisible, onDismiss: handleOnHideSizeWithoutStockModal }),
65
67
  React.createElement(ScrollView, { showsVerticalScrollIndicator: false, testID: checkoutItem.id },
66
68
  React.createElement(Body, { style: { row: style.container } },
67
- React.createElement(ProductVariant, { checkoutId: checkoutId, checkoutItem: checkoutItem, country: country, currentProductVariant: currentProductVariant, segment: segment, style: {
69
+ React.createElement(ProductVariant, { checkoutId: checkoutId, checkoutItem: checkoutItem, country: country, currentProductVariant: currentProductVariant, segment: segment, tradename: tradename, style: {
68
70
  content: { paddingBottom: Platform.OS === "web" ? style.productVariantPaddingBottom : stickyHeight },
69
71
  } }))),
70
72
  React.createElement(ItemActions, { country: country, currentProductVariant: currentProductVariant, productVariants: bookedProductsVariants?.productVariants, onKeep: handleOnKeep, onLayout: handleOnStickyLayout, onReplace: handleOnReplace, onReturn: onReturn, onShowSizeWithoutStockModal: handleOnShowSizeWithoutStockModal })));
@@ -2,10 +2,12 @@ import { FC, ReactNode } from "react";
2
2
  import { StyleProp, ViewStyle } from "react-native";
3
3
  import { Country } from "@lookiero/sty-psp-locale";
4
4
  import { Segment } from "@lookiero/sty-psp-segment";
5
+ import { Tradename } from "@lookiero/sty-sp-tradename";
5
6
  import { ProductVariantProjection } from "../../../../../../projection/bookedProductsVariants/bookedProductsVariants";
6
7
  import { CheckoutItemProjection } from "../../../../../../projection/checkoutItem/checkoutItem";
7
8
  type ProductVariantStyle = "content";
8
9
  interface ProductVariantProps {
10
+ readonly tradename: Tradename;
9
11
  readonly country: Country;
10
12
  readonly segment: Segment;
11
13
  readonly checkoutId: string;
@@ -7,7 +7,7 @@ import { useTrackImageView } from "../../../../../tracking/useTrackImageView";
7
7
  import { ProductVariantDescription } from "../../components/productVariantDescription/ProductVariantDescription";
8
8
  import { ProductVariantSlider } from "../../components/productVariantSlider/ProductVariantSlider";
9
9
  import { style as productVariantStyle } from "./ProductVariant.style";
10
- const ProductVariant = ({ country, segment, checkoutId, checkoutItem, currentProductVariant, style: customStyle, children, customerDecissionBanner, }) => {
10
+ const ProductVariant = ({ tradename, country, segment, checkoutId, checkoutItem, currentProductVariant, style: customStyle, children, customerDecissionBanner, }) => {
11
11
  const screenSize = useScreenSize();
12
12
  const isDesktopScreen = screenSize !== "S";
13
13
  const style = useMemo(() => productVariantStyle(), []);
@@ -15,6 +15,7 @@ const ProductVariant = ({ country, segment, checkoutId, checkoutItem, currentPro
15
15
  page: TrackingPage.ITEM,
16
16
  country,
17
17
  segment,
18
+ tradename,
18
19
  checkoutId,
19
20
  checkoutItemId: checkoutItem.id,
20
21
  productVariantId: checkoutItem.productVariant.id,
@@ -41,7 +41,7 @@ const returnQuestionItems = {
41
41
  };
42
42
  const ReturnQuestionsForm = ({ checkout, checkoutItem, country, layout: Layout, segment, }) => {
43
43
  const navigate = useNavigate();
44
- const { basePath } = useStaticInfo();
44
+ const { basePath, tradename } = useStaticInfo();
45
45
  const logger = useLogger();
46
46
  const screenSize = useScreenSize();
47
47
  const isDektopScreen = screenSize === "L";
@@ -62,14 +62,16 @@ const ReturnQuestionsForm = ({ checkout, checkoutItem, country, layout: Layout,
62
62
  page: TrackingPage.RETURN,
63
63
  country,
64
64
  segment,
65
+ tradename,
65
66
  checkoutId: checkout.id,
66
67
  checkoutItemId: checkoutItem.id,
67
68
  });
68
- useTrackPageView({ checkoutId: checkout.id, country, segment, page: TrackingPage.RETURN });
69
+ useTrackPageView({ checkoutId: checkout.id, country, segment, tradename, page: TrackingPage.RETURN });
69
70
  const trackPressBack = useTrackPressBack({
70
71
  page: TrackingPage.ITEM,
71
72
  country,
72
73
  segment,
74
+ tradename,
73
75
  checkoutId: checkout?.id,
74
76
  });
75
77
  const handleOnBack = useCallback(() => {
@@ -80,6 +82,7 @@ const ReturnQuestionsForm = ({ checkout, checkoutItem, country, layout: Layout,
80
82
  page: TrackingPage.ITEM,
81
83
  country,
82
84
  segment,
85
+ tradename,
83
86
  checkoutId: checkout.id,
84
87
  });
85
88
  const handleOnSubmit = useCallback(async () => {
@@ -21,7 +21,7 @@ import { Routes } from "../../routing/routes";
21
21
  import { style as summaryStyle } from "./Summary.style";
22
22
  import { CollapsiblePricing } from "./components/collapsiblePricing/CollapsiblePricing";
23
23
  const Summary = ({ layout: Layout, children }) => {
24
- const { customer: { customerId, country, segment }, basePath, } = useStaticInfo();
24
+ const { customer: { customerId, country, segment }, basePath, tradename, } = useStaticInfo();
25
25
  const screenSize = useScreenSize();
26
26
  const isDesktopScreen = screenSize === "L";
27
27
  const style = useMemo(() => summaryStyle(), []);
@@ -40,6 +40,7 @@ const Summary = ({ layout: Layout, children }) => {
40
40
  page: TrackingPage.SUMMARY,
41
41
  country,
42
42
  segment,
43
+ tradename,
43
44
  checkoutId: checkout?.id,
44
45
  });
45
46
  const handleOnPricingLayout = useCallback(({ height }) => setPricingHeight(height), []);
@@ -61,12 +62,14 @@ const Summary = ({ layout: Layout, children }) => {
61
62
  page: TrackingPage.SUMMARY,
62
63
  country,
63
64
  segment,
65
+ tradename,
64
66
  checkoutId: checkout?.id,
65
67
  });
66
68
  const trackPressContinue = useTrackPressContinue({
67
69
  page: TrackingPage.SUMMARY,
68
70
  country,
69
71
  segment,
72
+ tradename,
70
73
  checkoutId: checkout?.id,
71
74
  });
72
75
  const handleOnSubmit = useCallback(() => {
@@ -17,7 +17,7 @@ const TAB_INDEX = {
17
17
  };
18
18
  const SummaryTabs = () => {
19
19
  const { tab } = useParams();
20
- const { customer: { customerId, country, segment }, basePath, } = useStaticInfo();
20
+ const { customer: { customerId, country, segment }, basePath, tradename, } = useStaticInfo();
21
21
  const tabIndex = useMemo(() => TAB_INDEX[tab] || 0, [tab]);
22
22
  const [checkout, checkoutStatus] = useViewFirstAvailableCheckoutByCustomerId({ customerId });
23
23
  const navigate = useNavigate();
@@ -25,12 +25,14 @@ const SummaryTabs = () => {
25
25
  page: TrackingPage.SUMMARY,
26
26
  country,
27
27
  segment,
28
+ tradename,
28
29
  checkoutId: checkout?.id,
29
30
  });
30
31
  const trackPressItem = useTrackPressItem({
31
32
  page: TrackingPage.SUMMARY,
32
33
  country,
33
34
  segment,
35
+ tradename,
34
36
  checkoutId: checkout?.id,
35
37
  });
36
38
  const handleOnPressItem = useCallback((checkoutItemId) => {
@@ -41,6 +43,7 @@ const SummaryTabs = () => {
41
43
  page: TrackingPage.SUMMARY,
42
44
  country,
43
45
  segment,
46
+ tradename,
44
47
  checkoutId: checkout?.id,
45
48
  });
46
49
  const handleOnChangedTab = useCallback((active) => trackTabView({ tab: active === 0 ? "keep" : "return" }), [trackTabView]);
@@ -1,5 +1,5 @@
1
- import { ReturnQuestionProjection, ReturnQuestionTypesWithChildren } from "./returnQuestion";
1
+ import { ReturnQuestionProjection, ReturnQuestionTypesWithChildren, ReturnQuestionTypesWithOptionalTranslationKeys } from "./returnQuestion";
2
2
  import { ReturnQuestionType } from "./returnQuestion.constants";
3
- declare const returnQuestionWithTranslationKey: (question: ReturnQuestionProjection) => question is ReturnQuestionProjection<ReturnQuestionType.HOST_DEFAULT | ReturnQuestionType.HOST_TEXTAREA | ReturnQuestionType.HOST_SELECT | ReturnQuestionType.TEXTAREA | ReturnQuestionType.OPTION>;
3
+ declare const returnQuestionWithTranslationKey: (question: ReturnQuestionProjection) => question is ReturnQuestionProjection<Exclude<ReturnQuestionType, ReturnQuestionTypesWithOptionalTranslationKeys>>;
4
4
  declare const returnQuestionHasChildren: (question: ReturnQuestionProjection) => question is ReturnQuestionProjection<ReturnQuestionTypesWithChildren>;
5
5
  export { returnQuestionWithTranslationKey, returnQuestionHasChildren };
@@ -1 +1 @@
1
- export declare const VERSION = "11.5.0";
1
+ export declare const VERSION = "12.1.0";
@@ -1 +1 @@
1
- export const VERSION = "11.5.0";
1
+ export const VERSION = "12.1.0";
package/index.ts CHANGED
@@ -58,9 +58,9 @@ const bootstrap: BootstrapFunction = ({ apiUrl, getAuthToken, translations, sent
58
58
  };
59
59
  };
60
60
 
61
- export type { Project };
62
61
  export { bootstrap, translationEndpoint, translationExternalEndpoint, Country, Segment, CheckoutStatus, Tradename };
63
62
  export type {
63
+ Project,
64
64
  SentryEnvironment,
65
65
  KameleoonEnvironment,
66
66
  Customer,
package/jest.config.js CHANGED
@@ -4,7 +4,4 @@ module.exports = {
4
4
  ...jestReactNativeConfig,
5
5
  setupFilesAfterEnv: ["<rootDir>/jest.setup.js"],
6
6
  setupFiles: ["../../node_modules/react-native-gesture-handler/jestSetup.js"],
7
- moduleNameMapper: {
8
- ...(jestReactNativeConfig.moduleNameMapper || {}),
9
- },
10
7
  };
package/jest.setup.js CHANGED
@@ -1,9 +1,17 @@
1
1
  import mockAsyncStorage from "@react-native-async-storage/async-storage/jest/async-storage-mock";
2
- import "@testing-library/jest-native/extend-expect";
3
2
  import "@lookiero/sty-psp-jest-config/jest.setup.base";
4
3
 
5
4
  require("react-native-reanimated").setUpTests();
6
5
 
6
+ jest.mock('react-native-reanimated', () => {
7
+ const Reanimated = jest.requireActual('react-native-reanimated/mock');
8
+
9
+ // Override call to prevent warnings in newer versions
10
+ Reanimated.default.call = () => {};
11
+
12
+ return Reanimated;
13
+ });
14
+
7
15
  jest.mock("@react-native-async-storage/async-storage", () => mockAsyncStorage);
8
16
 
9
17
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lookiero/checkout",
3
- "version": "11.5.0",
3
+ "version": "12.1.0",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "sideEffects": "false",
@@ -22,23 +22,23 @@
22
22
  "@lookiero/messaging": "^8.1.1",
23
23
  "@lookiero/messaging-react": "^8.1.1",
24
24
  "@lookiero/sty-psp-ab-testing": "^0.3",
25
- "@lookiero/sty-psp-expo-config": "^0.2",
25
+ "@lookiero/sty-psp-expo-config": "^1.0",
26
26
  "@lookiero/sty-psp-http": "^2.0",
27
27
  "@lookiero/sty-psp-i18n": "^1.0",
28
28
  "@lookiero/sty-psp-locale": "^0.4",
29
- "@lookiero/sty-psp-logging": "^0.5",
30
- "@lookiero/sty-psp-notifications": "^1.2",
31
- "@lookiero/sty-psp-react-native": "^0.3",
29
+ "@lookiero/sty-psp-logging": "^1.0",
30
+ "@lookiero/sty-psp-notifications": "^2.0",
31
+ "@lookiero/sty-psp-react-native": "^1.0",
32
32
  "@lookiero/sty-psp-segment": "^0.1",
33
33
  "@lookiero/sty-psp-storage": "^0.2",
34
- "@lookiero/sty-psp-tracking": "^0.2",
35
- "@lookiero/sty-sp-tradename": "^1.0",
36
- "@lookiero/sty-psp-ui": "^1.1",
37
- "@lookiero/sty-psp-ui-settings": "^0.2",
34
+ "@lookiero/sty-psp-tracking": "^2.0",
35
+ "@lookiero/sty-psp-ui-settings": "^1.0",
36
+ "@lookiero/sty-psp-ui": "^2.0",
38
37
  "@lookiero/sty-psp-units": "^0.1",
39
38
  "@lookiero/sty-psp-uuid": "^0.2",
39
+ "@lookiero/sty-sp-tradename": "^1.0",
40
40
  "react-native-keyboard-aware-scroll-view": "^0.9.5",
41
- "react-native-svg": "15.2.0",
41
+ "react-native-svg": "15.8.0",
42
42
  "tiny-invariant": "^1.3.1"
43
43
  },
44
44
  "devDependencies": {
@@ -52,20 +52,22 @@
52
52
  "@lookiero/sty-psp-scripts": "*",
53
53
  "@lookiero/sty-psp-typescript": "*",
54
54
  "@react-native-async-storage/async-storage": "1.23.1",
55
+ "@react-native/assets-registry": "^0.79.2",
55
56
  "@remix-run/router": ">=1.10",
56
- "@testing-library/react-native": ">=12",
57
+ "@testing-library/react-native": ">=13",
57
58
  "@types/jest-when": ">=3",
58
59
  "apollo-boost": "0.4.4",
59
60
  "buffer": "5.6.0",
60
61
  "cypress": "^13.14.2",
61
62
  "detox": "^20.11.0",
62
- "expo-crypto": "~13.0.2",
63
+ "expo-crypto": "~14.0.2",
63
64
  "jest-mock-extended": ">=3",
64
65
  "jest-when": ">=3",
65
- "react-native-gesture-handler": "~2.16.1",
66
+ "metro": "^0.81.0",
67
+ "react-native-gesture-handler": "~2.20.2",
66
68
  "react-native-get-random-values": "~1.11.0",
67
- "react-native-reanimated": "~3.10.1",
68
- "react-native-safe-area-context": "4.10.5",
69
+ "react-native-reanimated": "~3.16.1",
70
+ "react-native-safe-area-context": "4.12.0",
69
71
  "webpack-bundle-analyzer": "^4.10.2"
70
72
  },
71
73
  "peerDependencies": {
@@ -77,14 +79,14 @@
77
79
  "@lookiero/i18n-react": ">=2",
78
80
  "@lookiero/payments-front": ">=7",
79
81
  "apollo-boost": "0.4.4",
80
- "expo": ">=51",
82
+ "expo": ">=52",
81
83
  "expo-font": ">=12",
82
84
  "react": ">=18",
83
- "react-native": ">=0.74",
84
- "react-native-gesture-handler": "~2.16.1",
85
+ "react-native": ">=0.76",
86
+ "react-native-gesture-handler": ">=2.20",
85
87
  "react-native-get-random-values": ">=1.11",
86
- "react-native-reanimated": "~3.10.1",
87
- "react-native-safe-area-context": ">=4.10",
88
+ "react-native-reanimated": ">=3.16",
89
+ "react-native-safe-area-context": ">=4.12",
88
90
  "react-router-dom": ">=6.14",
89
91
  "react-router-native": ">=6.14",
90
92
  "uuid": ">=9"
package/src/ExpoRoot.tsx CHANGED
@@ -1,6 +1,5 @@
1
1
  import { PortalProvider } from "@gorhom/portal";
2
2
  import { useFonts } from "expo-font";
3
- import "expo/build/Expo.fx";
4
3
  import React, { FC, useCallback, useState } from "react";
5
4
  import { Platform, ScrollView } from "react-native";
6
5
  import { Navigate, Route, Routes } from "react-router-native";
@@ -38,7 +37,7 @@ const order: OrderProjection = {
38
37
  };
39
38
 
40
39
  const customer: Customer = {
41
- customerId: "dd186ec9-109f-418d-a770-c6721aa2a97e",
40
+ customerId: "5c38e826-3d01-4a4b-a3d1-8a4166dc2a31",
42
41
  country: Country.NL,
43
42
  segment: Segment.WOMEN,
44
43
  email: "email@example.com",
@@ -59,7 +58,7 @@ const apiUrl =
59
58
  ? "/local-to-dev"
60
59
  : "/checkout/api";
61
60
  const authToken =
62
- "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjU2OTUxOTEsImV4cCI6MTc0ODA3NzU5NSwiZGlzcGxheU5hbWUiOiJUZXN0aW5nIiwiY291bnRyeV9jb2RlIjoiRVMiLCJhY2Nlc3NWaWEiOiJlbWFpbCIsInN1YnNjcmlwdGlvblN0YXJ0aW5nRGF0ZSI6IjIwMjUtMDQtMjQiLCJpbXBlcnNvbmF0ZWQiOmZhbHNlLCJ1dWlkIjoiZGQxODZlYzktMTA5Zi00MThkLWE3NzAtYzY3MjFhYTJhOTdlIiwidHJhZGVuYW1lIjoiTE9PS0lFUk8iLCJpYXQiOjE3NDU0ODU1OTV9.MHdtbMWX4lUU98ARiGALsUNkoqu1wKN7Qd-fCv6oqi4";
61
+ "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjU3MDEwMTIsImV4cCI6MTc1MDMyMTgwOSwiZGlzcGxheU5hbWUiOiJUZXN0aW5nIiwiY291bnRyeV9jb2RlIjoiRVMiLCJhY2Nlc3NWaWEiOiJlbWFpbCIsInN1YnNjcmlwdGlvblN0YXJ0aW5nRGF0ZSI6IjIwMjUtMDUtMTkiLCJpbXBlcnNvbmF0ZWQiOmZhbHNlLCJ1dWlkIjoiNWMzOGU4MjYtM2QwMS00YTRiLWEzZDEtOGE0MTY2ZGMyYTMxIiwidHJhZGVuYW1lIjoiTE9PS0lFUk8iLCJpYXQiOjE3NDc2NDM0MDl9.-amqZAXKy9KKeo9a7bOQigWw1flM99OBlddxbMBA_PU";
63
62
  const getAuthToken = () => Promise.resolve(authToken);
64
63
 
65
64
  const externalTranslationsUrl =