@lookiero/checkout 7.0.0-beta.0 → 7.0.1-beta.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 (48) hide show
  1. package/dist/src/ExpoRoot.js +1 -8
  2. package/dist/src/infrastructure/ab-testing/kameleoonEnvironment.d.ts +2 -6
  3. package/dist/src/infrastructure/ui/components/organisms/returnQuestions/components/hostDefaultReturnQuestionItem/HostDefaultReturnQuestionItem.js +1 -10
  4. package/dist/src/infrastructure/ui/components/organisms/returnQuestions/components/hostDefaultReturnQuestionItem/HostDefaultReturnQuestionItem.style.d.ts +1 -7
  5. package/dist/src/infrastructure/ui/components/organisms/returnQuestions/components/hostDefaultReturnQuestionItem/HostDefaultReturnQuestionItem.style.js +1 -7
  6. package/dist/src/infrastructure/ui/components/organisms/returnQuestions/components/textareaReturnQuestionItem/TextareaReturnQuestionItem.js +2 -7
  7. package/dist/src/infrastructure/ui/routing/CheckoutMiddleware.js +5 -1
  8. package/dist/src/infrastructure/ui/routing/Routing.js +2 -4
  9. package/dist/src/infrastructure/ui/views/checkout/Checkout.js +4 -4
  10. package/dist/src/infrastructure/ui/views/feedback/Feedback.d.ts +2 -2
  11. package/dist/src/infrastructure/ui/views/item/Item.js +4 -33
  12. package/dist/src/infrastructure/ui/views/return/Return.js +8 -127
  13. package/dist/src/infrastructure/ui/views/return/components/productVariantPreview/ProductVariantPreview.js +5 -7
  14. package/dist/src/infrastructure/ui/views/return/components/returnQuestionsForm/ReturnQuestionsForm.d.ts +15 -0
  15. package/dist/src/infrastructure/ui/views/return/components/returnQuestionsForm/ReturnQuestionsForm.js +112 -0
  16. package/dist/src/infrastructure/ui/views/return/components/returnQuestionsForm/ReturnQuestionsForm.style.d.ts +40 -0
  17. package/dist/src/infrastructure/ui/views/return/components/returnQuestionsForm/ReturnQuestionsForm.style.js +43 -0
  18. package/dist/src/infrastructure/ui/views/summary/Summary.js +4 -4
  19. package/dist/src/version.d.ts +1 -1
  20. package/dist/src/version.js +1 -1
  21. package/package.json +1 -1
  22. package/src/ExpoRoot.tsx +1 -8
  23. package/src/infrastructure/ab-testing/kameleoonEnvironment.ts +3 -7
  24. package/src/infrastructure/ui/components/organisms/returnQuestions/components/hostDefaultReturnQuestionItem/HostDefaultReturnQuestionItem.style.ts +1 -7
  25. package/src/infrastructure/ui/components/organisms/returnQuestions/components/hostDefaultReturnQuestionItem/HostDefaultReturnQuestionItem.test.tsx +0 -5
  26. package/src/infrastructure/ui/components/organisms/returnQuestions/components/hostDefaultReturnQuestionItem/HostDefaultReturnQuestionItem.tsx +2 -17
  27. package/src/infrastructure/ui/components/organisms/returnQuestions/components/textareaReturnQuestionItem/TextareaReturnQuestionItem.test.tsx +0 -5
  28. package/src/infrastructure/ui/components/organisms/returnQuestions/components/textareaReturnQuestionItem/TextareaReturnQuestionItem.tsx +11 -20
  29. package/src/infrastructure/ui/routing/CheckoutMiddleware.test.tsx +10 -0
  30. package/src/infrastructure/ui/routing/CheckoutMiddleware.tsx +7 -1
  31. package/src/infrastructure/ui/routing/Routing.tsx +3 -6
  32. package/src/infrastructure/ui/views/checkout/Checkout.tsx +6 -6
  33. package/src/infrastructure/ui/views/feedback/Feedback.tsx +2 -2
  34. package/src/infrastructure/ui/views/item/Item.test.tsx +6 -62
  35. package/src/infrastructure/ui/views/item/Item.tsx +5 -48
  36. package/src/infrastructure/ui/views/return/Return.test.tsx +54 -0
  37. package/src/infrastructure/ui/views/return/Return.tsx +12 -200
  38. package/src/infrastructure/ui/views/return/components/productVariantPreview/ProductVariantPreview.test.tsx +32 -0
  39. package/src/infrastructure/ui/views/return/components/productVariantPreview/ProductVariantPreview.tsx +12 -7
  40. package/src/infrastructure/ui/views/return/components/productVariantPreview/__snapshots__/ProductVariantPreview.test.tsx.snap +221 -0
  41. package/src/infrastructure/ui/views/return/components/returnQuestionsForm/ReturnQuestionsForm.test.tsx +95 -0
  42. package/src/infrastructure/ui/views/return/components/returnQuestionsForm/ReturnQuestionsForm.tsx +184 -0
  43. package/src/infrastructure/ui/views/summary/Summary.tsx +6 -6
  44. package/src/infrastructure/ui/hooks/useNewFeedbackExperiment.test.tsx +0 -84
  45. package/src/infrastructure/ui/hooks/useNewFeedbackExperiment.tsx +0 -82
  46. package/src/infrastructure/ui/views/item/components/returnQuestionsForm/ReturnQuestionsForm.style.ts +0 -18
  47. package/src/infrastructure/ui/views/item/components/returnQuestionsForm/ReturnQuestionsForm.tsx +0 -79
  48. /package/src/infrastructure/ui/views/return/{Return.style.ts → components/returnQuestionsForm/ReturnQuestionsForm.style.ts} +0 -0
