@envive-ai/react-hooks 0.2.6-alpha-marlo.0 → 0.2.6-alpha-arthur-3
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/AmplitudeOperations-BjC8DOqm.js +34 -0
- package/dist/AmplitudeOperations-CQs4sVHN.cjs +41 -0
- package/dist/{NewOrgConfig-BfbTlFg1.js → NewOrgConfig-CRakarmw.js} +2 -2
- package/dist/{NewOrgConfig-DJm6_abA.cjs → NewOrgConfig-D48KabOj.cjs} +2 -2
- package/dist/TrackComponentVisibleEvent-C9RvfdS9.js +53 -0
- package/dist/TrackComponentVisibleEvent-_Fb-JXkV.cjs +60 -0
- package/dist/amplitudeContext-D5HSmIWg.cjs +253 -0
- package/dist/amplitudeContext-wW37Ziq-.js +237 -0
- package/dist/amplitudeTrackEventAtom-D66l5oFp.js +8 -0
- package/dist/amplitudeTrackEventAtom-f22P2U0u.cjs +15 -0
- package/dist/api-D4HaU2Gf.js +166 -0
- package/dist/api-D4Xoibs9.cjs +239 -0
- package/dist/app-CGw4C9Bn.js +515 -0
- package/dist/app-Di_sBmzj.cjs +570 -0
- package/dist/application/models/graphql/index.cjs +3 -3
- package/dist/application/models/graphql/index.d.cts +2 -2
- package/dist/application/models/graphql/index.d.ts +2 -2
- package/dist/application/models/graphql/index.js +2 -3
- package/dist/application/models/guards/api/index.cjs +3 -3
- package/dist/application/models/guards/api/index.d.cts +2 -2
- package/dist/application/models/guards/api/index.d.ts +2 -2
- package/dist/application/models/guards/api/index.js +3 -3
- package/dist/application/models/guards/utils.cjs +1 -1
- package/dist/application/models/guards/utils.d.ts +1 -1
- package/dist/application/models/guards/utils.js +1 -1
- package/dist/application/models/index.cjs +7 -23
- package/dist/application/models/index.d.cts +167 -11
- package/dist/application/models/index.d.ts +168 -12
- package/dist/application/models/index.js +7 -11
- package/dist/application/utils/index.cjs +10 -19
- package/dist/application/utils/index.d.cts +13 -63
- package/dist/application/utils/index.d.ts +13 -63
- package/dist/application/utils/index.js +10 -19
- package/dist/{atomStore-DXTVqiKc.js → atomStore-BuopbV9k.js} +1 -1
- package/dist/{atomStore-DNji91Im.cjs → atomStore-CZKe3itM.cjs} +1 -1
- package/dist/atoms/app/index.cjs +22 -24
- package/dist/atoms/app/index.d.cts +9 -20
- package/dist/atoms/app/index.d.ts +8 -19
- package/dist/atoms/app/index.js +17 -19
- package/dist/atoms/atomStore/index.cjs +1 -1
- package/dist/atoms/atomStore/index.d.cts +1 -1
- package/dist/atoms/atomStore/index.js +1 -1
- package/dist/atoms/chat/index.cjs +20 -21
- package/dist/atoms/chat/index.d.cts +36 -45
- package/dist/atoms/chat/index.d.ts +34 -43
- package/dist/atoms/chat/index.js +20 -21
- package/dist/atoms/globalSearch/index.cjs +1 -2
- package/dist/atoms/globalSearch/index.d.cts +5 -5
- package/dist/atoms/globalSearch/index.d.ts +6 -6
- package/dist/atoms/globalSearch/index.js +1 -2
- package/dist/atoms/org/index.cjs +10 -11
- package/dist/atoms/org/index.d.cts +19 -31
- package/dist/atoms/org/index.d.ts +19 -31
- package/dist/atoms/org/index.js +2 -3
- package/dist/atoms/search/index.cjs +7 -47
- package/dist/atoms/search/index.d.cts +76 -14
- package/dist/atoms/search/index.d.ts +76 -14
- package/dist/atoms/search/index.js +7 -29
- package/dist/atoms/search/utils.cjs +1 -1
- package/dist/atoms/search/utils.d.cts +1 -1
- package/dist/atoms/search/utils.js +1 -1
- package/dist/cdnContext-BJT_Wn9Z.js +38 -0
- package/dist/cdnContext-BoPraJxf.cjs +53 -0
- package/dist/chat-ZaY3KY-R.js +226 -0
- package/dist/chat-rhEjVfrd.cjs +326 -0
- package/dist/chatState-BbI93m6r.js +33 -0
- package/dist/chatState-DlJpHAsW.cjs +119 -0
- package/dist/config/index.d.cts +4 -4
- package/dist/config/index.d.ts +4 -4
- package/dist/config/locators/components/chat/index.d.cts +1 -1
- package/dist/config/locators/components/chat/index.d.ts +1 -1
- package/dist/config/locators/components/chat/variants/index.d.cts +1 -1
- package/dist/config/locators/components/chat/variants/index.d.ts +1 -1
- package/dist/config/locators/components/common/index.d.cts +1 -1
- package/dist/config/locators/components/common/index.d.ts +1 -1
- package/dist/config/locators/components/index.d.cts +1 -1
- package/dist/config/locators/components/index.d.ts +1 -1
- package/dist/config/locators/components/search/index.d.cts +1 -1
- package/dist/config/locators/components/search/index.d.ts +1 -1
- package/dist/config/locators/index.d.cts +4 -4
- package/dist/config/locators/index.d.ts +4 -4
- package/dist/contexts/amplitudeContext/index.cjs +23 -22
- package/dist/contexts/amplitudeContext/index.d.cts +11 -2
- package/dist/contexts/amplitudeContext/index.d.ts +11 -2
- package/dist/contexts/amplitudeContext/index.js +22 -20
- package/dist/contexts/atomProvider/index.cjs +18 -0
- package/dist/contexts/atomProvider/index.d.cts +11 -0
- package/dist/contexts/atomProvider/index.d.ts +11 -0
- package/dist/contexts/atomProvider/index.js +15 -0
- package/dist/contexts/cdnContext/index.cjs +4 -4
- package/dist/contexts/cdnContext/index.d.cts +2 -6
- package/dist/contexts/cdnContext/index.d.ts +2 -6
- package/dist/contexts/cdnContext/index.js +4 -4
- package/dist/contexts/enviveConfigContext/index.cjs +6 -4
- package/dist/contexts/enviveConfigContext/index.d.cts +5 -25
- package/dist/contexts/enviveConfigContext/index.d.ts +5 -25
- package/dist/contexts/enviveConfigContext/index.js +6 -5
- package/dist/contexts/enviveCssContext/index.cjs +17 -19
- package/dist/contexts/enviveCssContext/index.d.cts +3 -5
- package/dist/contexts/enviveCssContext/index.d.ts +3 -5
- package/dist/contexts/enviveCssContext/index.js +17 -19
- package/dist/contexts/featureFlagContext/index.cjs +9 -10
- package/dist/contexts/featureFlagContext/index.d.cts +3 -11
- package/dist/contexts/featureFlagContext/index.d.ts +3 -11
- package/dist/contexts/featureFlagContext/index.js +6 -7
- package/dist/contexts/featureFlagServiceContext/index.cjs +4 -3
- package/dist/contexts/featureFlagServiceContext/index.d.cts +1 -4
- package/dist/contexts/featureFlagServiceContext/index.d.ts +1 -4
- package/dist/contexts/featureFlagServiceContext/index.js +4 -3
- package/dist/contexts/graphqlContext/index.cjs +10 -13
- package/dist/contexts/graphqlContext/index.d.cts +11 -14
- package/dist/contexts/graphqlContext/index.d.ts +11 -14
- package/dist/contexts/graphqlContext/index.js +10 -13
- package/dist/contexts/localStorageContext/index.cjs +3 -3
- package/dist/contexts/localStorageContext/index.d.cts +3 -22
- package/dist/contexts/localStorageContext/index.d.ts +3 -22
- package/dist/contexts/localStorageContext/index.js +4 -3
- package/dist/contexts/newOrgConfigContext/index.cjs +15 -17
- package/dist/contexts/newOrgConfigContext/index.d.cts +12 -15
- package/dist/contexts/newOrgConfigContext/index.d.ts +12 -15
- package/dist/contexts/newOrgConfigContext/index.js +15 -17
- package/dist/contexts/searchContext/index.cjs +24 -24
- package/dist/contexts/searchContext/index.d.cts +2 -7
- package/dist/contexts/searchContext/index.d.ts +2 -7
- package/dist/contexts/searchContext/index.js +24 -24
- package/dist/contexts/sessionStorageContext/index.cjs +2 -2
- package/dist/contexts/sessionStorageContext/index.d.cts +2 -6
- package/dist/contexts/sessionStorageContext/index.d.ts +2 -6
- package/dist/contexts/sessionStorageContext/index.js +2 -2
- package/dist/contexts/shopifyUrlContext/index.cjs +2 -2
- package/dist/contexts/shopifyUrlContext/index.d.cts +2 -11
- package/dist/contexts/shopifyUrlContext/index.d.ts +2 -11
- package/dist/contexts/shopifyUrlContext/index.js +2 -2
- package/dist/contexts/systemSettingsContext/index.cjs +4 -4
- package/dist/contexts/systemSettingsContext/index.d.cts +2 -12
- package/dist/contexts/systemSettingsContext/index.d.ts +4 -14
- package/dist/contexts/systemSettingsContext/index.js +4 -4
- package/dist/contexts/userIdentityContext/index.cjs +19 -21
- package/dist/contexts/userIdentityContext/index.d.cts +11 -2
- package/dist/contexts/userIdentityContext/index.d.ts +11 -2
- package/dist/contexts/userIdentityContext/index.js +17 -19
- package/dist/dist-C38adNK1.js +5923 -0
- package/dist/dist-VxRI6eQv.cjs +6019 -0
- package/dist/domObserver-CVhsCSkS.js +285 -0
- package/dist/{domObserver-v9ODTyfT.js → domObserver-LCBj1xw4.cjs} +23 -4
- package/dist/enviveConfig-CHXb9xwk.cjs +125 -0
- package/dist/enviveConfig-CUJgI97-.js +63 -0
- package/dist/enviveConfigContext-C91Air9z.js +48 -0
- package/dist/enviveConfigContext-zZAJwv87.cjs +69 -0
- package/dist/events/index.cjs +2 -3
- package/dist/events/index.d.cts +2 -15
- package/dist/events/index.d.ts +2 -15
- package/dist/events/index.js +2 -2
- package/dist/events-CgFGtanE.cjs +69 -0
- package/dist/events-WOOrnUAx.js +63 -0
- package/dist/exceptions/index.cjs +4 -0
- package/dist/exceptions/index.d.cts +12 -0
- package/dist/exceptions/index.d.ts +12 -0
- package/dist/exceptions/index.js +3 -0
- package/dist/exceptions-BjDgLzGi.cjs +32 -0
- package/dist/exceptions-CUGY31Ua.js +20 -0
- package/dist/featureFlagServiceContext-ClnlCJV5.d.cts +24 -0
- package/dist/featureFlagServiceContext-Cvp7NlpC.js +46 -0
- package/dist/featureFlagServiceContext-DHtkQAtq.cjs +66 -0
- package/dist/featureFlagServiceContext-x-hAAKdL.d.ts +24 -0
- package/dist/{globalSearch-FBk2epe8.cjs → globalSearch-Cpc8egsM.cjs} +1 -1
- package/dist/{globalSearch-Ccxq8hNF.js → globalSearch-nmrfGLOn.js} +1 -1
- package/dist/graphql-CvAHWmel.js +46 -0
- package/dist/graphql-JaGqsToc.cjs +70 -0
- package/dist/graphqlContext-C3T_K97L.js +94 -0
- package/dist/graphqlContext-DqWvz7Op.cjs +108 -0
- package/dist/hooks/AmplitudeOperations/index.cjs +23 -22
- package/dist/hooks/AmplitudeOperations/index.d.cts +2 -2
- package/dist/hooks/AmplitudeOperations/index.d.ts +2 -2
- package/dist/hooks/AmplitudeOperations/index.js +22 -21
- package/dist/hooks/AppDetails/index.cjs +22 -22
- package/dist/hooks/AppDetails/index.d.cts +3 -23
- package/dist/hooks/AppDetails/index.d.ts +3 -23
- package/dist/hooks/AppDetails/index.js +22 -22
- package/dist/hooks/BlockBackButton/index.d.ts +1 -1
- package/dist/hooks/CdnOperations/index.cjs +4 -4
- package/dist/hooks/CdnOperations/index.js +4 -4
- package/dist/hooks/ChatToggle/index.cjs +28 -25
- package/dist/hooks/ChatToggle/index.d.cts +2 -2
- package/dist/hooks/ChatToggle/index.d.ts +2 -2
- package/dist/hooks/ChatToggle/index.js +25 -22
- package/dist/hooks/ChatToggleAnalytics/index.cjs +25 -24
- package/dist/hooks/ChatToggleAnalytics/index.d.cts +2 -2
- package/dist/hooks/ChatToggleAnalytics/index.d.ts +2 -2
- package/dist/hooks/ChatToggleAnalytics/index.js +24 -23
- package/dist/hooks/CustomerSupportHandoff/index.cjs +2 -2
- package/dist/hooks/CustomerSupportHandoff/index.d.cts +1 -1
- package/dist/hooks/CustomerSupportHandoff/index.js +2 -2
- package/dist/hooks/Debounce/index.cjs +20 -2
- package/dist/hooks/Debounce/index.d.cts +1 -1
- package/dist/hooks/Debounce/index.js +18 -2
- package/dist/hooks/ElementObserver/index.cjs +4 -6
- package/dist/hooks/ElementObserver/index.d.cts +4 -25
- package/dist/hooks/ElementObserver/index.d.ts +4 -25
- package/dist/hooks/ElementObserver/index.js +4 -6
- package/dist/hooks/GrabAndScroll/index.cjs +1 -1
- package/dist/hooks/GrabAndScroll/index.d.cts +2 -2
- package/dist/hooks/GrabAndScroll/index.d.ts +2 -2
- package/dist/hooks/GrabAndScroll/index.js +1 -1
- package/dist/hooks/GraphQLConfig/index.cjs +11 -14
- package/dist/hooks/GraphQLConfig/index.d.cts +2 -13
- package/dist/hooks/GraphQLConfig/index.d.ts +2 -13
- package/dist/hooks/GraphQLConfig/index.js +11 -14
- package/dist/hooks/IdentifyUser/index.cjs +19 -21
- package/dist/hooks/IdentifyUser/index.js +18 -20
- package/dist/hooks/ImageResolver/index.cjs +20 -29
- package/dist/hooks/ImageResolver/index.js +20 -29
- package/dist/hooks/Intersection/index.cjs +1 -1
- package/dist/hooks/Intersection/index.d.ts +1 -1
- package/dist/hooks/Intersection/index.js +1 -1
- package/dist/hooks/IsSmallScreen/index.d.ts +1 -1
- package/dist/hooks/LocalStorageOperations/index.cjs +8 -7
- package/dist/hooks/LocalStorageOperations/index.d.cts +1 -1
- package/dist/hooks/LocalStorageOperations/index.js +4 -3
- package/dist/hooks/MessageFilter/index.cjs +3 -12
- package/dist/hooks/MessageFilter/index.d.cts +2 -17
- package/dist/hooks/MessageFilter/index.d.ts +2 -17
- package/dist/hooks/MessageFilter/index.js +2 -11
- package/dist/hooks/NewOrgConfig/index.cjs +16 -18
- package/dist/hooks/NewOrgConfig/index.d.cts +3 -16
- package/dist/hooks/NewOrgConfig/index.d.ts +3 -16
- package/dist/hooks/NewOrgConfig/index.js +16 -18
- package/dist/hooks/Search/index.cjs +314 -173
- package/dist/hooks/Search/index.d.cts +3 -57
- package/dist/hooks/Search/index.d.ts +3 -57
- package/dist/hooks/Search/index.js +302 -162
- package/dist/hooks/SearchOperations/index.cjs +25 -25
- package/dist/hooks/SearchOperations/index.d.cts +2 -3
- package/dist/hooks/SearchOperations/index.d.ts +2 -3
- package/dist/hooks/SearchOperations/index.js +25 -25
- package/dist/hooks/SessionStorageOperations/index.cjs +2 -2
- package/dist/hooks/SessionStorageOperations/index.js +2 -2
- package/dist/hooks/ShopifyUrlOperations/index.cjs +3 -3
- package/dist/hooks/ShopifyUrlOperations/index.d.cts +2 -4
- package/dist/hooks/ShopifyUrlOperations/index.d.ts +2 -4
- package/dist/hooks/ShopifyUrlOperations/index.js +3 -3
- package/dist/hooks/SnapCalculator/index.cjs +1 -1
- package/dist/hooks/SnapCalculator/index.d.cts +4 -3
- package/dist/hooks/SnapCalculator/index.d.ts +4 -3
- package/dist/hooks/SnapCalculator/index.js +1 -1
- package/dist/hooks/SystemSettingsContext/index.cjs +17 -6
- package/dist/hooks/SystemSettingsContext/index.d.cts +5 -15
- package/dist/hooks/SystemSettingsContext/index.d.ts +4 -14
- package/dist/hooks/SystemSettingsContext/index.js +15 -6
- package/dist/hooks/TrackComponentVisibleEvent/index.cjs +23 -21
- package/dist/hooks/TrackComponentVisibleEvent/index.d.cts +2 -3
- package/dist/hooks/TrackComponentVisibleEvent/index.d.ts +2 -3
- package/dist/hooks/TrackComponentVisibleEvent/index.js +23 -21
- package/dist/hooks/UpdateAnalyticsProps/index.cjs +26 -24
- package/dist/hooks/UpdateAnalyticsProps/index.d.cts +1 -1
- package/dist/hooks/UpdateAnalyticsProps/index.js +22 -20
- package/dist/hooks/utils.cjs +1 -1
- package/dist/hooks/utils.d.cts +20 -13
- package/dist/hooks/utils.d.ts +20 -13
- package/dist/hooks/utils.js +1 -1
- package/dist/index--OKiRCTl.d.ts +224 -0
- package/dist/{index-h809JLbL.d.ts → index-B95cXAA4.d.ts} +1 -1
- package/dist/index-BVZbvpx_.d.cts +11 -0
- package/dist/{index-FQjyuD3D.d.cts → index-BbqT4BQv.d.cts} +1 -1
- package/dist/index-BiDHHLjr.d.ts +42 -0
- package/dist/{index-Da1s8h5C.d.cts → index-CAJq_8bO.d.cts} +1 -1
- package/dist/index-CAXM2KiM.d.ts +11 -0
- package/dist/index-CMZcE7pk.d.cts +224 -0
- package/dist/{index-DzbkQtaK.d.cts → index-ChiZg0yw.d.cts} +1 -1
- package/dist/{index-xHVrsrbz.d.ts → index-DZU7c0jP.d.ts} +1 -1
- package/dist/{index-BeYfyZ6k.d.ts → index-DywcCZdp.d.ts} +1 -1
- package/dist/{index-DJTrxIFJ.d.ts → index-dc4j0jws.d.ts} +1 -1
- package/dist/{index-9NE86em3.d.cts → index-npqPeJ1g.d.cts} +1 -1
- package/dist/index-qOBU4GEh.d.cts +42 -0
- package/dist/interceptors/index.cjs +28 -3
- package/dist/interceptors/index.d.cts +4 -15
- package/dist/interceptors/index.d.ts +4 -15
- package/dist/interceptors/index.js +25 -3
- package/dist/localStorageContext-BFwvuEcf.js +90 -0
- package/dist/localStorageContext-CWc5xJ6U.cjs +104 -0
- package/dist/{logger-W3lqg-4b.js → logger-BMVdhQOV.js} +1 -1
- package/dist/{logger-TBIl4uIH.cjs → logger-BqHq67zN.cjs} +1 -1
- package/dist/models-Cw0QcbQv.js +1118 -0
- package/dist/models-Dl0_Ujgj.cjs +1305 -0
- package/dist/newOrgConfigAtom-C8h3w_Ji.js +8 -0
- package/dist/{newOrgConfigAtom-DxILMn2I.cjs → newOrgConfigAtom-CDttTiuu.cjs} +1 -1
- package/dist/newOrgConfigContext-B_rJMpwN.js +55 -0
- package/dist/newOrgConfigContext-D1sgTmVU.cjs +70 -0
- package/dist/nodeSelector-BYEAyrsj.d.cts +28 -0
- package/dist/nodeSelector-NqW-FBED.d.ts +28 -0
- package/dist/org-BNs_maoW.cjs +111 -0
- package/dist/org-CScQqL4k.js +32 -0
- package/dist/search-CWkDtqQV.cjs +312 -0
- package/dist/search-OWKKaQQj.js +233 -0
- package/dist/searchContext-3VsAb17A.cjs +146 -0
- package/dist/searchContext-Bhhp_q_P.js +130 -0
- package/dist/searchServiceAdapter-B0h7psvh.js +16 -0
- package/dist/searchServiceAdapter-BclWy4fE.cjs +34 -0
- package/dist/sessionStorageContext-L3f_btsR.cjs +66 -0
- package/dist/sessionStorageContext-kQJRbkHL.js +52 -0
- package/dist/shopifyUrlContext-BsYGfLvw.cjs +75 -0
- package/dist/shopifyUrlContext-CB9LQU_i.js +61 -0
- package/dist/systemSettingsContext-B5plhu8S.cjs +60 -0
- package/dist/systemSettingsContext-Cac6mmfA.js +39 -0
- package/dist/types/index.cjs +3 -48
- package/dist/types/index.d.cts +2 -17
- package/dist/types/index.d.ts +2 -17
- package/dist/types/index.js +2 -44
- package/dist/types-1iJ_FnQQ.cjs +39 -0
- package/dist/types-D5du68Vp.js +27 -0
- package/dist/urlsParser-Dax4iVNC.cjs +78 -0
- package/dist/urlsParser-NAp2LwWP.js +42 -0
- package/dist/useAppDetails-B-lZpIPK.js +30 -0
- package/dist/useAppDetails-BAJjqvyF.cjs +38 -0
- package/dist/useGraphQLConfig-CeYY5maa.js +63 -0
- package/dist/useGraphQLConfig-Cm_lEb1T.cjs +76 -0
- package/dist/{useIntersection-m4PEpvG7.cjs → useIntersection-DuwPFRY9.cjs} +1 -1
- package/dist/{useIntersection-Cncgxdmy.js → useIntersection-bCSteycU.js} +1 -1
- package/dist/{utils-DIvMgPe8.js → utils-B1LVzQYK.js} +1 -1
- package/dist/utils-BZT_oZ3n.js +92 -0
- package/dist/{utils-CDw74BCO.cjs → utils-CiJLDPjY.cjs} +1 -1
- package/dist/{utils-2SWrJ12w.cjs → utils-CqVRbvfN.cjs} +1 -1
- package/dist/utils-D3MjNkd3.cjs +716 -0
- package/dist/utils-DMwh3QbT.js +607 -0
- package/dist/{utils-CqBxIpEV.js → utils-DQhbbAnt.js} +1 -1
- package/dist/{utils-DpneNSJf.d.ts → utils-DjhLO2vO.d.ts} +1 -1
- package/dist/utils-qtHPLFby.cjs +130 -0
- package/package.json +13 -36
- package/src/application/commerce-api.ts +40 -37
- package/src/application/models/graphql/index.ts +1 -0
- package/src/application/models/graphql/queries/getMerchantColorsQuery.ts +1 -23
- package/src/application/models/graphql/queries/getMerchantFrontendConfigQuery.ts +1 -89
- package/src/application/models/guards/api/isApiFormResponse.ts +4 -4
- package/src/application/models/guards/api/isApiFormSubmittedResponseAttributes.ts +2 -2
- package/src/application/models/guards/api/isApiOrderResponseAttributes.ts +2 -20
- package/src/application/models/guards/api/isApiOrgConfigResults.ts +3 -9
- package/src/application/models/guards/api/isApiOrganizationConfig.ts +8 -32
- package/src/application/models/guards/api/isApiPDPEventAttributes.ts +8 -5
- package/src/application/models/guards/api/isApiPLPEventAttributes.ts +14 -10
- package/src/application/models/guards/api/isApiPageResponseAttributes.ts +1 -1
- package/src/application/models/guards/api/isApiProductResponseAttributes.ts +2 -4
- package/src/application/models/guards/api/isApiProductSearchAttributes.ts +9 -6
- package/src/application/models/guards/api/isApiProductSearchFilterAttributes.ts +7 -4
- package/src/application/models/guards/api/isApiQueryTypedEventAttributes.ts +8 -3
- package/src/application/models/guards/api/isApiResponse.ts +22 -15
- package/src/application/models/guards/api/isApiReviewResponseAttributes.ts +1 -1
- package/src/application/models/guards/api/isApiReviewRichInformation.ts +1 -1
- package/src/application/models/guards/api/isApiTextResponseAttributes.ts +1 -1
- package/src/application/models/guards/graphQL/isGraphQLColorsConfig.ts +1 -1
- package/src/application/models/guards/isBaseEcommerceEvent.ts +1 -2
- package/src/application/models/guards/isGA4EcommerceEvent.ts +1 -1
- package/src/application/models/guards/isLegacyUAEcommerceEvent.ts +1 -1
- package/src/application/models/guards/isMobilePLPChatPlacementParameter.ts +1 -3
- package/src/application/models/guards/isSpanxTakeAQuizCtaParameter.ts +5 -3
- package/src/application/models/guards/isVariantInfo.ts +6 -1
- package/src/application/models/index.ts +30 -95
- package/src/application/models/utils/snakeToCamelTransformer.ts +8 -8
- package/src/application/models/validators/validateGraphQLColorsConfig.ts +6 -2
- package/src/application/models/validators/validateGraphQLFrontendConfig.ts +6 -6
- package/src/application/models/validators/validateMobilePLPChatPlacementParameter.ts +5 -3
- package/src/application/models/validators/validateOrgConfigResults.ts +6 -5
- package/src/application/models/validators/validateOrganizationConfig.ts +11 -8
- package/src/application/models/validators/validateResponse.ts +66 -44
- package/src/application/models/validators/validateSuggestion.ts +1 -1
- package/src/application/models/validators/validateUserEvent.ts +23 -12
- package/src/application/utils/analyticsUtils.ts +1 -8
- package/src/application/utils/coreContextToApiContext.ts +3 -1
- package/src/application/utils/coreUserEventToApiUserEvent.ts +2 -2
- package/src/application/utils/elementObserver.ts +1 -1
- package/src/application/utils/imageFilter.ts +5 -2
- package/src/application/utils/index.ts +20 -21
- package/src/application/utils/messageFromFormSubmittedEvent.ts +1 -1
- package/src/application/utils/messageFromQueryEvent.ts +1 -1
- package/src/application/utils/messageFromResponse.ts +14 -10
- package/src/application/utils/messageFromSuggestionEvent.ts +6 -4
- package/src/application/utils/mouseEventTypes.ts +1 -1
- package/src/application/utils/nextMessageRequestToApiRequest.ts +1 -1
- package/src/application/utils/overrides.ts +1 -49
- package/src/application/utils/supportedEventRequestToApiRequest.ts +3 -1
- package/src/application/utils/urlsParser.ts +1 -7
- package/src/atoms/amplitude/amplitudeTrackEventAtom.ts +1 -1
- package/src/atoms/app/index.ts +15 -25
- package/src/atoms/app/variant.ts +1 -1
- package/src/atoms/chat/chatState.ts +4 -4
- package/src/atoms/chat/form.ts +1 -1
- package/src/atoms/chat/messageQueue.ts +25 -50
- package/src/atoms/chat/replies.ts +1 -2
- package/src/atoms/chat/suggestions.ts +34 -29
- package/src/atoms/envive/enviveConfig.ts +15 -20
- package/src/atoms/org/customerService.ts +4 -8
- package/src/atoms/org/graphqlConfig.ts +7 -15
- package/src/atoms/org/index.ts +4 -6
- package/src/atoms/org/newOrgConfigAtom.ts +2 -2
- package/src/atoms/org/orgAnalyticsConfig.ts +1 -1
- package/src/atoms/search/index.ts +0 -1
- package/src/atoms/search/productFilters.ts +72 -52
- package/src/atoms/search/productRetrievalAPI.ts +72 -0
- package/src/atoms/search/productRetrievalAdapter.ts +28 -0
- package/src/atoms/search/productSorter.ts +2 -2
- package/src/atoms/search/searchAPI.ts +42 -60
- package/src/atoms/search/searchServiceAdapter.ts +1 -1
- package/src/contexts/amplitudeContext/amplitudeContext.tsx +24 -62
- package/src/contexts/atomProvider/atomProvider.tsx +6 -0
- package/src/contexts/atomProvider/index.ts +1 -0
- package/src/contexts/cdnContext/cdnContext.tsx +1 -6
- package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +23 -34
- package/src/contexts/enviveCssContext/enviveCssContext.tsx +5 -12
- package/src/contexts/featureFlagContext/featureFlagContext.tsx +27 -48
- package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +11 -3
- package/src/contexts/graphqlContext/graphqlContext.tsx +45 -97
- package/src/contexts/localStorageContext/localStorageContext.tsx +26 -60
- package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +21 -25
- package/src/contexts/searchContext/searchContext.tsx +30 -49
- package/src/contexts/sessionStorageContext/sessionStorageContext.tsx +12 -33
- package/src/contexts/shopifyUrlContext/shopifyUrlContext.tsx +20 -37
- package/src/contexts/systemSettingsContext/systemSettingsContext.tsx +8 -21
- package/src/contexts/userIdentityContext/userIdentityContext.tsx +33 -77
- package/src/events/index.ts +8 -5
- package/src/events/registerAnalyticsListeners.ts +10 -13
- package/src/exceptions/index.ts +2 -0
- package/src/{types/exceptions → exceptions}/unsupportedProductExceptions.ts +2 -2
- package/src/global.d.ts +8 -0
- package/src/hooks/AmplitudeOperations/useAmplitudeOperations.ts +6 -11
- package/src/hooks/AppDetails/useAppDetails.ts +10 -24
- package/src/hooks/ChatToggle/useChatToggle.ts +7 -19
- package/src/hooks/ChatToggleAnalytics/useChatToggleAnalytics.ts +4 -4
- package/src/hooks/CustomerSupportHandoff/useCustomerSupportHandoff.ts +1 -1
- package/src/hooks/ElementObserver/useElementObserver.ts +14 -32
- package/src/hooks/GrabAndScroll/useGrabAndScroll.ts +125 -124
- package/src/hooks/GraphQLConfig/useGraphQLConfig.ts +5 -7
- package/src/hooks/ImageResolver/useImageResolver.ts +24 -31
- package/src/hooks/LocalStorageOperations/useLocalStorageOperations.ts +12 -19
- package/src/hooks/MessageFilter/useMessageFilter.ts +1 -7
- package/src/hooks/Search/useRecommendedProducts.ts +50 -0
- package/src/hooks/Search/useSearch.tsx +87 -217
- package/src/hooks/Search/useSearchInput.ts +237 -0
- package/src/hooks/SearchOperations/useSearchOperations.ts +8 -12
- package/src/hooks/ShopifyUrlOperations/useShopifyUrlOperations.ts +8 -14
- package/src/hooks/SnapCalculator/useSnapCalculator.ts +1 -2
- package/src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts +8 -11
- package/src/hooks/UpdateAnalyticsProps/useUpdateAnalyticsProps.ts +11 -25
- package/src/hooks/utils.ts +19 -29
- package/src/interceptors/index.ts +1 -2
- package/src/interceptors/useMessageInterceptor.ts +10 -6
- package/src/{application/models/api/response.ts → types/ApiResponse.ts} +35 -29
- package/src/types/FilterAttribute.ts +35 -0
- package/src/{application/models/message.ts → types/Message.ts} +38 -34
- package/src/types/Suggestion.ts +6 -0
- package/src/types/index.ts +4 -5
- package/src/util/colorVar.ts +4 -0
- package/src/util/configVersion.ts +4 -0
- package/src/util/domInsertion.ts +17 -0
- package/dist/SystemSettingsContext-6ZHzQkCE.cjs +0 -20
- package/dist/SystemSettingsContext-BbTKNBvJ.js +0 -13
- package/dist/TrackComponentVisibleEvent-BJgNOypY.js +0 -52
- package/dist/TrackComponentVisibleEvent-BRC2FTp-.cjs +0 -59
- package/dist/amplitudeContext-B73xamNe.d.cts +0 -52
- package/dist/amplitudeContext-CZUzMXHl.d.ts +0 -52
- package/dist/api-BWSsazAG.js +0 -166
- package/dist/api-DeW6rHj3.cjs +0 -239
- package/dist/application/models/utilityTypes/index.cjs +0 -1
- package/dist/application/models/utilityTypes/index.d.cts +0 -2
- package/dist/application/models/utilityTypes/index.d.ts +0 -2
- package/dist/application/models/utilityTypes/index.js +0 -3
- package/dist/application/models/variantInfo/index.cjs +0 -3
- package/dist/application/models/variantInfo/index.d.cts +0 -2
- package/dist/application/models/variantInfo/index.d.ts +0 -2
- package/dist/application/models/variantInfo/index.js +0 -3
- package/dist/atoms/search/types.cjs +0 -5
- package/dist/atoms/search/types.d.cts +0 -2
- package/dist/atoms/search/types.d.ts +0 -2
- package/dist/atoms/search/types.js +0 -3
- package/dist/cdnContext-CEGBVVBU.js +0 -38
- package/dist/cdnContext-DOSIofl8.cjs +0 -53
- package/dist/chat-CqPuT9_V.cjs +0 -393
- package/dist/chat-DH70QqJp.js +0 -257
- package/dist/chatElementDisplayLocation-CpgV2wR1.d.ts +0 -25
- package/dist/chatElementDisplayLocation-DWmfNX_u.d.cts +0 -25
- package/dist/chatSearch-C7Y-hb-6.js +0 -295
- package/dist/chatSearch-DLV4BUGA.cjs +0 -418
- package/dist/chatState-CcFtSqJT.cjs +0 -120
- package/dist/chatState-DKnNHmwe.js +0 -34
- package/dist/contexts/chatContext/index.cjs +0 -326
- package/dist/contexts/chatContext/index.d.cts +0 -15
- package/dist/contexts/chatContext/index.d.ts +0 -15
- package/dist/contexts/chatContext/index.js +0 -319
- package/dist/contexts/types.cjs +0 -7
- package/dist/contexts/types.d.cts +0 -4
- package/dist/contexts/types.d.ts +0 -4
- package/dist/contexts/types.js +0 -3
- package/dist/domObserver-Bqf3ooj8.cjs +0 -304
- package/dist/enviveConfig-DZBohDpc.js +0 -62
- package/dist/enviveConfig-Dv9-esGV.cjs +0 -130
- package/dist/enviveConfigContext-D2OELZDR.cjs +0 -60
- package/dist/enviveConfigContext-DrDjCems.js +0 -45
- package/dist/events-DYY4l817.cjs +0 -90
- package/dist/events-DyUix-Bn.js +0 -78
- package/dist/featureFlagServiceContext-Be_LUbFf.d.cts +0 -23
- package/dist/featureFlagServiceContext-CJyYItqu.cjs +0 -62
- package/dist/featureFlagServiceContext-FBM6DdMJ.js +0 -42
- package/dist/featureFlagServiceContext-V0J-69ty.d.ts +0 -23
- package/dist/featureGates-KEwAL8p_.js +0 -26
- package/dist/featureGates-qU_ulhpC.cjs +0 -32
- package/dist/frontendConfig-CeWhVevA.d.ts +0 -857
- package/dist/frontendConfig-OWWJmuPc.d.cts +0 -857
- package/dist/graphql-3PxNRFOc.js +0 -36
- package/dist/graphql-DGYfelZp.cjs +0 -53
- package/dist/graphqlConfig-GHZ1UgCw.cjs +0 -73
- package/dist/graphqlConfig-mDg6J44N.js +0 -24
- package/dist/graphqlContext-BQA6gnpH.d.ts +0 -28
- package/dist/graphqlContext-Ci5GRAdH.js +0 -96
- package/dist/graphqlContext-D67VEQg3.d.cts +0 -28
- package/dist/graphqlContext-W0cZNBf1.cjs +0 -111
- package/dist/hooks/FloatingButtonVisibility/index.cjs +0 -73
- package/dist/hooks/FloatingButtonVisibility/index.d.cts +0 -7
- package/dist/hooks/FloatingButtonVisibility/index.d.ts +0 -7
- package/dist/hooks/FloatingButtonVisibility/index.js +0 -69
- package/dist/hooks/LastInteraction/index.cjs +0 -34
- package/dist/hooks/LastInteraction/index.d.cts +0 -17
- package/dist/hooks/LastInteraction/index.d.ts +0 -17
- package/dist/hooks/LastInteraction/index.js +0 -32
- package/dist/index-BeGt0Aw3.d.cts +0 -186
- package/dist/index-Bmub8e38.d.cts +0 -98
- package/dist/index-CCa4tZuO.d.ts +0 -184
- package/dist/index-CESxqFso.d.cts +0 -228
- package/dist/index-CgAfoNpB.d.ts +0 -1
- package/dist/index-CiWEYzXl.d.cts +0 -184
- package/dist/index-Cyq5HiC0.d.cts +0 -44
- package/dist/index-D4c-port.d.ts +0 -676
- package/dist/index-DazMsEy_.d.ts +0 -44
- package/dist/index-Dfwnna1j.d.ts +0 -228
- package/dist/index-O33GSSRr.d.cts +0 -676
- package/dist/index-RcVcRKH7.d.cts +0 -1
- package/dist/index-bjMvkcBF.d.ts +0 -98
- package/dist/index-xhBQ1HBx.d.ts +0 -186
- package/dist/interceptors/types.cjs +0 -1
- package/dist/interceptors/types.d.cts +0 -13
- package/dist/interceptors/types.d.ts +0 -13
- package/dist/interceptors/types.js +0 -3
- package/dist/localStorageContext-BPZ82q-G.js +0 -95
- package/dist/localStorageContext-NRP-CdmF.cjs +0 -115
- package/dist/models-D-4db7XW.cjs +0 -1537
- package/dist/models-c86hYW-F.js +0 -1296
- package/dist/newOrgConfigAtom-sqve6LZU.js +0 -8
- package/dist/newOrgConfigContext-5Bw7RwT-.d.cts +0 -16
- package/dist/newOrgConfigContext-CS8IA5Eg.d.ts +0 -16
- package/dist/newOrgConfigContext-Cl4H9c3q.cjs +0 -68
- package/dist/newOrgConfigContext-DQiuf8nd.js +0 -53
- package/dist/nodeSelector-B3bPtEjX.d.cts +0 -31
- package/dist/nodeSelector-BiCDowlK.d.ts +0 -31
- package/dist/org-DlAesvQ_.cjs +0 -43
- package/dist/org-vi0njpBh.js +0 -12
- package/dist/search-1NQLQD9d.d.ts +0 -20
- package/dist/search-CXXslzAO.cjs +0 -205
- package/dist/search-DBSMrXWv.js +0 -126
- package/dist/search-filter-types-BxaNSLs_.d.cts +0 -102
- package/dist/search-filter-types-DPgeG8FS.d.ts +0 -102
- package/dist/search-y-ioX5Mz.d.cts +0 -20
- package/dist/searchContext-DXW6xvXv.cjs +0 -145
- package/dist/searchContext-mvwUJncR.js +0 -129
- package/dist/searchServiceAdapter-DEv1tTn0.cjs +0 -34
- package/dist/searchServiceAdapter-WyCU55NV.js +0 -16
- package/dist/sessionStorageContext-1Ks_d4Z0.cjs +0 -66
- package/dist/sessionStorageContext-CDcl7NVl.js +0 -52
- package/dist/shopifyUrlContext-CejRZfj7.js +0 -61
- package/dist/shopifyUrlContext-lnHoAOEf.cjs +0 -75
- package/dist/spiffyWidgets-B1uc84_g.d.ts +0 -20
- package/dist/spiffyWidgets-BuS00VaQ.d.cts +0 -20
- package/dist/systemSettingsContext-B0Kyq7nA.cjs +0 -60
- package/dist/systemSettingsContext-CVUxEcsU.js +0 -39
- package/dist/test-types-ThQiO_cc.d.cts +0 -40
- package/dist/test-types-y6kp-tiw.d.ts +0 -40
- package/dist/types-BCz-hOvv.d.ts +0 -51
- package/dist/types-CKMMb_gX.d.cts +0 -51
- package/dist/types-CKPddlfS.cjs +0 -0
- package/dist/types-CS0Hrzja.js +0 -30
- package/dist/types-CtUb63bt.js +0 -76
- package/dist/types-CxObxLKs.cjs +0 -48
- package/dist/types-Db5Eux6K.d.ts +0 -10
- package/dist/types-Dc6hx6ei.js +0 -1
- package/dist/types-UUvB6h05.cjs +0 -106
- package/dist/types-zQGBI-Yo.d.cts +0 -10
- package/dist/types.cjs +0 -0
- package/dist/types.d.cts +0 -34
- package/dist/types.d.ts +0 -34
- package/dist/types.js +0 -1
- package/dist/urlsParser-COzMdJaX.cjs +0 -78
- package/dist/urlsParser-DxjoLj98.js +0 -42
- package/dist/useAmplitudeOperations-DYs1h8a_.js +0 -34
- package/dist/useAmplitudeOperations-jqa7K9dH.cjs +0 -41
- package/dist/useAppDetails-BRUqZEyt.js +0 -30
- package/dist/useAppDetails-C71k0brz.cjs +0 -38
- package/dist/useDebounce-DZ8Cgiwc.cjs +0 -26
- package/dist/useDebounce-v9cezyjn.js +0 -19
- package/dist/useGraphQLConfig-5VwS9Q_Z.js +0 -63
- package/dist/useGraphQLConfig-Cj26_J9I.cjs +0 -76
- package/dist/useMessageInterceptor-BjGP_uXm.js +0 -25
- package/dist/useMessageInterceptor-arAqUq1Q.cjs +0 -33
- package/dist/userIdentityContext-BVODeTlN.d.ts +0 -20
- package/dist/userIdentityContext-D2oFVFzo.d.cts +0 -20
- package/dist/utilityTypes-B2KuRn37.js +0 -1
- package/dist/utilityTypes-BGbL2WTP.cjs +0 -0
- package/dist/utils-BxPPugeP.d.cts +0 -22
- package/dist/utils-CLGXsOwE.cjs +0 -1591
- package/dist/utils-Covisryh.d.ts +0 -22
- package/dist/utils-D_kATUj6.js +0 -92
- package/dist/utils-hYTjy7hJ.cjs +0 -130
- package/dist/utils-jYtD3hmA.js +0 -1385
- package/dist/variantInfo-BfKlkaWU.js +0 -11
- package/dist/variantInfo-DpLn4nHz.cjs +0 -17
- package/src/application/models/api/context.ts +0 -4
- package/src/application/models/api/generationParams.ts +0 -4
- package/src/application/models/api/nextMessageRequest.ts +0 -11
- package/src/application/models/api/orgAnalyticsConfig.ts +0 -19
- package/src/application/models/api/orgConfigResults.ts +0 -44
- package/src/application/models/api/organizationConfig.ts +0 -12
- package/src/application/models/api/responseGenerics.ts +0 -67
- package/src/application/models/api/search.ts +0 -26
- package/src/application/models/api/suggestion.ts +0 -4
- package/src/application/models/api/supportedEventRequest.ts +0 -8
- package/src/application/models/api/userEvent.ts +0 -101
- package/src/application/models/cachedValue.ts +0 -8
- package/src/application/models/chatElementDisplayLocation.ts +0 -22
- package/src/application/models/clientDetails.ts +0 -18
- package/src/application/models/colorsConfig.ts +0 -28
- package/src/application/models/conversationalSearchIds.ts +0 -5
- package/src/application/models/dataLayer.ts +0 -45
- package/src/application/models/events.ts +0 -5
- package/src/application/models/featureGates.ts +0 -21
- package/src/application/models/frontendConfig.ts +0 -14
- package/src/application/models/googleAnalyticsEvents.ts +0 -8
- package/src/application/models/localStorageEventListener.ts +0 -4
- package/src/application/models/mobilePLPChatPlacementParameter.ts +0 -3
- package/src/application/models/orgsEnum.ts +0 -36
- package/src/application/models/productExperiment.ts +0 -5
- package/src/application/models/spanxTakeAQuizCtaParameter.ts +0 -4
- package/src/application/models/spiffyWidgets.ts +0 -16
- package/src/application/models/utilityTypes/camelCase.ts +0 -87
- package/src/application/models/utilityTypes/camelCasedPropertiesDeep.ts +0 -80
- package/src/application/models/utilityTypes/delimiterCase.ts +0 -121
- package/src/application/models/utilityTypes/delimiterCasedPropertiesDeep.ts +0 -98
- package/src/application/models/utilityTypes/index.ts +0 -1
- package/src/application/models/utilityTypes/internal.ts +0 -93
- package/src/application/models/utilityTypes/primitive.ts +0 -8
- package/src/application/models/utilityTypes/snakeCasedPropertiesDeep.ts +0 -49
- package/src/application/models/utilityTypes/splitWords.ts +0 -76
- package/src/application/models/utilityTypes/trim.ts +0 -28
- package/src/application/models/utilityTypes/unknownArray.ts +0 -25
- package/src/application/models/variantInfo/index.ts +0 -1
- package/src/application/models/variantInfo/pageVisitInfo.ts +0 -6
- package/src/application/models/variantInfo/plpInfo.ts +0 -3
- package/src/application/models/variantInfo/productInfo.ts +0 -5
- package/src/application/models/variantInfo/variantInfo.ts +0 -29
- package/src/application/utils/__tests__/divideArrays.test.ts +0 -14
- package/src/application/utils/cdnUtils.ts +0 -11
- package/src/atoms/search/chatSearch.ts +0 -317
- package/src/atoms/search/types.ts +0 -55
- package/src/config/divIds.ts +0 -27
- package/src/config/socialProofClasses.ts +0 -17
- package/src/contexts/chatContext/chatContext.tsx +0 -509
- package/src/contexts/chatContext/index.ts +0 -1
- package/src/contexts/types.ts +0 -1067
- package/src/events/event-types.ts +0 -11
- package/src/hooks/FloatingButtonVisibility/index.ts +0 -1
- package/src/hooks/FloatingButtonVisibility/useFloatingButtonVisibility.ts +0 -99
- package/src/hooks/LastInteraction/index.ts +0 -1
- package/src/hooks/LastInteraction/useLastInteraction.ts +0 -42
- package/src/interceptors/types.ts +0 -6
- package/src/merchants/domInsertion.ts +0 -30
- package/src/merchants/gridInsertion.ts +0 -19
- package/src/types/config-versions.ts +0 -6
- package/src/types/customerService.ts +0 -31
- package/src/types/custservice-types.ts +0 -28
- package/src/types/floatingbuttonoverrides-types.ts +0 -10
- package/src/types/search-filter-types.ts +0 -111
- package/src/types/suggestionBarV2-types.ts +0 -4
- package/src/types/test-types.ts +0 -3
- package/src/types.ts +0 -27
- /package/dist/{AmplitudeOperations-DxQnurSG.cjs → enviveConfigContext-CZPfJkcS.cjs} +0 -0
- /package/dist/{AmplitudeOperations-ni7wVevx.js → enviveConfigContext-Hc1JBLu-.js} +0 -0
- /package/dist/{globalSearch-BpGfkuXz.js → featureFlagServiceContext-CISyb90N.js} +0 -0
- /package/dist/{globalSearch-B9DRBxSM.cjs → featureFlagServiceContext-Csgo-MUv.cjs} +0 -0
- /package/src/{types/exceptions → exceptions}/sessionExceptions.ts +0 -0
|
@@ -7,19 +7,22 @@ import React, {
|
|
|
7
7
|
} from "react";
|
|
8
8
|
import { useAtomValue } from "jotai";
|
|
9
9
|
import { createInstance } from "@amplitude/analytics-browser";
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
import {
|
|
11
|
+
FeatureGates,
|
|
12
|
+
OrgShortName,
|
|
13
|
+
LocalStorageKeys,
|
|
14
|
+
SpiffyEvent,
|
|
15
|
+
AmplitudeContextType,
|
|
16
|
+
SpiffyMetricsEventName,
|
|
17
|
+
TrackEventParams,
|
|
18
|
+
} from "@envive-ai/types";
|
|
13
19
|
import {
|
|
14
20
|
amplitudeApiKeyAtom,
|
|
15
21
|
contextSourceAtom,
|
|
16
22
|
dataResidencyAtom,
|
|
17
23
|
identifyingPrefixAtom,
|
|
18
24
|
} from "src/atoms/envive/enviveConfig";
|
|
19
|
-
import {
|
|
20
|
-
LocalStorageKeys,
|
|
21
|
-
useLocalStorage,
|
|
22
|
-
} from "src/contexts/localStorageContext";
|
|
25
|
+
import { useLocalStorage } from "src/contexts/localStorageContext";
|
|
23
26
|
import { orgAnalyticsGoogleAnalyticsConfigAtom } from "src/atoms/org/orgAnalyticsConfig";
|
|
24
27
|
import { userIdAtom } from "src/atoms/app";
|
|
25
28
|
import { envAtom } from "src/atoms/envive/enviveConfig";
|
|
@@ -30,60 +33,19 @@ import type {
|
|
|
30
33
|
Event,
|
|
31
34
|
ServerZoneType,
|
|
32
35
|
} from "@amplitude/analytics-types";
|
|
33
|
-
import { useEnviveConfig } from "src/contexts/enviveConfigContext/enviveConfigContext";
|
|
34
|
-
import {
|
|
35
|
-
|
|
36
|
-
} from "src/contexts/featureFlagServiceContext/featureFlagServiceContext";
|
|
37
|
-
import { useUserIdentity } from "src/contexts/userIdentityContext/userIdentityContext";
|
|
38
|
-
|
|
39
|
-
export enum SpiffyMetricsEventName {
|
|
40
|
-
BundleLoaded = "Bundle Loaded",
|
|
41
|
-
ChatLiveAgentBtnClick = "Chat Live Agent Btn Click",
|
|
42
|
-
ChatFloatingButtonVisible = "Chat Floating Button Visible",
|
|
43
|
-
ChatComponentVisible = "Chat Component Visible",
|
|
44
|
-
ChatComponentExpanded = "Chat Component Expanded",
|
|
45
|
-
ChatComponentCollapsed = "Chat Component Collapsed",
|
|
46
|
-
ChatUserMessageInput = "Chat User Message Input",
|
|
47
|
-
ChatSuggestionClicked = "Chat Suggestion Clicked",
|
|
48
|
-
ChatAssistantResponse = "Chat Assistant Response",
|
|
49
|
-
ProductCardClicked = "Product Card Clicked",
|
|
50
|
-
ProductReviewCardClicked = "Product Review Card Clicked",
|
|
51
|
-
AddToCartClicked = "Add to Cart Clicked",
|
|
52
|
-
PromptCardClicked = "Prompt Card Clicked",
|
|
53
|
-
SupportedEvent = "Supported Event",
|
|
54
|
-
SearchBackToResponseClicked = "Search Back to Response Clicked",
|
|
55
|
-
PerformanceMetrics = "Performance Metrics",
|
|
56
|
-
SearchBarClicked = "Search Bar Clicked",
|
|
57
|
-
OrderLookupStarted = "Order Lookup Started",
|
|
58
|
-
OrderLookupFormSubmitted = "Order Lookup Form Submitted",
|
|
59
|
-
SearchComponentVisible = "Search Component Visible",
|
|
60
|
-
SearchZeroStateSuggestionClicked = "Search Zero State Suggestion Clicked", // This is the scrolling list of suggestion buttons in global search
|
|
61
|
-
SearchInputStarted = "Search Input Started",
|
|
62
|
-
SearchQuerySubmitted = "Search Query Submitted",
|
|
63
|
-
// SearchAutocompleteViewed = 'Search Autocomplete Viewed', // TODO: add this when autocomplete is added
|
|
64
|
-
// SearchAutocompleteClicked = 'Search Autocomplete Clicked', // TODO: add this when autocomplete is added
|
|
65
|
-
SearchResultsViewed = "Search Results Viewed",
|
|
66
|
-
SearchTimeToFirstClick = "Search Time to First Click",
|
|
67
|
-
SearchZeroResultsRate = "Search Zero Results Rate",
|
|
68
|
-
SearchFilterClicked = "Search Filter Clicked",
|
|
69
|
-
SearchSortClicked = "Search Sort Clicked",
|
|
70
|
-
}
|
|
36
|
+
import { EnviveConfigContext, useEnviveConfig } from "src/contexts/enviveConfigContext/enviveConfigContext";
|
|
37
|
+
import { useFeatureFlagService } from "src/contexts/featureFlagServiceContext/featureFlagServiceContext";
|
|
38
|
+
import { EventsDispatcher } from "src/events";
|
|
71
39
|
|
|
72
|
-
|
|
73
|
-
eventName: SpiffyMetricsEventName;
|
|
74
|
-
eventProps?: Record<string, unknown>;
|
|
75
|
-
eventGroups?: Record<string, unknown>;
|
|
76
|
-
alsoSendToGoogleAnalytics?: boolean;
|
|
77
|
-
}
|
|
40
|
+
const AmplitudeContext = createContext<AmplitudeContextType | null>(null);
|
|
78
41
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
42
|
+
if (typeof window !== 'undefined') {
|
|
43
|
+
Logger.logInfo('AmplitudeContext: window is defined');
|
|
44
|
+
(window as any).AmplitudeReact = React;
|
|
45
|
+
} else {
|
|
46
|
+
Logger.logInfo('AmplitudeContext: window is not defined');
|
|
83
47
|
}
|
|
84
48
|
|
|
85
|
-
const AmplitudeContext = createContext<AmplitudeContextType | null>(null);
|
|
86
|
-
|
|
87
49
|
export const AmplitudeProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
88
50
|
children,
|
|
89
51
|
}) => {
|
|
@@ -95,15 +57,15 @@ export const AmplitudeProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
95
57
|
const contextSource = useAtomValue(contextSourceAtom);
|
|
96
58
|
const identifyingPrefix = useAtomValue(identifyingPrefixAtom);
|
|
97
59
|
const { getItem } = useLocalStorage();
|
|
98
|
-
|
|
99
|
-
|
|
60
|
+
console.log('AmplitudeProvider: getting envive config');
|
|
61
|
+
|
|
62
|
+
const {publicKey,
|
|
100
63
|
featureOverrides,
|
|
101
64
|
variantUrlOverride,
|
|
102
65
|
variantInfoOverride,
|
|
103
66
|
show,
|
|
104
67
|
orgShortName,
|
|
105
|
-
featureGates
|
|
106
|
-
} = useEnviveConfig();
|
|
68
|
+
featureGates } = useContext(EnviveConfigContext) || {};
|
|
107
69
|
|
|
108
70
|
const { featureFlagService } = useFeatureFlagService();
|
|
109
71
|
|
|
@@ -353,7 +315,7 @@ export const AmplitudeProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
353
315
|
});
|
|
354
316
|
const encoder = new TextEncoder();
|
|
355
317
|
const data = encoder.encode(eventData);
|
|
356
|
-
|
|
318
|
+
// calculate a hash of the event properties to use as the insert_id so that duplicate events
|
|
357
319
|
// are automatically dropped by Amplitude
|
|
358
320
|
const hashBuffer = await crypto.subtle.digest("SHA-256", data);
|
|
359
321
|
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./atomProvider";
|
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
import React, { createContext, useContext, useCallback, useMemo } from "react";
|
|
2
2
|
import { useAtomValue } from "jotai";
|
|
3
3
|
import { cdnUrlAtom } from "../../atoms/envive/enviveConfig";
|
|
4
|
-
|
|
5
|
-
interface CdnContextType {
|
|
6
|
-
cdnUrl: string;
|
|
7
|
-
getCdnBasePath: () => string;
|
|
8
|
-
getAssetURL: (assetName: string, orgShortName: string) => string;
|
|
9
|
-
}
|
|
4
|
+
import { CdnContextType } from "@envive-ai/types";
|
|
10
5
|
|
|
11
6
|
const CdnContext = createContext<CdnContextType | null>(null);
|
|
12
7
|
|
|
@@ -1,31 +1,10 @@
|
|
|
1
|
-
import React, { createContext, useContext,
|
|
1
|
+
import React, { createContext, useContext, useEffect, useMemo } from "react";
|
|
2
2
|
import { useSetAtom, useAtomValue } from "jotai";
|
|
3
|
-
import { enviveConfigAtom } from "
|
|
4
|
-
import Logger from "
|
|
5
|
-
import {
|
|
6
|
-
import { EnviveConfig } from "../types";
|
|
3
|
+
import { enviveConfigAtom } from "../../atoms/envive/enviveConfig";
|
|
4
|
+
import Logger from "../../application/logging/logger";
|
|
5
|
+
import { EnviveConfig, EnviveConfigProviderProps } from "@envive-ai/types";
|
|
7
6
|
|
|
8
|
-
const EnviveConfigContext = createContext<EnviveConfig | undefined>(undefined);
|
|
9
|
-
|
|
10
|
-
interface EnviveConfigProviderProps {
|
|
11
|
-
children: ReactNode;
|
|
12
|
-
amplitudeApiKey?: string;
|
|
13
|
-
dataResidency?: string;
|
|
14
|
-
env?: string;
|
|
15
|
-
baseUrl?: string;
|
|
16
|
-
reactAppName?: string;
|
|
17
|
-
cdnUrl?: string;
|
|
18
|
-
contextSource?: string;
|
|
19
|
-
orgLevelApiKey?: string;
|
|
20
|
-
orgShortName?: string;
|
|
21
|
-
identifyingPrefix: string;
|
|
22
|
-
featureOverrides?: Record<string, boolean>;
|
|
23
|
-
variantUrlOverride?: string;
|
|
24
|
-
variantInfoOverride?: any;
|
|
25
|
-
show?: boolean;
|
|
26
|
-
publicKey?: string;
|
|
27
|
-
featureGates?: OrgConfigFeatureGate[]; // New prop for feature gates
|
|
28
|
-
}
|
|
7
|
+
export const EnviveConfigContext = createContext<EnviveConfig | undefined>(undefined);
|
|
29
8
|
|
|
30
9
|
export const EnviveConfigProvider: React.FC<EnviveConfigProviderProps> = ({
|
|
31
10
|
children,
|
|
@@ -46,7 +25,6 @@ export const EnviveConfigProvider: React.FC<EnviveConfigProviderProps> = ({
|
|
|
46
25
|
publicKey,
|
|
47
26
|
featureGates, // Destructure new prop
|
|
48
27
|
}) => {
|
|
49
|
-
const setEnviveConfig = useSetAtom(enviveConfigAtom);
|
|
50
28
|
|
|
51
29
|
const config: EnviveConfig = {
|
|
52
30
|
amplitudeApiKey,
|
|
@@ -67,11 +45,6 @@ export const EnviveConfigProvider: React.FC<EnviveConfigProviderProps> = ({
|
|
|
67
45
|
featureGates, // Add to config
|
|
68
46
|
};
|
|
69
47
|
|
|
70
|
-
useEffect(() => {
|
|
71
|
-
setEnviveConfig(config);
|
|
72
|
-
Logger.logDebug("EnviveConfigProvider: Setting EnviveConfig", config);
|
|
73
|
-
}, [setEnviveConfig, config]);
|
|
74
|
-
|
|
75
48
|
return (
|
|
76
49
|
<EnviveConfigContext.Provider value={config}>
|
|
77
50
|
{config ? children : null}
|
|
@@ -80,7 +53,23 @@ export const EnviveConfigProvider: React.FC<EnviveConfigProviderProps> = ({
|
|
|
80
53
|
};
|
|
81
54
|
|
|
82
55
|
export const useEnviveConfig = (): EnviveConfig => {
|
|
83
|
-
const
|
|
56
|
+
const context = useContext(EnviveConfigContext);
|
|
57
|
+
const setEnviveConfig = useSetAtom(enviveConfigAtom);
|
|
58
|
+
|
|
59
|
+
console.log('EnviveConfigProvider: setting up useEffect to setEnviveConfig', context);
|
|
60
|
+
useEffect(() => {
|
|
61
|
+
console.log('EnviveConfigProvider: useEffect to setEnviveConfig', context, setEnviveConfig);
|
|
62
|
+
if (context) {
|
|
63
|
+
setEnviveConfig(context);
|
|
64
|
+
}
|
|
65
|
+
Logger.logDebug("EnviveConfigProvider: Setting EnviveConfig", context);
|
|
66
|
+
}, [setEnviveConfig, context]);
|
|
67
|
+
|
|
68
|
+
if (!context) {
|
|
69
|
+
throw new Error(
|
|
70
|
+
"useEnviveConfig must be used within an EnviveConfigProvider"
|
|
71
|
+
);
|
|
72
|
+
}
|
|
84
73
|
|
|
85
|
-
return
|
|
74
|
+
return context;
|
|
86
75
|
};
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import React
|
|
2
|
-
import { useNewOrgConfig } from
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useNewOrgConfig } from '../../hooks/NewOrgConfig';
|
|
3
|
+
import { EnviveCssProviderProps } from '@envive-ai/types';
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
children: ReactNode;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export const EnviveCssProvider: React.FC<EnviveCssProviderProps> = ({
|
|
9
|
-
children,
|
|
10
|
-
}) => {
|
|
5
|
+
export const EnviveCssProvider: React.FC<EnviveCssProviderProps> = ({ children }) => {
|
|
11
6
|
const { colorsConfig, frontendConfig, loading } = useNewOrgConfig();
|
|
12
7
|
let merchantThemeCss = `* {}`;
|
|
13
8
|
if (colorsConfig && !loading) {
|
|
@@ -39,9 +34,7 @@ export const EnviveCssProvider: React.FC<EnviveCssProviderProps> = ({
|
|
|
39
34
|
{frontendConfig ? (
|
|
40
35
|
<style id="merchant-css-overrides">{`${frontendConfig.merchantOverrideCss}`}</style>
|
|
41
36
|
) : null}
|
|
42
|
-
{colorsConfig ?
|
|
43
|
-
<style id="merchant-css-colors">{`${merchantThemeCss}`}</style>
|
|
44
|
-
) : null}
|
|
37
|
+
{colorsConfig ? <style id="merchant-css-colors">{`${merchantThemeCss}`}</style> : null}
|
|
45
38
|
|
|
46
39
|
{children}
|
|
47
40
|
</>
|
|
@@ -1,23 +1,13 @@
|
|
|
1
|
-
import React, { createContext, useContext, useCallback, useMemo } from
|
|
2
|
-
import Logger from
|
|
3
|
-
import { StatsigFeatureGate } from
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { OrgConfigFeatureGate } from
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export interface FeatureFlagContextType {
|
|
12
|
-
isFeatureGateEnabled: (featureGate: FeatureGates) => boolean;
|
|
13
|
-
isClientSessionEnabled: () => boolean;
|
|
14
|
-
getFeatureFlags: () => Record<string, boolean>;
|
|
15
|
-
persistFeatureGateOverrides: () => void;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const FeatureFlagContext = createContext<FeatureFlagContextType | undefined>(
|
|
19
|
-
undefined
|
|
20
|
-
);
|
|
1
|
+
import React, { createContext, useContext, useCallback, useMemo } from 'react';
|
|
2
|
+
import Logger from '../../application/logging/logger';
|
|
3
|
+
import { StatsigFeatureGate } from '@spiffy-ai/commerce-api-client';
|
|
4
|
+
import { useSessionStorage } from '../../contexts/sessionStorageContext';
|
|
5
|
+
import { useEnviveConfig } from '../../contexts/enviveConfigContext/enviveConfigContext';
|
|
6
|
+
import { FeatureFlagContextType, FeatureGates, OrgConfigFeatureGate } from '@envive-ai/types';
|
|
7
|
+
|
|
8
|
+
const FEATURE_FLAGS_STORAGE_KEY = 'spiffy-feature-flags';
|
|
9
|
+
|
|
10
|
+
const FeatureFlagContext = createContext<FeatureFlagContextType | undefined>(undefined);
|
|
21
11
|
|
|
22
12
|
export const FeatureFlagProvider: React.FC<{
|
|
23
13
|
featureGates: OrgConfigFeatureGate[];
|
|
@@ -34,12 +24,12 @@ export const FeatureFlagProvider: React.FC<{
|
|
|
34
24
|
const value = paramsObj[featureGate];
|
|
35
25
|
|
|
36
26
|
if (value != null) {
|
|
37
|
-
return value ===
|
|
27
|
+
return value === 'true';
|
|
38
28
|
}
|
|
39
29
|
|
|
40
30
|
return undefined;
|
|
41
31
|
},
|
|
42
|
-
[]
|
|
32
|
+
[],
|
|
43
33
|
);
|
|
44
34
|
|
|
45
35
|
const getWindowFeatureGateOverrides = useCallback(
|
|
@@ -51,7 +41,7 @@ export const FeatureFlagProvider: React.FC<{
|
|
|
51
41
|
|
|
52
42
|
return undefined;
|
|
53
43
|
},
|
|
54
|
-
[featureOverrides]
|
|
44
|
+
[featureOverrides],
|
|
55
45
|
);
|
|
56
46
|
|
|
57
47
|
const getStoredFeatureGateOverrides = useCallback(
|
|
@@ -64,15 +54,15 @@ export const FeatureFlagProvider: React.FC<{
|
|
|
64
54
|
return featureFlagsObj[featureGate];
|
|
65
55
|
} catch (err) {
|
|
66
56
|
Logger.logError(
|
|
67
|
-
|
|
68
|
-
err
|
|
57
|
+
'[spiffy-ai] getStoredFeatureGateOverrides: error parsing feature flags',
|
|
58
|
+
err,
|
|
69
59
|
);
|
|
70
60
|
}
|
|
71
61
|
}
|
|
72
62
|
|
|
73
63
|
return undefined;
|
|
74
64
|
},
|
|
75
|
-
[]
|
|
65
|
+
[],
|
|
76
66
|
);
|
|
77
67
|
|
|
78
68
|
const getFeatureFlagOverride = useCallback(
|
|
@@ -80,7 +70,7 @@ export const FeatureFlagProvider: React.FC<{
|
|
|
80
70
|
const queryOverride = getQueryParamFeatureGateOverrides(featureGate);
|
|
81
71
|
if (queryOverride != null) {
|
|
82
72
|
Logger.logDebug(
|
|
83
|
-
`[spiffy-ai] isFeatureGateEnabled featureGate:${featureGate} overridden by URL param. New value: ${queryOverride}
|
|
73
|
+
`[spiffy-ai] isFeatureGateEnabled featureGate:${featureGate} overridden by URL param. New value: ${queryOverride}`,
|
|
84
74
|
);
|
|
85
75
|
return queryOverride;
|
|
86
76
|
}
|
|
@@ -88,7 +78,7 @@ export const FeatureFlagProvider: React.FC<{
|
|
|
88
78
|
const windowOverride = getWindowFeatureGateOverrides(featureGate);
|
|
89
79
|
if (windowOverride != null) {
|
|
90
80
|
Logger.logDebug(
|
|
91
|
-
`[spiffy-ai] isFeatureGateEnabled featureGate:${featureGate} overridden by window param. New value: ${windowOverride}
|
|
81
|
+
`[spiffy-ai] isFeatureGateEnabled featureGate:${featureGate} overridden by window param. New value: ${windowOverride}`,
|
|
92
82
|
);
|
|
93
83
|
return windowOverride;
|
|
94
84
|
}
|
|
@@ -96,7 +86,7 @@ export const FeatureFlagProvider: React.FC<{
|
|
|
96
86
|
const storedOverride = getStoredFeatureGateOverrides(featureGate);
|
|
97
87
|
if (storedOverride != null) {
|
|
98
88
|
Logger.logDebug(
|
|
99
|
-
`[spiffy-ai] isFeatureGateEnabled featureGate:${featureGate} overridden by stored value. New value: ${storedOverride}
|
|
89
|
+
`[spiffy-ai] isFeatureGateEnabled featureGate:${featureGate} overridden by stored value. New value: ${storedOverride}`,
|
|
100
90
|
);
|
|
101
91
|
return storedOverride;
|
|
102
92
|
}
|
|
@@ -107,7 +97,7 @@ export const FeatureFlagProvider: React.FC<{
|
|
|
107
97
|
getQueryParamFeatureGateOverrides,
|
|
108
98
|
getWindowFeatureGateOverrides,
|
|
109
99
|
getStoredFeatureGateOverrides,
|
|
110
|
-
]
|
|
100
|
+
],
|
|
111
101
|
);
|
|
112
102
|
|
|
113
103
|
const isFeatureGateEnabled = useCallback(
|
|
@@ -121,7 +111,7 @@ export const FeatureFlagProvider: React.FC<{
|
|
|
121
111
|
|
|
122
112
|
if (gateValue == null || gateValue.value == null) {
|
|
123
113
|
Logger.logDebug(
|
|
124
|
-
`[spiffy-ai] isFeatureGateEnabled featureGate:${featureGate} value is undefined - returning false
|
|
114
|
+
`[spiffy-ai] isFeatureGateEnabled featureGate:${featureGate} value is undefined - returning false`,
|
|
125
115
|
);
|
|
126
116
|
|
|
127
117
|
return false;
|
|
@@ -129,7 +119,7 @@ export const FeatureFlagProvider: React.FC<{
|
|
|
129
119
|
|
|
130
120
|
return gateValue.value;
|
|
131
121
|
},
|
|
132
|
-
[featureGates, getFeatureFlagOverride]
|
|
122
|
+
[featureGates, getFeatureFlagOverride],
|
|
133
123
|
);
|
|
134
124
|
|
|
135
125
|
const isClientSessionEnabled = useCallback((): boolean => {
|
|
@@ -137,9 +127,7 @@ export const FeatureFlagProvider: React.FC<{
|
|
|
137
127
|
const isEnabled =
|
|
138
128
|
gates == null ||
|
|
139
129
|
gates?.filter(
|
|
140
|
-
(gate) =>
|
|
141
|
-
gate.name === FeatureGates.IsClientSessionEnabled &&
|
|
142
|
-
gate.value === true
|
|
130
|
+
(gate) => gate.name === FeatureGates.IsClientSessionEnabled && gate.value === true,
|
|
143
131
|
).length > 0;
|
|
144
132
|
|
|
145
133
|
return isEnabled;
|
|
@@ -150,7 +138,7 @@ export const FeatureFlagProvider: React.FC<{
|
|
|
150
138
|
Object.values(FeatureGates).map((featureGate: FeatureGates) => [
|
|
151
139
|
featureGate,
|
|
152
140
|
isFeatureGateEnabled(featureGate),
|
|
153
|
-
])
|
|
141
|
+
]),
|
|
154
142
|
);
|
|
155
143
|
}, [isFeatureGateEnabled]);
|
|
156
144
|
|
|
@@ -169,25 +157,16 @@ export const FeatureFlagProvider: React.FC<{
|
|
|
169
157
|
getFeatureFlags,
|
|
170
158
|
persistFeatureGateOverrides,
|
|
171
159
|
}),
|
|
172
|
-
[
|
|
173
|
-
isFeatureGateEnabled,
|
|
174
|
-
isClientSessionEnabled,
|
|
175
|
-
getFeatureFlags,
|
|
176
|
-
persistFeatureGateOverrides,
|
|
177
|
-
]
|
|
160
|
+
[isFeatureGateEnabled, isClientSessionEnabled, getFeatureFlags, persistFeatureGateOverrides],
|
|
178
161
|
);
|
|
179
162
|
|
|
180
|
-
return
|
|
181
|
-
<FeatureFlagContext.Provider value={value}>
|
|
182
|
-
{children}
|
|
183
|
-
</FeatureFlagContext.Provider>
|
|
184
|
-
);
|
|
163
|
+
return <FeatureFlagContext.Provider value={value}>{children}</FeatureFlagContext.Provider>;
|
|
185
164
|
};
|
|
186
165
|
|
|
187
166
|
export const useFeatureFlag = () => {
|
|
188
167
|
const context = useContext(FeatureFlagContext);
|
|
189
168
|
if (context === undefined) {
|
|
190
|
-
throw new Error(
|
|
169
|
+
throw new Error('useFeatureFlag must be used within a FeatureFlagProvider');
|
|
191
170
|
}
|
|
192
171
|
return context;
|
|
193
172
|
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React, { createContext, useContext, useMemo, ReactNode } from "react";
|
|
2
|
-
import { OrgConfigFeatureGate } from "
|
|
3
|
-
import { FeatureGates } from "src/application/models/featureGates";
|
|
2
|
+
import { OrgConfigFeatureGate, FeatureGates } from "@envive-ai/types";
|
|
4
3
|
import Logger from "src/application/logging/logger";
|
|
5
4
|
|
|
6
5
|
// This is the class that was previously implicitly used or defined elsewhere
|
|
@@ -49,6 +48,7 @@ export class FeatureFlagService {
|
|
|
49
48
|
}
|
|
50
49
|
|
|
51
50
|
export interface FeatureFlagContextType {
|
|
51
|
+
isFeatureGateEnabled(IsRecommendedProductsEnabled: FeatureGates): unknown;
|
|
52
52
|
featureFlagService: FeatureFlagService | undefined;
|
|
53
53
|
}
|
|
54
54
|
|
|
@@ -69,8 +69,16 @@ export const FeatureFlagServiceProvider: React.FC<
|
|
|
69
69
|
[featureGates]
|
|
70
70
|
);
|
|
71
71
|
|
|
72
|
+
const contextValue = useMemo(
|
|
73
|
+
() => ({
|
|
74
|
+
featureFlagService,
|
|
75
|
+
isFeatureGateEnabled: featureFlagService.isFeatureGateEnabled,
|
|
76
|
+
}),
|
|
77
|
+
[featureFlagService]
|
|
78
|
+
);
|
|
79
|
+
|
|
72
80
|
return (
|
|
73
|
-
<FeatureFlagServiceContext.Provider value={
|
|
81
|
+
<FeatureFlagServiceContext.Provider value={contextValue}>
|
|
74
82
|
{children}
|
|
75
83
|
</FeatureFlagServiceContext.Provider>
|
|
76
84
|
);
|
|
@@ -1,61 +1,20 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
} from
|
|
8
|
-
import {
|
|
9
|
-
import { baseUrlAtom, orgLevelApiKeyAtom } from "src/atoms/envive/enviveConfig";
|
|
10
|
-
import { getMerchantOrgIdQuery } from "src/application/models/graphql/queries/getMerchantOrgIdQuery";
|
|
11
|
-
import { validateGraphQLOrgId } from "src/application/models/validators/validateGraphQLOrgId";
|
|
1
|
+
import { createContext, useContext, useCallback, useMemo } from 'react';
|
|
2
|
+
import { useAtomValue } from 'jotai';
|
|
3
|
+
import { baseUrlAtom, orgLevelApiKeyAtom } from '../../atoms/envive/enviveConfig';
|
|
4
|
+
import { getMerchantOrgIdQuery } from '../../application/models/graphql/queries/getMerchantOrgIdQuery';
|
|
5
|
+
import { validateGraphQLOrgId } from '../../application/models/validators/validateGraphQLOrgId';
|
|
6
|
+
import Logger from '../../application/logging/logger';
|
|
7
|
+
import { transformSnakeToCamel } from '../../application/models';
|
|
8
|
+
import { configVersion } from '../../util/configVersion';
|
|
12
9
|
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
import {
|
|
21
|
-
import { FrontendConfig } from "src/application/models/frontendConfig";
|
|
22
|
-
import Logger from "src/application/logging/logger";
|
|
23
|
-
import { configVersion } from "src/types/config-versions";
|
|
24
|
-
import {
|
|
25
|
-
CamelCasedPropertiesDeep,
|
|
26
|
-
transformSnakeToCamel,
|
|
27
|
-
} from "src/application/models";
|
|
28
|
-
|
|
29
|
-
interface BaseMeConfigQueryResponse {
|
|
30
|
-
me: {
|
|
31
|
-
org?: {
|
|
32
|
-
id: string;
|
|
33
|
-
};
|
|
34
|
-
getProductsConfigByVersion?: {
|
|
35
|
-
frontend?: {
|
|
36
|
-
values: CamelCasedPropertiesDeep<GetMerchantFrontendConfigQueryData>;
|
|
37
|
-
};
|
|
38
|
-
colors?: { values: CamelCasedPropertiesDeep<GetMerchantColorsQueryData> };
|
|
39
|
-
};
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
export type ColorsConfigResponse = CamelCasedPropertiesDeep<ColorMapping>;
|
|
43
|
-
export type FrontendConfigResponse = CamelCasedPropertiesDeep<FrontendConfig>;
|
|
44
|
-
|
|
45
|
-
export type GraphQlConfigValues = {
|
|
46
|
-
colorsConfig?: ColorsConfigResponse;
|
|
47
|
-
frontendConfig?: CamelCasedPropertiesDeep<FrontendConfig>;
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
interface GraphQLContextValue {
|
|
51
|
-
executeQuery: <T>(
|
|
52
|
-
query: string,
|
|
53
|
-
variables?: Record<string, unknown>
|
|
54
|
-
) => Promise<T>;
|
|
55
|
-
getOrgId: () => Promise<string | undefined>;
|
|
56
|
-
getColorsAndFrontendConfig: () => Promise<GraphQlConfigValues>;
|
|
57
|
-
isReady: boolean;
|
|
58
|
-
}
|
|
10
|
+
GraphQLContextValue,
|
|
11
|
+
GraphQLProviderProps,
|
|
12
|
+
GraphQlConfigValues,
|
|
13
|
+
ColorsConfigResponse,
|
|
14
|
+
FrontendConfigResponse,
|
|
15
|
+
EnviveConfig,
|
|
16
|
+
} from '@envive-ai/types';
|
|
17
|
+
import { EnviveConfigContext, useEnviveConfig } from '../enviveConfigContext';
|
|
59
18
|
|
|
60
19
|
const GraphQLContext = createContext<GraphQLContextValue | null>(null);
|
|
61
20
|
|
|
@@ -70,26 +29,23 @@ const colorsAndFrontendConfigQuery = () => `
|
|
|
70
29
|
}
|
|
71
30
|
`;
|
|
72
31
|
|
|
73
|
-
type GraphQLProviderProps = {
|
|
74
|
-
children: ReactNode;
|
|
75
|
-
};
|
|
76
|
-
|
|
77
32
|
export const GraphQLProvider = ({ children }: GraphQLProviderProps) => {
|
|
78
|
-
const apiKey =
|
|
79
|
-
const
|
|
33
|
+
const { orgLevelApiKey: apiKey, baseUrl } = useContext(EnviveConfigContext) as EnviveConfig;
|
|
34
|
+
// const apiKey = useAtomValue(orgLevelApiKeyAtom);
|
|
35
|
+
// const baseUrl = useAtomValue(baseUrlAtom);
|
|
80
36
|
|
|
81
37
|
const isReady = Boolean(apiKey && baseUrl);
|
|
82
38
|
|
|
83
39
|
const executeQuery = useCallback(
|
|
84
40
|
async (query: string, variables?: Record<string, unknown>) => {
|
|
85
41
|
if (!isReady) {
|
|
86
|
-
throw new Error(
|
|
42
|
+
throw new Error('GraphQL client not ready - missing apiKey or baseUrl');
|
|
87
43
|
}
|
|
88
44
|
|
|
89
45
|
const response = await fetch(`${baseUrl}/v1/graphql`, {
|
|
90
|
-
method:
|
|
46
|
+
method: 'POST',
|
|
91
47
|
headers: {
|
|
92
|
-
|
|
48
|
+
'Content-Type': 'application/json',
|
|
93
49
|
Authorization: `Bearer ${apiKey}`,
|
|
94
50
|
},
|
|
95
51
|
body: JSON.stringify({ query, variables }),
|
|
@@ -106,7 +62,7 @@ export const GraphQLProvider = ({ children }: GraphQLProviderProps) => {
|
|
|
106
62
|
|
|
107
63
|
return result.data;
|
|
108
64
|
},
|
|
109
|
-
[apiKey, baseUrl, isReady]
|
|
65
|
+
[apiKey, baseUrl, isReady],
|
|
110
66
|
);
|
|
111
67
|
|
|
112
68
|
const getOrgId = useCallback(async () => {
|
|
@@ -114,32 +70,26 @@ export const GraphQLProvider = ({ children }: GraphQLProviderProps) => {
|
|
|
114
70
|
return validateGraphQLOrgId(response.me.org?.id);
|
|
115
71
|
}, [executeQuery]);
|
|
116
72
|
|
|
117
|
-
const getColorsAndFrontendConfig =
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
throw new Error("Colors and frontend config query is not defined");
|
|
123
|
-
}
|
|
124
|
-
const response = await executeQuery(query);
|
|
125
|
-
const colorsConfig =
|
|
126
|
-
response.me.getProductsConfigByVersion?.colors?.values;
|
|
127
|
-
const frontendConfig =
|
|
128
|
-
response.me.getProductsConfigByVersion?.frontend?.values;
|
|
129
|
-
const transformedColorConfig = transformSnakeToCamel(colorsConfig);
|
|
130
|
-
const transformedFrontendConfig = transformSnakeToCamel(frontendConfig);
|
|
131
|
-
return {
|
|
132
|
-
colorsConfig: transformedColorConfig as ColorsConfigResponse,
|
|
133
|
-
frontendConfig: transformedFrontendConfig as FrontendConfigResponse,
|
|
134
|
-
};
|
|
135
|
-
} catch (err) {
|
|
136
|
-
Logger.logError(
|
|
137
|
-
"Error fetching graphql colors and frontend config",
|
|
138
|
-
err
|
|
139
|
-
);
|
|
140
|
-
return { colorsConfig: undefined, frontendConfig: undefined };
|
|
73
|
+
const getColorsAndFrontendConfig = useCallback(async (): Promise<GraphQlConfigValues> => {
|
|
74
|
+
try {
|
|
75
|
+
const query = await colorsAndFrontendConfigQuery();
|
|
76
|
+
if (!query) {
|
|
77
|
+
throw new Error('Colors and frontend config query is not defined');
|
|
141
78
|
}
|
|
142
|
-
|
|
79
|
+
const response = await executeQuery(query);
|
|
80
|
+
const colorsConfig = response.me.getProductsConfigByVersion?.colors?.values;
|
|
81
|
+
const frontendConfig = response.me.getProductsConfigByVersion?.frontend?.values;
|
|
82
|
+
const transformedColorConfig = transformSnakeToCamel(colorsConfig);
|
|
83
|
+
const transformedFrontendConfig = transformSnakeToCamel(frontendConfig);
|
|
84
|
+
return {
|
|
85
|
+
colorsConfig: transformedColorConfig as ColorsConfigResponse,
|
|
86
|
+
frontendConfig: transformedFrontendConfig as FrontendConfigResponse,
|
|
87
|
+
};
|
|
88
|
+
} catch (err) {
|
|
89
|
+
Logger.logError('Error fetching graphql colors and frontend config', err);
|
|
90
|
+
return { colorsConfig: undefined, frontendConfig: undefined };
|
|
91
|
+
}
|
|
92
|
+
}, [executeQuery]);
|
|
143
93
|
|
|
144
94
|
const value = useMemo(
|
|
145
95
|
() => ({
|
|
@@ -148,18 +98,16 @@ export const GraphQLProvider = ({ children }: GraphQLProviderProps) => {
|
|
|
148
98
|
getColorsAndFrontendConfig,
|
|
149
99
|
isReady,
|
|
150
100
|
}),
|
|
151
|
-
[executeQuery, getOrgId, getColorsAndFrontendConfig, isReady]
|
|
101
|
+
[executeQuery, getOrgId, getColorsAndFrontendConfig, isReady],
|
|
152
102
|
);
|
|
153
103
|
|
|
154
|
-
return
|
|
155
|
-
<GraphQLContext.Provider value={value}>{children}</GraphQLContext.Provider>
|
|
156
|
-
);
|
|
104
|
+
return <GraphQLContext.Provider value={value}>{children}</GraphQLContext.Provider>;
|
|
157
105
|
};
|
|
158
106
|
|
|
159
107
|
export const useGraphQLClient = () => {
|
|
160
108
|
const context = useContext(GraphQLContext);
|
|
161
109
|
if (!context) {
|
|
162
|
-
throw new Error(
|
|
110
|
+
throw new Error('useGraphQLClient must be used within a GraphQLProvider');
|
|
163
111
|
}
|
|
164
112
|
return context;
|
|
165
113
|
};
|