@@ -1,82 +0,0 @@
1
- import React, { createContext, FC, ReactNode, useContext, useEffect, useMemo, useRef } from "react";
2
- import invariant from "tiny-invariant";
3
- import { Spinner } from "@lookiero/aurora";
4
- import { useAssignedVariationByExperimentId } from "@lookiero/sty-psp-ab-testing";
5
- import { useViewFirstAvailableCheckoutByCustomerId } from "../../projection/checkout/react/useViewFirstAvailableCheckoutByCustomerId";
6
- import { useTrackAssignedVariationByExperiment } from "../../tracking/useTrackAssignedVariationByExperiment";
7
- import { useStaticInfo } from "./useStaticInfo";
8
-
9
- enum NewFeedbackExperimentVariation {
10
- CONTROL = "control",
11
- RETURN_PAGE = "return_page",
12
- }
13
-
14
- interface NewFeedbackExperiment {
15
- readonly variation: NewFeedbackExperimentVariation;
16
- }
17
-
18
- const NewFeedbackExperimentContext = createContext<NewFeedbackExperiment>(null as unknown as NewFeedbackExperiment);
19
-
20
- interface NewFeedbackExperimentProviderProps {
21
- readonly children: ReactNode;
22
- }
23
-
24
- const NewFeedbackExperimentProvider: FC<NewFeedbackExperimentProviderProps> = ({ children }) => {
25
- const {
26
- kameleoon: {
27
- experiments: {
28
- newFeedback: { id: newFeedbackId, variations },
29
- },
30
- },
31
- customer: { customerId, country, segment },
32
- } = useStaticInfo();
33
- const [checkout] = useViewFirstAvailableCheckoutByCustomerId({ customerId });
34
- const { assignedVariation: newFeedbackVariation } = useAssignedVariationByExperimentId({
35
- experimentId: newFeedbackId,
36
- });
37
- const trackAssignedVariation = useTrackAssignedVariationByExperiment({
38
- checkoutId: checkout?.id,
39
- country,
40
- segment,
41
- experimentId: newFeedbackId,
42
- });
43
-
44
- const value = useMemo(
45
- () => ({
46
- variation:
47
- newFeedbackVariation?.id === Number(variations.v1)
48
- ? NewFeedbackExperimentVariation.RETURN_PAGE
49
- : NewFeedbackExperimentVariation.CONTROL,
50
- }),
51
- [newFeedbackVariation?.id, variations.v1],
52
- );
53
-
54
- const assignedVariantTracked = useRef(false);
55
- useEffect(() => {
56
- if (assignedVariantTracked.current || !newFeedbackVariation || !checkout?.id) {
57
- return;
58
- }
59
-
60
- trackAssignedVariation({ assignedVariation: newFeedbackVariation });
61
- assignedVariantTracked.current = true;
62
- }, [checkout?.id, newFeedbackVariation, trackAssignedVariation]);
63
-
64
- if (!checkout) {
65
- return <Spinner />;
66
- }
67
-
68
- return <NewFeedbackExperimentContext.Provider value={value}>{children}</NewFeedbackExperimentContext.Provider>;
69
- };
70
-
71
- const useNewFeedbackExperiment = () => {
72
- const newFeedbackExperiment = useContext(NewFeedbackExperimentContext);
73
-
74
- invariant(
75
- newFeedbackExperiment,
76
- "Your are trying to use the useNewFeedbackExperiment hook without wrapping your app with the <NewFeedbackExperimentProvider>.",
77
- );
78
-
79
- return newFeedbackExperiment.variation;
80
- };
81
-
82
- export { useNewFeedbackExperiment, NewFeedbackExperimentProvider, NewFeedbackExperimentVariation };
@@ -1,18 +0,0 @@
1
- import { StyleSheet } from "react-native";
2
- import { theme } from "@lookiero/sty-psp-ui";
3
-
4
- const { space6, space8 } = theme();
5
-
6
- const style = StyleSheet.create({
7
- modalContent: {
8
- paddingHorizontal: space6,
9
- },
10
- submit: {
11
- marginTop: space8,
12
- },
13
- title: {
14
- marginBottom: space6,
15
- },
16
- });
17
-
18
- export { style };
@@ -1,79 +0,0 @@
1
- import { PortalHost } from "@gorhom/portal";
2
- import React, { FC, useCallback } from "react";
3
- import { View } from "react-native";
4
- import { Button, Text } from "@lookiero/aurora";
5
- import { useI18nMessage } from "@lookiero/i18n-react";
6
- import { Modal } from "@lookiero/sty-psp-ui";
7
- import { FeedbackProjection } from "../../../../../../projection/feedback/feedback";
8
- import {
9
- ReturnQuestionProjection,
10
- ReturnQuestionType,
11
- } from "../../../../../../projection/returnQuestion/returnQuestion";
12
- import { ReturnQuestions } from "../../../../components/organisms/returnQuestions/ReturnQuestions";
13
- import { useReturnQuestionFeedback } from "../../../../components/organisms/returnQuestions/behaviors/useReturnQuestionFeedback";
14
- import {
15
- ReturnQuestionItemProvider,
16
- ReturnQuestionItems,
17
- } from "../../../../components/organisms/returnQuestions/behaviors/useReturnQuestionItem";
18
- import { HostDefaultReturnQuestionItem } from "../../../../components/organisms/returnQuestions/components/hostDefaultReturnQuestionItem/HostDefaultReturnQuestionItem";
19
- import { HostSelectReturnQuestionItem } from "../../../../components/organisms/returnQuestions/components/hostSelectReturnQuestionItem/HostSelectReturnQuestionItem";
20
- import { HostStackReturnQuestionItem } from "../../../../components/organisms/returnQuestions/components/hostStackReturnQuestionItem/modal/HostStackReturnQuestionItem";
21
- import { OptionReturnQuestionItem } from "../../../../components/organisms/returnQuestions/components/optionReturnQuestionItem/OptionReturnQuestionItem";
22
- import { TextareaReturnQuestionItem } from "../../../../components/organisms/returnQuestions/components/textareaReturnQuestionItem/TextareaReturnQuestionItem";
23
- import { I18nMessages } from "../../../../i18n/i18n";
24
- import { style } from "./ReturnQuestionsForm.style";
25
-
26
- const RETURN_QUESTION_FORM_PORTAL_HOST_NAME = "return-question-form-portal";
27
-
28
- const returnQuestionItems: ReturnQuestionItems = {
29
- [ReturnQuestionType.HOST_DEFAULT]: HostDefaultReturnQuestionItem,
30
- [ReturnQuestionType.HOST_TEXTAREA]: HostDefaultReturnQuestionItem,
31
- [ReturnQuestionType.HOST_SELECT]: HostSelectReturnQuestionItem,
32
- [ReturnQuestionType.HOST_STACK]: HostStackReturnQuestionItem,
33
- [ReturnQuestionType.TEXTAREA]: TextareaReturnQuestionItem,
34
- [ReturnQuestionType.OPTION]: OptionReturnQuestionItem,
35
- };
36
-
37
- interface ReturnQuestionsFormProps {
38
- readonly visible: boolean;
39
- readonly returnQuestions: ReturnQuestionProjection[];
40
- readonly onSubmit: (feedback: FeedbackProjection) => void;
41
- readonly onClose: () => void;
42
- }
43
-
44
- const ReturnQuestionsForm: FC<ReturnQuestionsFormProps> = ({ returnQuestions, visible, onSubmit, onClose }) => {
45
- const titleText = useI18nMessage({ id: I18nMessages.RETURN_QUESTIONS_TITLE });
46
- const submitButtonText = useI18nMessage({ id: I18nMessages.RETURN_QUESTIONS_SUBMIT_BUTTON });
47
-
48
- const feedback = useReturnQuestionFeedback();
49
-
50
- const handleOnSubmit = useCallback(() => onSubmit(feedback), [feedback, onSubmit]);
51
-
52
- return (
53
- <ReturnQuestionItemProvider returnQuestionItems={returnQuestionItems}>
54
- <PortalHost name={RETURN_QUESTION_FORM_PORTAL_HOST_NAME} />
55
- <Modal
56
- portalHostName={RETURN_QUESTION_FORM_PORTAL_HOST_NAME}
57
- testID="return-questions-form-modal"
58
- visible={visible}
59
- scroll
60
- showCloseButton
61
- onClose={onClose}
62
- >
63
- <View style={style.modalContent}>
64
- <Text level={3} style={style.title} heading>
65
- {titleText}
66
- </Text>
67
-
68
- <ReturnQuestions portalHostName={RETURN_QUESTION_FORM_PORTAL_HOST_NAME} returnQuestions={returnQuestions} />
69
-
70
- <Button style={style.submit} testID="return-questions-button" onPress={handleOnSubmit}>
71
- {submitButtonText}
72
- </Button>
73
- </View>
74
- </Modal>
75
- </ReturnQuestionItemProvider>
76
- );
77
- };
78
-
79
- export { ReturnQuestionsForm };