@envive-ai/react-hooks 0.2.5 → 0.2.6-alpha-2
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-C3i2q2Bn.js +34 -0
- package/dist/AmplitudeOperations-DcuLn1Zk.cjs +41 -0
- package/dist/{NewOrgConfig-B98Y9tMb.js → NewOrgConfig-BtvujFC8.js} +2 -2
- package/dist/{NewOrgConfig-ZbBKiByQ.cjs → NewOrgConfig-CHt7Xg4t.cjs} +2 -2
- package/dist/TrackComponentVisibleEvent-Be7wfXXY.js +53 -0
- package/dist/TrackComponentVisibleEvent-KUihr_y4.cjs +60 -0
- package/dist/amplitudeContext-CRFxGj_x.d.ts +52 -0
- package/dist/amplitudeContext-ZkerrMUa.d.cts +52 -0
- package/dist/api-D4HaU2Gf.js +166 -0
- package/dist/api-D4Xoibs9.cjs +239 -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 +19 -19
- package/dist/application/utils/index.d.cts +14 -63
- package/dist/application/utils/index.d.ts +14 -63
- package/dist/application/utils/index.js +19 -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 +19 -19
- package/dist/atoms/app/index.d.cts +9 -20
- package/dist/atoms/app/index.d.ts +2 -13
- package/dist/atoms/app/index.js +19 -19
- package/dist/atoms/atomStore/index.cjs +1 -1
- package/dist/atoms/atomStore/index.js +1 -1
- package/dist/atoms/chat/index.cjs +21 -21
- package/dist/atoms/chat/index.d.cts +37 -45
- package/dist/atoms/chat/index.d.ts +35 -43
- package/dist/atoms/chat/index.js +21 -21
- package/dist/atoms/globalSearch/index.cjs +1 -1
- package/dist/atoms/globalSearch/index.d.cts +6 -6
- package/dist/atoms/globalSearch/index.d.ts +6 -6
- package/dist/atoms/globalSearch/index.js +1 -1
- 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.d.ts +1 -1
- package/dist/atoms/search/utils.js +1 -1
- package/dist/cdnContext-B2-NiEiW.js +38 -0
- package/dist/cdnContext-CdhppNeT.cjs +53 -0
- package/dist/chat-C9KdnT5V.js +230 -0
- package/dist/chat-bImNRcnQ.cjs +330 -0
- package/dist/chatState-DqWSgmjC.cjs +120 -0
- package/dist/chatState-DxG0t4fK.js +34 -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 +19 -19
- package/dist/contexts/amplitudeContext/index.d.cts +1 -1
- package/dist/contexts/amplitudeContext/index.d.ts +1 -1
- package/dist/contexts/amplitudeContext/index.js +19 -19
- 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 +4 -4
- package/dist/contexts/enviveConfigContext/index.d.cts +3 -24
- package/dist/contexts/enviveConfigContext/index.d.ts +3 -24
- package/dist/contexts/enviveConfigContext/index.js +4 -4
- package/dist/contexts/enviveCssContext/index.cjs +15 -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 +15 -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 +8 -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 +8 -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 +13 -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 +13 -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 +6 -16
- package/dist/contexts/systemSettingsContext/index.d.ts +4 -14
- package/dist/contexts/systemSettingsContext/index.js +4 -4
- package/dist/contexts/userIdentityContext/index.cjs +19 -19
- package/dist/contexts/userIdentityContext/index.d.cts +11 -2
- package/dist/contexts/userIdentityContext/index.d.ts +11 -2
- package/dist/contexts/userIdentityContext/index.js +19 -19
- package/dist/dist-B7BErEyV.cjs +6019 -0
- package/dist/dist-CtkINi1R.js +5923 -0
- package/dist/domObserver-B19-69gW.js +285 -0
- package/dist/{domObserver-v9ODTyfT.js → domObserver-CwieVNgj.cjs} +23 -4
- package/dist/enviveConfig-Be2kZE7j.js +62 -0
- package/dist/enviveConfig-u50Rpz-G.cjs +130 -0
- package/dist/enviveConfigContext-1oiQuocd.js +45 -0
- package/dist/enviveConfigContext-kQfHEGdJ.cjs +60 -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-B7je7VZV.d.cts +24 -0
- package/dist/featureFlagServiceContext-CPsygiHO.js +46 -0
- package/dist/featureFlagServiceContext-ahy3jou0.d.ts +24 -0
- package/dist/featureFlagServiceContext-pPneufeB.cjs +66 -0
- package/dist/{globalSearch-Ccxq8hNF.js → globalSearch-B_v9qfCT.js} +1 -1
- package/dist/{globalSearch-FBk2epe8.cjs → globalSearch-OiF96VLG.cjs} +1 -1
- package/dist/graphql-CvAHWmel.js +46 -0
- package/dist/graphql-JaGqsToc.cjs +70 -0
- package/dist/graphqlContext-BuXJ5DiW.js +96 -0
- package/dist/graphqlContext-CU7NIJo7.cjs +111 -0
- package/dist/hooks/AmplitudeOperations/index.cjs +21 -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 +20 -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/CdnOperations/index.cjs +4 -4
- package/dist/hooks/CdnOperations/index.d.cts +1 -1
- package/dist/hooks/CdnOperations/index.js +4 -4
- package/dist/hooks/ChatToggle/index.cjs +24 -24
- package/dist/hooks/ChatToggle/index.d.cts +2 -2
- package/dist/hooks/ChatToggle/index.d.ts +2 -2
- package/dist/hooks/ChatToggle/index.js +22 -22
- package/dist/hooks/ChatToggleAnalytics/index.cjs +23 -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 +22 -23
- package/dist/hooks/CustomerSupportHandoff/index.cjs +2 -2
- package/dist/hooks/CustomerSupportHandoff/index.js +2 -2
- package/dist/hooks/Debounce/index.cjs +20 -2
- 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.js +1 -1
- package/dist/hooks/GraphQLConfig/index.cjs +9 -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 +9 -14
- package/dist/hooks/IdentifyUser/index.cjs +19 -19
- package/dist/hooks/IdentifyUser/index.js +19 -19
- 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.js +1 -1
- package/dist/hooks/LocalStorageOperations/index.cjs +8 -7
- 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 +14 -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 +14 -18
- package/dist/hooks/Search/index.cjs +332 -167
- package/dist/hooks/Search/index.d.cts +3 -57
- package/dist/hooks/Search/index.d.ts +3 -57
- package/dist/hooks/Search/index.js +320 -156
- 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 +5 -15
- package/dist/hooks/SystemSettingsContext/index.js +15 -6
- package/dist/hooks/TrackComponentVisibleEvent/index.cjs +21 -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 +21 -21
- package/dist/hooks/UpdateAnalyticsProps/index.cjs +21 -21
- package/dist/hooks/UpdateAnalyticsProps/index.js +20 -20
- package/dist/hooks/utils.d.cts +20 -13
- package/dist/hooks/utils.d.ts +20 -13
- package/dist/{index-LTdMHOxj.d.ts → index-B4cSHxVN.d.ts} +1 -1
- package/dist/{index-DzbkQtaK.d.cts → index-BQpWG3Jm.d.cts} +1 -1
- package/dist/index-BVZbvpx_.d.cts +11 -0
- package/dist/index-CEmUfoZa.d.ts +42 -0
- package/dist/index-CMZcE7pk.d.cts +224 -0
- package/dist/{index-DBqgBV9N.d.ts → index-CYGpI6hE.d.ts} +1 -1
- package/dist/{index-9NE86em3.d.cts → index-ClVBVK15.d.cts} +1 -1
- package/dist/{index-nDWHlouq.d.ts → index-Clf4wYaJ.d.ts} +1 -1
- package/dist/index-DeQte6mb.d.ts +11 -0
- package/dist/index-Dzv6WwSZ.d.ts +224 -0
- package/dist/{index-FQjyuD3D.d.cts → index-ca7Qn8o0.d.cts} +1 -1
- package/dist/{index-DHgVW8ey.d.ts → index-dngXrfnT.d.ts} +1 -1
- package/dist/index-qOBU4GEh.d.cts +42 -0
- package/dist/{index-Da1s8h5C.d.cts → index-w64il54a.d.cts} +1 -1
- 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-Bb2b_3ue.cjs +104 -0
- package/dist/localStorageContext-D2uXKahw.js +90 -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-DmsMlaHT.js +1118 -0
- package/dist/models-wh2gh_Qz.cjs +1305 -0
- package/dist/newOrgConfigAtom-Dsk0fJNR.js +8 -0
- package/dist/{newOrgConfigAtom-A4BEeHMf.cjs → newOrgConfigAtom-hs5A1pbZ.cjs} +1 -1
- package/dist/newOrgConfigContext-DPUxIF2G.js +53 -0
- package/dist/newOrgConfigContext-lw85mMS-.cjs +68 -0
- package/dist/nodeSelector-CbWcUbuc.d.ts +28 -0
- package/dist/nodeSelector-Cj-Xl1LP.d.cts +28 -0
- package/dist/org-C2kLSSe9.cjs +111 -0
- package/dist/org-CIczyLRP.js +32 -0
- package/dist/search-BzXoTgRx.js +233 -0
- package/dist/search-D1cU29CV.cjs +312 -0
- package/dist/searchContext-C8DpjnqD.js +129 -0
- package/dist/searchContext-R_XuFzYe.cjs +145 -0
- package/dist/searchServiceAdapter-CKc7UXKi.js +16 -0
- package/dist/searchServiceAdapter-pROGm3Rf.cjs +34 -0
- package/dist/sessionStorageContext-ByaTsDUC.cjs +66 -0
- package/dist/sessionStorageContext-DKE97oMv.js +52 -0
- package/dist/shopifyUrlContext-G9eqIcsL.cjs +75 -0
- package/dist/shopifyUrlContext-WAm0pnPh.js +61 -0
- package/dist/systemSettingsContext-B-FZ8UAg.js +39 -0
- package/dist/systemSettingsContext-J1sny8W8.cjs +60 -0
- package/dist/types/index.cjs +3 -33
- package/dist/types/index.d.cts +2 -3
- package/dist/types/index.d.ts +2 -3
- package/dist/types/index.js +2 -30
- package/dist/types-1iJ_FnQQ.cjs +39 -0
- package/dist/types-D5du68Vp.js +27 -0
- package/dist/urlsParser-C-Vzs--G.cjs +78 -0
- package/dist/urlsParser-G7Ocwg0M.js +42 -0
- package/dist/useAppDetails-BtK9ZZJs.js +30 -0
- package/dist/useAppDetails-Bw2jJ39H.cjs +38 -0
- package/dist/useGraphQLConfig-Dc8h2yyN.cjs +76 -0
- package/dist/useGraphQLConfig-DuLB3tdv.js +63 -0
- package/dist/{useIntersection-BJRFGG0f.js → useIntersection-BWiHkpKL.js} +1 -1
- package/dist/{useIntersection-CYRvxtRN.cjs → useIntersection-DZHz44BY.cjs} +1 -1
- package/dist/{utils-DIvMgPe8.js → utils-B1LVzQYK.js} +1 -1
- package/dist/{utils-Buo4KU5l.cjs → utils-BivlGkeU.cjs} +1 -1
- package/dist/{utils-BRNaQkCK.js → utils-CExht7Uj.js} +1 -1
- package/dist/{utils-CDw74BCO.cjs → utils-CiJLDPjY.cjs} +1 -1
- package/dist/utils-D_kATUj6.js +1 -1
- package/dist/utils-DqNhRm2b.cjs +1546 -0
- package/dist/utils-IogJwDB9.js +1364 -0
- package/dist/utils-hYTjy7hJ.cjs +1 -1
- package/dist/{utils-DyTiotQz.d.ts → utils-wWki3L1d.d.ts} +1 -1
- package/package.json +7 -25
- package/src/application/commerce-api.ts +38 -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 +16 -38
- 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/app/index.ts +15 -25
- package/src/atoms/app/variant.ts +1 -1
- package/src/atoms/chat/chatState.ts +9 -14
- package/src/atoms/chat/form.ts +1 -1
- package/src/atoms/chat/messageQueue.ts +25 -50
- package/src/atoms/chat/replies.ts +40 -43
- package/src/atoms/chat/suggestions.ts +34 -29
- package/src/atoms/envive/enviveConfig.ts +14 -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 +104 -143
- package/src/contexts/cdnContext/cdnContext.tsx +9 -16
- package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +6 -27
- 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 +40 -95
- package/src/contexts/localStorageContext/localStorageContext.tsx +26 -60
- package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +10 -22
- package/src/contexts/searchContext/searchContext.tsx +29 -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 +80 -210
- package/src/hooks/Search/useSearchInput.ts +227 -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 -4
- package/src/util/colorVar.ts +4 -0
- package/src/util/configVersion.ts +4 -0
- package/src/util/domInsertion.ts +17 -0
- package/dist/SystemSettingsContext-CO5c1L62.cjs +0 -20
- package/dist/SystemSettingsContext-CXmUlH8i.js +0 -13
- package/dist/TrackComponentVisibleEvent-B0WO3ArV.js +0 -52
- package/dist/TrackComponentVisibleEvent-LRE9MYzL.cjs +0 -59
- package/dist/amplitudeContext-B73xamNe.d.cts +0 -52
- package/dist/amplitudeContext-DXnJi0V1.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-CH_-ssYa.js +0 -38
- package/dist/cdnContext-D7kHxOzE.cjs +0 -53
- package/dist/chat-CqPuT9_V.cjs +0 -393
- package/dist/chat-DH70QqJp.js +0 -257
- package/dist/chatElementDisplayLocation-BoE6DEdv.d.ts +0 -25
- package/dist/chatElementDisplayLocation-DWmfNX_u.d.cts +0 -25
- package/dist/chatSearch-BQCZI8MJ.cjs +0 -418
- package/dist/chatSearch-D8xCWU8m.js +0 -295
- 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-CJyYItqu.cjs +0 -62
- package/dist/featureFlagServiceContext-C_2m4wPL.d.ts +0 -23
- package/dist/featureFlagServiceContext-CiKWV306.d.cts +0 -23
- package/dist/featureFlagServiceContext-FBM6DdMJ.js +0 -42
- package/dist/featureGates-KEwAL8p_.js +0 -26
- package/dist/featureGates-qU_ulhpC.cjs +0 -32
- package/dist/frontendConfig-CymUbclV.d.ts +0 -856
- package/dist/frontendConfig-tVg0hsWZ.d.cts +0 -856
- 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-BZPEAFSR.cjs +0 -111
- package/dist/graphqlContext-Bf3E-V2T.d.cts +0 -28
- package/dist/graphqlContext-CQikpV_I.d.ts +0 -28
- package/dist/graphqlContext-eaZPxgRE.js +0 -96
- package/dist/index-BVf069X-.d.ts +0 -184
- package/dist/index-B_KJB5L_.d.cts +0 -186
- package/dist/index-BkLv_fCu.d.ts +0 -186
- package/dist/index-Bmub8e38.d.cts +0 -98
- package/dist/index-C0eAp5f5.d.ts +0 -98
- package/dist/index-CESxqFso.d.cts +0 -228
- package/dist/index-CG3P8xE1.d.cts +0 -676
- package/dist/index-CJc7_j_v.d.ts +0 -44
- package/dist/index-CiWEYzXl.d.cts +0 -184
- package/dist/index-Cyq5HiC0.d.cts +0 -44
- package/dist/index-DL2ODEnw.d.ts +0 -1
- package/dist/index-DgjDuQl4.d.ts +0 -676
- package/dist/index-RcVcRKH7.d.cts +0 -1
- package/dist/index-vP8BKdxl.d.ts +0 -228
- 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-OzAyrPS8.js +0 -8
- package/dist/newOrgConfigContext-DOdUxlOE.d.cts +0 -16
- package/dist/newOrgConfigContext-DX9iqIIK.cjs +0 -68
- package/dist/newOrgConfigContext-aqN8Tu79.js +0 -53
- package/dist/newOrgConfigContext-jphS5d4K.d.ts +0 -16
- package/dist/nodeSelector-B3bPtEjX.d.cts +0 -31
- package/dist/nodeSelector-Dcn3_NrZ.d.ts +0 -31
- package/dist/org-Bq2KsJSp.cjs +0 -43
- package/dist/org-gtWmGw4K.js +0 -12
- package/dist/search-BQPMtze5.cjs +0 -205
- package/dist/search-CIrqYYMI.d.ts +0 -20
- package/dist/search-PXzaYtZj.js +0 -126
- package/dist/search-filter-types-BhK20ts3.d.ts +0 -102
- package/dist/search-filter-types-BxaNSLs_.d.cts +0 -102
- package/dist/search-y-ioX5Mz.d.cts +0 -20
- package/dist/searchContext-CmsLR6Ka.cjs +0 -145
- package/dist/searchContext-NPfqMf6b.js +0 -129
- package/dist/searchServiceAdapter-BczodJGV.cjs +0 -34
- package/dist/searchServiceAdapter-BuEHFG5t.js +0 -16
- package/dist/sessionStorageContext-C1u04nAK.js +0 -52
- package/dist/sessionStorageContext-Cy8xc9-3.cjs +0 -66
- package/dist/shopifyUrlContext-CUyq3f27.cjs +0 -75
- package/dist/shopifyUrlContext-DTLlqlMj.js +0 -61
- package/dist/spiffyWidgets-BnkP5kXf.d.ts +0 -20
- package/dist/spiffyWidgets-BuS00VaQ.d.cts +0 -20
- package/dist/systemSettingsContext-Ba-wi2NZ.cjs +0 -60
- package/dist/systemSettingsContext-DumUaV0m.js +0 -39
- package/dist/test-types-DbrKQIqB.d.ts +0 -40
- package/dist/test-types-ThQiO_cc.d.cts +0 -40
- package/dist/types-BWzwd0Qc.js +0 -30
- package/dist/types-CEx2uKKS.d.ts +0 -51
- package/dist/types-CKMMb_gX.d.cts +0 -51
- package/dist/types-CKPddlfS.cjs +0 -0
- package/dist/types-CtUb63bt.js +0 -76
- package/dist/types-Cz8CaPUQ.cjs +0 -48
- package/dist/types-Dc6hx6ei.js +0 -1
- package/dist/types-Mwm0bS2l.d.ts +0 -10
- 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 -15
- package/dist/types.d.ts +0 -15
- package/dist/types.js +0 -1
- package/dist/urlsParser-COzMdJaX.cjs +0 -78
- package/dist/urlsParser-DxjoLj98.js +0 -42
- package/dist/useAmplitudeOperations-Cv0fi3uj.cjs +0 -41
- package/dist/useAmplitudeOperations-Ti6phPPq.js +0 -34
- package/dist/useAppDetails-BgqbPlfR.cjs +0 -38
- package/dist/useAppDetails-DnKGYtCd.js +0 -30
- package/dist/useDebounce-BV7B-Jz3.js +0 -19
- package/dist/useDebounce-vU5iW5sa.cjs +0 -26
- package/dist/useGraphQLConfig-BizpCw23.cjs +0 -76
- package/dist/useGraphQLConfig-DFWl9Z89.js +0 -63
- package/dist/useMessageInterceptor-BjGP_uXm.js +0 -25
- package/dist/useMessageInterceptor-arAqUq1Q.cjs +0 -33
- package/dist/userIdentityContext-BvsEnQVX.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-B7PAzB_M.d.cts +0 -22
- package/dist/utils-CLGXsOwE.cjs +0 -1591
- package/dist/utils-CrQ0h9tc.d.ts +0 -22
- 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 -1066
- package/src/events/event-types.ts +0 -11
- 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/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 -11
- /package/dist/{AmplitudeOperations-CWI4yjZ4.js → featureFlagServiceContext-CbUOAw5l.js} +0 -0
- /package/dist/{AmplitudeOperations-BEGeYKG5.cjs → featureFlagServiceContext-DSo2brno.cjs} +0 -0
- /package/src/{types/exceptions → exceptions}/sessionExceptions.ts +0 -0
|
@@ -1,30 +1,23 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
|
|
3
|
-
useContext,
|
|
4
|
-
useCallback,
|
|
5
|
-
useMemo,
|
|
6
|
-
useEffect,
|
|
7
|
-
} from "react";
|
|
8
|
-
import { useAtomValue } from "jotai";
|
|
1
|
+
import React, { createContext, useContext, useCallback, useMemo, useEffect } from 'react';
|
|
2
|
+
import { useAtomValue } from 'jotai';
|
|
9
3
|
import {
|
|
10
4
|
Configuration,
|
|
11
5
|
ResponseCategory,
|
|
12
6
|
ResponseError,
|
|
13
7
|
SearchApi,
|
|
14
|
-
} from
|
|
15
|
-
import { baseUrlAtom } from
|
|
16
|
-
import Logger from
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import { UnsupportedProductException } from "src/types/exceptions/unsupportedProductExceptions";
|
|
21
|
-
import { SearchParams, SearchResult } from "src/application/models/api/search";
|
|
8
|
+
} from '@spiffy-ai/commerce-api-client';
|
|
9
|
+
import { baseUrlAtom } from '../../atoms/envive/enviveConfig';
|
|
10
|
+
import Logger from '../../application/logging/logger';
|
|
11
|
+
import { SessionRestartRequired, UnsupportedProductException } from '../../exceptions';
|
|
12
|
+
import { useAppDetails } from '../../hooks/AppDetails/useAppDetails';
|
|
13
|
+
import { useEnviveConfig } from '../../contexts/enviveConfigContext/enviveConfigContext';
|
|
22
14
|
import {
|
|
23
15
|
clearSearchServiceFunction,
|
|
24
16
|
setSearchServiceFunction,
|
|
25
|
-
} from
|
|
17
|
+
} from '../../atoms/search/searchServiceAdapter';
|
|
18
|
+
import { SearchContextValue, SearchParams, SearchResult } from '@envive-ai/types';
|
|
26
19
|
|
|
27
|
-
const transformProductResponses = (products: SearchResult[
|
|
20
|
+
const transformProductResponses = (products: SearchResult['products']) =>
|
|
28
21
|
products.map((data) => ({
|
|
29
22
|
id: data.id,
|
|
30
23
|
responseId: data.response_id,
|
|
@@ -61,19 +54,19 @@ async function throwSessionRestartRequiredIf(errorMsg: string, error: unknown) {
|
|
|
61
54
|
|
|
62
55
|
const errorResponse = await errorResponseBody(error);
|
|
63
56
|
if (
|
|
64
|
-
errorResponse?.message?.toLowerCase() ===
|
|
65
|
-
errorResponse?.app_code?.toUpperCase() ===
|
|
57
|
+
errorResponse?.message?.toLowerCase() === 'unsupported product' ||
|
|
58
|
+
errorResponse?.app_code?.toUpperCase() === 'PRODUCT_NOT_FOUND'
|
|
66
59
|
) {
|
|
67
60
|
throw new UnsupportedProductException();
|
|
68
61
|
} else if (
|
|
69
|
-
errorResponse?.app_code?.toUpperCase() ===
|
|
70
|
-
errorResponse?.sub_code?.toUpperCase() ===
|
|
62
|
+
errorResponse?.app_code?.toUpperCase() === 'RESTART_SESSION' ||
|
|
63
|
+
errorResponse?.sub_code?.toUpperCase() === 'NOT_FOUND'
|
|
71
64
|
) {
|
|
72
65
|
Logger.logInfo(
|
|
73
|
-
|
|
66
|
+
'Session does not exist. Re-start session',
|
|
74
67
|
error,
|
|
75
68
|
error.response,
|
|
76
|
-
errorResponse
|
|
69
|
+
errorResponse,
|
|
77
70
|
);
|
|
78
71
|
throw new SessionRestartRequired();
|
|
79
72
|
}
|
|
@@ -82,16 +75,9 @@ async function throwSessionRestartRequiredIf(errorMsg: string, error: unknown) {
|
|
|
82
75
|
throw error;
|
|
83
76
|
}
|
|
84
77
|
|
|
85
|
-
interface SearchContextValue {
|
|
86
|
-
searchProducts: (params: SearchParams) => Promise<SearchResult>;
|
|
87
|
-
isReady: boolean;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
78
|
const SearchContext = createContext<SearchContextValue | undefined>(undefined);
|
|
91
79
|
|
|
92
|
-
export const SearchProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
93
|
-
children,
|
|
94
|
-
}) => {
|
|
80
|
+
export const SearchProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
|
|
95
81
|
const { orgLevelApiKey, publicKey } = useEnviveConfig();
|
|
96
82
|
const apiKey = orgLevelApiKey || publicKey; // Replicate apiKeyAtom logic
|
|
97
83
|
const appDetails = useAppDetails();
|
|
@@ -106,8 +92,8 @@ export const SearchProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
106
92
|
accessToken: apiKey,
|
|
107
93
|
basePath: baseUrl,
|
|
108
94
|
headers: {
|
|
109
|
-
|
|
110
|
-
Accept:
|
|
95
|
+
'Content-Type': 'application/json',
|
|
96
|
+
Accept: 'application/json',
|
|
111
97
|
},
|
|
112
98
|
});
|
|
113
99
|
return new SearchApi(config);
|
|
@@ -116,7 +102,7 @@ export const SearchProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
116
102
|
const searchProducts = useCallback(
|
|
117
103
|
async (params: SearchParams): Promise<SearchResult> => {
|
|
118
104
|
if (!isReady || !searchApi) {
|
|
119
|
-
throw new Error(
|
|
105
|
+
throw new Error('SearchService not ready - missing dependencies');
|
|
120
106
|
}
|
|
121
107
|
|
|
122
108
|
try {
|
|
@@ -126,30 +112,26 @@ export const SearchProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
126
112
|
org_id: appDetails.orgId,
|
|
127
113
|
user_id: appDetails.userId,
|
|
128
114
|
});
|
|
129
|
-
const {
|
|
130
|
-
products,
|
|
131
|
-
filters,
|
|
132
|
-
search_response_id: searchResponseId,
|
|
133
|
-
} = response;
|
|
115
|
+
const { products, filters, search_response_id: searchResponseId } = response;
|
|
134
116
|
|
|
135
117
|
return {
|
|
136
118
|
products: transformProductResponses(products) || [],
|
|
137
119
|
filters: filters || [],
|
|
138
120
|
totalProductCount: products?.length || 0,
|
|
139
|
-
searchResponseId: searchResponseId ||
|
|
121
|
+
searchResponseId: searchResponseId || '',
|
|
140
122
|
};
|
|
141
123
|
} catch (error) {
|
|
142
|
-
await throwSessionRestartRequiredIf(
|
|
124
|
+
await throwSessionRestartRequiredIf('Failed to search products', error);
|
|
143
125
|
// This part will not be reached if an exception is thrown, but it's required for type safety
|
|
144
126
|
return {
|
|
145
127
|
products: [],
|
|
146
128
|
filters: [],
|
|
147
129
|
totalProductCount: 0,
|
|
148
|
-
searchResponseId:
|
|
130
|
+
searchResponseId: '',
|
|
149
131
|
};
|
|
150
132
|
}
|
|
151
133
|
},
|
|
152
|
-
[searchApi, isReady, appDetails]
|
|
134
|
+
[searchApi, isReady, appDetails],
|
|
153
135
|
);
|
|
154
136
|
|
|
155
137
|
// Register the search function with the adapter for use in atoms
|
|
@@ -170,18 +152,16 @@ export const SearchProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
170
152
|
searchProducts,
|
|
171
153
|
isReady,
|
|
172
154
|
}),
|
|
173
|
-
[searchProducts, isReady]
|
|
155
|
+
[searchProducts, isReady],
|
|
174
156
|
);
|
|
175
157
|
|
|
176
|
-
return
|
|
177
|
-
<SearchContext.Provider value={value}>{children}</SearchContext.Provider>
|
|
178
|
-
);
|
|
158
|
+
return <SearchContext.Provider value={value}>{children}</SearchContext.Provider>;
|
|
179
159
|
};
|
|
180
160
|
|
|
181
161
|
export const useSearchService = () => {
|
|
182
162
|
const context = useContext(SearchContext);
|
|
183
163
|
if (!context) {
|
|
184
|
-
throw new Error(
|
|
164
|
+
throw new Error('useSearchService must be used within a SearchProvider');
|
|
185
165
|
}
|
|
186
166
|
return context;
|
|
187
167
|
};
|
|
@@ -1,28 +1,15 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
useCallback,
|
|
5
|
-
useMemo,
|
|
6
|
-
useEffect,
|
|
7
|
-
} from "react";
|
|
8
|
-
import Logger from "../../application/logging/logger";
|
|
1
|
+
import React, { createContext, useContext, useCallback, useMemo, useEffect } from 'react';
|
|
2
|
+
import Logger from '../../application/logging/logger';
|
|
3
|
+
import { SessionStorageContextType } from '@envive-ai/types';
|
|
9
4
|
|
|
10
|
-
|
|
11
|
-
setItem: (key: string, value: string) => void;
|
|
12
|
-
getItem: (key: string) => string | null;
|
|
13
|
-
isAvailable: boolean;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const SessionStorageContext = createContext<SessionStorageContextType | null>(
|
|
17
|
-
null
|
|
18
|
-
);
|
|
5
|
+
const SessionStorageContext = createContext<SessionStorageContextType | null>(null);
|
|
19
6
|
|
|
20
7
|
export const SessionStorageProvider: React.FC<{
|
|
21
8
|
children: React.ReactNode;
|
|
22
9
|
}> = ({ children }) => {
|
|
23
10
|
const isAvailable = useMemo(() => {
|
|
24
11
|
try {
|
|
25
|
-
return typeof window !==
|
|
12
|
+
return typeof window !== 'undefined' && !!window.sessionStorage;
|
|
26
13
|
} catch {
|
|
27
14
|
return false;
|
|
28
15
|
}
|
|
@@ -30,7 +17,7 @@ export const SessionStorageProvider: React.FC<{
|
|
|
30
17
|
|
|
31
18
|
useEffect(() => {
|
|
32
19
|
if (!isAvailable) {
|
|
33
|
-
Logger.logError(
|
|
20
|
+
Logger.logError('sessionStorage is not available', undefined);
|
|
34
21
|
}
|
|
35
22
|
}, [isAvailable]);
|
|
36
23
|
|
|
@@ -38,11 +25,9 @@ export const SessionStorageProvider: React.FC<{
|
|
|
38
25
|
(key: string, value: string) => {
|
|
39
26
|
if (!isAvailable) return;
|
|
40
27
|
sessionStorage.setItem(key, value);
|
|
41
|
-
window.dispatchEvent(
|
|
42
|
-
new StorageEvent("storage", { key, newValue: value })
|
|
43
|
-
);
|
|
28
|
+
window.dispatchEvent(new StorageEvent('storage', { key, newValue: value }));
|
|
44
29
|
},
|
|
45
|
-
[isAvailable]
|
|
30
|
+
[isAvailable],
|
|
46
31
|
);
|
|
47
32
|
|
|
48
33
|
const getItem = useCallback(
|
|
@@ -50,7 +35,7 @@ export const SessionStorageProvider: React.FC<{
|
|
|
50
35
|
if (!isAvailable) return null;
|
|
51
36
|
return sessionStorage.getItem(key);
|
|
52
37
|
},
|
|
53
|
-
[isAvailable]
|
|
38
|
+
[isAvailable],
|
|
54
39
|
);
|
|
55
40
|
|
|
56
41
|
const value = useMemo(
|
|
@@ -59,22 +44,16 @@ export const SessionStorageProvider: React.FC<{
|
|
|
59
44
|
getItem,
|
|
60
45
|
isAvailable,
|
|
61
46
|
}),
|
|
62
|
-
[setItem, getItem, isAvailable]
|
|
47
|
+
[setItem, getItem, isAvailable],
|
|
63
48
|
);
|
|
64
49
|
|
|
65
|
-
return
|
|
66
|
-
<SessionStorageContext.Provider value={value}>
|
|
67
|
-
{children}
|
|
68
|
-
</SessionStorageContext.Provider>
|
|
69
|
-
);
|
|
50
|
+
return <SessionStorageContext.Provider value={value}>{children}</SessionStorageContext.Provider>;
|
|
70
51
|
};
|
|
71
52
|
|
|
72
53
|
export const useSessionStorage = () => {
|
|
73
54
|
const context = useContext(SessionStorageContext);
|
|
74
55
|
if (!context) {
|
|
75
|
-
throw new Error(
|
|
76
|
-
"useSessionStorage must be used within a SessionStorageProvider"
|
|
77
|
-
);
|
|
56
|
+
throw new Error('useSessionStorage must be used within a SessionStorageProvider');
|
|
78
57
|
}
|
|
79
58
|
return context;
|
|
80
59
|
};
|
|
@@ -1,32 +1,20 @@
|
|
|
1
|
-
import React, { createContext, useCallback, useContext, useMemo } from
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import React, { createContext, useCallback, useContext, useMemo } from 'react';
|
|
2
|
+
import { parseHref } from '../../application/utils/urlsParser';
|
|
3
|
+
import { IdExtractor, ShopifyUrlContextType } from '@envive-ai/types';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
getTrimmedPathName: () => string | null;
|
|
7
|
-
getPlpOrPdpId: (extractor: IdExtractor) => string | null;
|
|
8
|
-
isOnPdpPage: () => boolean;
|
|
9
|
-
isOnPlpPage: () => boolean;
|
|
10
|
-
isReady: boolean;
|
|
11
|
-
}
|
|
5
|
+
const ShopifyUrlContext = createContext<ShopifyUrlContextType | undefined>(undefined);
|
|
12
6
|
|
|
13
|
-
const
|
|
14
|
-
undefined
|
|
15
|
-
);
|
|
16
|
-
|
|
17
|
-
export const ShopifyUrlProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
18
|
-
children,
|
|
19
|
-
}) => {
|
|
7
|
+
export const ShopifyUrlProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
|
|
20
8
|
const isReady = true; // No external dependencies, so always ready
|
|
21
9
|
|
|
22
10
|
const getTrimmedPathName = useCallback((): string | null => {
|
|
23
11
|
let { pathname } = window.location;
|
|
24
12
|
// strip out the proxy path so local dev still works
|
|
25
|
-
pathname = pathname.replace(
|
|
13
|
+
pathname = pathname.replace('/proxy', '');
|
|
26
14
|
// remove trailing hash if it exists
|
|
27
|
-
pathname = pathname.replace(/#.*$/,
|
|
15
|
+
pathname = pathname.replace(/#.*$/, '');
|
|
28
16
|
// remove trailing /, ie. some URLs can end with '/' like /collections/cast-iron/
|
|
29
|
-
pathname = pathname.replace(/\/$/,
|
|
17
|
+
pathname = pathname.replace(/\/$/, '');
|
|
30
18
|
|
|
31
19
|
if (pathname === undefined || pathname === null || pathname.length === 0) {
|
|
32
20
|
return null;
|
|
@@ -37,35 +25,34 @@ export const ShopifyUrlProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
37
25
|
|
|
38
26
|
const getPlpOrPdpId = useCallback(
|
|
39
27
|
(extractor: IdExtractor): string | null => {
|
|
40
|
-
if (extractor ===
|
|
28
|
+
if (extractor === 'shopify-product-variant-id') {
|
|
41
29
|
const parsedHref = parseHref(window.location.href);
|
|
42
|
-
const variantId = parsedHref?.urlSearchParams?.get(
|
|
30
|
+
const variantId = parsedHref?.urlSearchParams?.get('variant');
|
|
43
31
|
if (!variantId) {
|
|
44
|
-
return getPlpOrPdpId(
|
|
32
|
+
return getPlpOrPdpId('shopify-product-id');
|
|
45
33
|
}
|
|
46
34
|
return variantId;
|
|
47
35
|
}
|
|
48
36
|
|
|
49
|
-
const pathSegment =
|
|
50
|
-
|
|
51
|
-
const tokens = getTrimmedPathName()?.split("/");
|
|
37
|
+
const pathSegment = extractor === 'shopify-product-id' ? 'products' : 'collections';
|
|
38
|
+
const tokens = getTrimmedPathName()?.split('/');
|
|
52
39
|
const idIndex = tokens?.findIndex((token) => token === pathSegment);
|
|
53
40
|
if (idIndex !== undefined && idIndex >= 0 && tokens) {
|
|
54
41
|
return decodeURIComponent(tokens[idIndex + 1]);
|
|
55
42
|
}
|
|
56
43
|
return null;
|
|
57
44
|
},
|
|
58
|
-
[getTrimmedPathName]
|
|
45
|
+
[getTrimmedPathName],
|
|
59
46
|
);
|
|
60
47
|
|
|
61
48
|
const isOnPdpPage = useCallback((): boolean => {
|
|
62
|
-
return getTrimmedPathName()?.includes(
|
|
49
|
+
return getTrimmedPathName()?.includes('/products') ?? false;
|
|
63
50
|
}, [getTrimmedPathName]);
|
|
64
51
|
|
|
65
52
|
const isOnPlpPage = useCallback((): boolean => {
|
|
66
53
|
return (
|
|
67
|
-
(getTrimmedPathName()?.includes(
|
|
68
|
-
!getTrimmedPathName()?.includes(
|
|
54
|
+
(getTrimmedPathName()?.includes('/collections') &&
|
|
55
|
+
!getTrimmedPathName()?.includes('/products')) ??
|
|
69
56
|
false
|
|
70
57
|
);
|
|
71
58
|
}, [getTrimmedPathName]);
|
|
@@ -78,20 +65,16 @@ export const ShopifyUrlProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
78
65
|
isOnPlpPage,
|
|
79
66
|
isReady,
|
|
80
67
|
}),
|
|
81
|
-
[getTrimmedPathName, getPlpOrPdpId, isOnPdpPage, isOnPlpPage, isReady]
|
|
68
|
+
[getTrimmedPathName, getPlpOrPdpId, isOnPdpPage, isOnPlpPage, isReady],
|
|
82
69
|
);
|
|
83
70
|
|
|
84
|
-
return
|
|
85
|
-
<ShopifyUrlContext.Provider value={value}>
|
|
86
|
-
{children}
|
|
87
|
-
</ShopifyUrlContext.Provider>
|
|
88
|
-
);
|
|
71
|
+
return <ShopifyUrlContext.Provider value={value}>{children}</ShopifyUrlContext.Provider>;
|
|
89
72
|
};
|
|
90
73
|
|
|
91
74
|
export const useShopifyUrl = () => {
|
|
92
75
|
const context = useContext(ShopifyUrlContext);
|
|
93
76
|
if (!context) {
|
|
94
|
-
throw new Error(
|
|
77
|
+
throw new Error('useShopifyUrl must be used within a ShopifyUrlProvider');
|
|
95
78
|
}
|
|
96
79
|
return context;
|
|
97
80
|
};
|
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
SetStateAction,
|
|
6
|
-
createContext,
|
|
7
|
-
useMemo,
|
|
8
|
-
useState,
|
|
9
|
-
} from "react";
|
|
10
|
-
import { GenerationParams } from "src/application/models";
|
|
11
|
-
import { baseUrlAtom } from "src/atoms/envive/enviveConfig";
|
|
1
|
+
import { GenerationParams } from '@envive-ai/types';
|
|
2
|
+
import { useAtomValue } from 'jotai';
|
|
3
|
+
import { Dispatch, ReactNode, SetStateAction, createContext, useMemo, useState } from 'react';
|
|
4
|
+
import { baseUrlAtom } from 'src/atoms/envive/enviveConfig';
|
|
12
5
|
|
|
13
6
|
// TODO: Refactor this to a common service that handles query params (and spiffy variables all together)
|
|
14
7
|
const getChatModelName = () => {
|
|
@@ -37,9 +30,7 @@ interface SystemSettingsContextProviderProps {
|
|
|
37
30
|
showDebugBar?: boolean;
|
|
38
31
|
}
|
|
39
32
|
|
|
40
|
-
const SystemSettingsContext = createContext<
|
|
41
|
-
SystemSettingsContextParams | undefined
|
|
42
|
-
>(undefined);
|
|
33
|
+
const SystemSettingsContext = createContext<SystemSettingsContextParams | undefined>(undefined);
|
|
43
34
|
|
|
44
35
|
const SystemSettingsContextProvider = ({
|
|
45
36
|
children,
|
|
@@ -47,7 +38,7 @@ const SystemSettingsContextProvider = ({
|
|
|
47
38
|
showDebugBar,
|
|
48
39
|
}: SystemSettingsContextProviderProps) => {
|
|
49
40
|
const [params, setParams] = useState<GenerationParams | undefined>(
|
|
50
|
-
() => generationParams ?? defaultGenerationParams
|
|
41
|
+
() => generationParams ?? defaultGenerationParams,
|
|
51
42
|
);
|
|
52
43
|
const endpointURL = useAtomValue(baseUrlAtom);
|
|
53
44
|
const settingsContextValues = useMemo(
|
|
@@ -57,7 +48,7 @@ const SystemSettingsContextProvider = ({
|
|
|
57
48
|
setGenerationParams: setParams,
|
|
58
49
|
endpointURL,
|
|
59
50
|
}),
|
|
60
|
-
[generationParams, endpointURL, showDebugBar]
|
|
51
|
+
[generationParams, endpointURL, showDebugBar],
|
|
61
52
|
);
|
|
62
53
|
|
|
63
54
|
return (
|
|
@@ -67,8 +58,4 @@ const SystemSettingsContextProvider = ({
|
|
|
67
58
|
);
|
|
68
59
|
};
|
|
69
60
|
|
|
70
|
-
export {
|
|
71
|
-
SystemSettingsContextProvider,
|
|
72
|
-
SystemSettingsContext,
|
|
73
|
-
defaultGenerationParams,
|
|
74
|
-
};
|
|
61
|
+
export { SystemSettingsContextProvider, SystemSettingsContext, defaultGenerationParams };
|
|
@@ -1,17 +1,10 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
} from "react";
|
|
9
|
-
import UAParser from "ua-parser-js";
|
|
10
|
-
import Logger from "src/application/logging/logger";
|
|
11
|
-
import CommerceApiClient from "src/application/commerce-api";
|
|
12
|
-
import { v4 as uuid } from "uuid";
|
|
13
|
-
import { ClientDetails } from "src/application/models/clientDetails";
|
|
14
|
-
import { useLocalStorage } from "src/contexts/localStorageContext";
|
|
1
|
+
import React, { createContext, useCallback, useContext, useMemo, useState, useEffect } from 'react';
|
|
2
|
+
import UAParser from 'ua-parser-js';
|
|
3
|
+
import { ClientDetails, UserIdentityContextType } from '@envive-ai/types';
|
|
4
|
+
import Logger from '../../application/logging/logger';
|
|
5
|
+
import CommerceApiClient from '../../application/commerce-api';
|
|
6
|
+
import { useLocalStorage } from '../localStorageContext';
|
|
7
|
+
import { v4 as uuid } from 'uuid';
|
|
15
8
|
|
|
16
9
|
// Helper function from the original service
|
|
17
10
|
const getUserAgentDetails = (): ClientDetails => {
|
|
@@ -30,29 +23,10 @@ const getUserAgentDetails = (): ClientDetails => {
|
|
|
30
23
|
};
|
|
31
24
|
};
|
|
32
25
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
getUserIdDefaultFromLocalStorage: () => string | undefined;
|
|
38
|
-
setUserIdDefaultInLocalStorage: (userId: string) => string;
|
|
39
|
-
setUserIdOverrideInLocalStorage: (userId: string) => string;
|
|
40
|
-
clearUserIdOverrideInLocalStorage: () => void;
|
|
41
|
-
isReady: boolean;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
const UserIdentityContext = createContext<UserIdentityContextType | undefined>(
|
|
45
|
-
undefined
|
|
46
|
-
);
|
|
47
|
-
|
|
48
|
-
export const UserIdentityProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
49
|
-
children,
|
|
50
|
-
}) => {
|
|
51
|
-
const {
|
|
52
|
-
getItem,
|
|
53
|
-
setItem,
|
|
54
|
-
isAvailable: localStorageIsReady,
|
|
55
|
-
} = useLocalStorage();
|
|
26
|
+
const UserIdentityContext = createContext<UserIdentityContextType | undefined>(undefined);
|
|
27
|
+
|
|
28
|
+
export const UserIdentityProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
|
|
29
|
+
const { getItem, setItem, isAvailable: localStorageIsReady } = useLocalStorage();
|
|
56
30
|
|
|
57
31
|
const [isReady, setIsReady] = useState(false);
|
|
58
32
|
|
|
@@ -62,50 +36,44 @@ export const UserIdentityProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
62
36
|
setIsReady(localStorageIsReady);
|
|
63
37
|
}, [localStorageIsReady]);
|
|
64
38
|
|
|
65
|
-
const USER_ID_OVERRIDE_KEY =
|
|
66
|
-
const USER_ID_DEFAULT_KEY =
|
|
39
|
+
const USER_ID_OVERRIDE_KEY = 'v1-spiffy-user-id-override';
|
|
40
|
+
const USER_ID_DEFAULT_KEY = 'v1-spiffy-user-id-default';
|
|
67
41
|
|
|
68
|
-
const getUserIdOverrideFromLocalStorage = useCallback(
|
|
69
|
-
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}, [getItem]);
|
|
42
|
+
const getUserIdOverrideFromLocalStorage = useCallback(
|
|
43
|
+
(): string | undefined => getItem(USER_ID_OVERRIDE_KEY) ?? undefined,
|
|
44
|
+
[getItem],
|
|
45
|
+
);
|
|
73
46
|
|
|
74
|
-
const getUserIdDefaultFromLocalStorage = useCallback(
|
|
75
|
-
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}, [getItem]);
|
|
47
|
+
const getUserIdDefaultFromLocalStorage = useCallback(
|
|
48
|
+
(): string | undefined => getItem(USER_ID_DEFAULT_KEY) ?? undefined,
|
|
49
|
+
[getItem],
|
|
50
|
+
);
|
|
79
51
|
|
|
80
52
|
const setUserIdDefaultInLocalStorage = useCallback(
|
|
81
53
|
(userId: string): string => {
|
|
82
|
-
Logger.logInfo(
|
|
83
|
-
`setUserIdDefaultInLocalStorage - Setting user_id=${userId}`
|
|
84
|
-
);
|
|
54
|
+
Logger.logInfo(`setUserIdDefaultInLocalStorage - Setting user_id=${userId}`);
|
|
85
55
|
setItem(USER_ID_DEFAULT_KEY, userId);
|
|
86
56
|
// window.dispatchEvent is handled by useLocalStorage now
|
|
87
57
|
return userId;
|
|
88
58
|
},
|
|
89
|
-
[setItem, USER_ID_DEFAULT_KEY]
|
|
59
|
+
[setItem, USER_ID_DEFAULT_KEY],
|
|
90
60
|
);
|
|
91
61
|
|
|
92
62
|
const setUserIdOverrideInLocalStorage = useCallback(
|
|
93
63
|
(userId: string): string => {
|
|
94
|
-
Logger.logInfo(
|
|
95
|
-
`setUserIdOverrideInLocalStorage - Setting user_id=${userId}`
|
|
96
|
-
);
|
|
64
|
+
Logger.logInfo(`setUserIdOverrideInLocalStorage - Setting user_id=${userId}`);
|
|
97
65
|
setItem(USER_ID_OVERRIDE_KEY, userId);
|
|
98
66
|
// window.dispatchEvent is handled by useLocalStorage now
|
|
99
67
|
return userId;
|
|
100
68
|
},
|
|
101
|
-
[setItem, USER_ID_OVERRIDE_KEY]
|
|
69
|
+
[setItem, USER_ID_OVERRIDE_KEY],
|
|
102
70
|
);
|
|
103
71
|
|
|
104
72
|
const clearUserIdOverrideInLocalStorage = useCallback(() => {
|
|
105
73
|
Logger.logInfo(`clearUserIdOverrideInLocalStorage - Clearing user_id`);
|
|
106
74
|
// LocalStorageService.getLocalStorage()?.removeItem(USER_ID_OVERRIDE_KEY);
|
|
107
75
|
// window.dispatchEvent is handled by useLocalStorage now
|
|
108
|
-
setItem(USER_ID_OVERRIDE_KEY,
|
|
76
|
+
setItem(USER_ID_OVERRIDE_KEY, ''); // Set to empty string to clear
|
|
109
77
|
}, [setItem, USER_ID_OVERRIDE_KEY]);
|
|
110
78
|
|
|
111
79
|
const getUserIdOrDefault = useCallback((): string => {
|
|
@@ -128,31 +96,25 @@ export const UserIdentityProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
128
96
|
|
|
129
97
|
const identifyUser = useCallback(async (): Promise<void> => {
|
|
130
98
|
if (!isReady) {
|
|
131
|
-
Logger.logWarn(
|
|
132
|
-
"[UserIdentityContext] Context not ready, skipping identifyUser",
|
|
133
|
-
undefined
|
|
134
|
-
);
|
|
99
|
+
Logger.logWarn('[UserIdentityContext] Context not ready, skipping identifyUser', undefined);
|
|
135
100
|
return;
|
|
136
101
|
}
|
|
137
102
|
|
|
138
103
|
try {
|
|
139
104
|
// Temporarily commented out until WindowDataLayerService is resolved
|
|
140
105
|
// const cdpUserId = WindowDataLayerService.getGoogleAnalyticsClientId();
|
|
141
|
-
const cdpUserId =
|
|
106
|
+
const cdpUserId = 'UNKNOWN_CDP_USER_ID'; // Placeholder
|
|
142
107
|
const userId = getUserIdOrDefault();
|
|
143
108
|
const userAgentDetails = getUserAgentDetails();
|
|
144
109
|
|
|
145
110
|
if (!cdpUserId) {
|
|
146
|
-
Logger.logWarn(
|
|
147
|
-
"[spiffy-ai] No GA Client ID found, skipping identifyUser",
|
|
148
|
-
undefined
|
|
149
|
-
);
|
|
111
|
+
Logger.logWarn('[spiffy-ai] No GA Client ID found, skipping identifyUser', undefined);
|
|
150
112
|
return;
|
|
151
113
|
}
|
|
152
114
|
|
|
153
115
|
await CommerceApiClient.identifyUser(userId, cdpUserId, userAgentDetails);
|
|
154
116
|
} catch (error) {
|
|
155
|
-
Logger.logError(
|
|
117
|
+
Logger.logError('[spiffy-ai] Error identifying user', error);
|
|
156
118
|
}
|
|
157
119
|
}, [isReady, getUserIdOrDefault]);
|
|
158
120
|
|
|
@@ -176,22 +138,16 @@ export const UserIdentityProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
176
138
|
setUserIdOverrideInLocalStorage,
|
|
177
139
|
clearUserIdOverrideInLocalStorage,
|
|
178
140
|
isReady,
|
|
179
|
-
]
|
|
141
|
+
],
|
|
180
142
|
);
|
|
181
143
|
|
|
182
|
-
return
|
|
183
|
-
<UserIdentityContext.Provider value={value}>
|
|
184
|
-
{children}
|
|
185
|
-
</UserIdentityContext.Provider>
|
|
186
|
-
);
|
|
144
|
+
return <UserIdentityContext.Provider value={value}>{children}</UserIdentityContext.Provider>;
|
|
187
145
|
};
|
|
188
146
|
|
|
189
147
|
export const useUserIdentity = () => {
|
|
190
148
|
const context = useContext(UserIdentityContext);
|
|
191
149
|
if (!context) {
|
|
192
|
-
throw new Error(
|
|
193
|
-
"useUserIdentity must be used within a UserIdentityProvider"
|
|
194
|
-
);
|
|
150
|
+
throw new Error('useUserIdentity must be used within a UserIdentityProvider');
|
|
195
151
|
}
|
|
196
152
|
return context;
|
|
197
153
|
};
|
package/src/events/index.ts
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
2
|
/**
|
|
4
3
|
* A singleton class for dispatching Spiffy events to the document object.
|
|
5
4
|
* Provides functionality for adding default event data, managing listeners,
|
|
6
5
|
* and dispatching events.
|
|
7
|
-
*
|
|
6
|
+
*
|
|
8
7
|
* TODO: could add observability to the listeners, would need to track listeners
|
|
9
8
|
* internally.
|
|
10
9
|
*/
|
|
11
10
|
export class EventsDispatcher {
|
|
12
|
-
|
|
13
11
|
static eventData: Record<string, any> = {};
|
|
14
12
|
|
|
15
13
|
/**
|
|
@@ -38,7 +36,12 @@ export class EventsDispatcher {
|
|
|
38
36
|
includeDefault = true;
|
|
39
37
|
}
|
|
40
38
|
const eventData = includeDefault ? { ...this.eventData, ...detail } : detail;
|
|
41
|
-
const event = new CustomEvent(eventName, {
|
|
39
|
+
const event = new CustomEvent(eventName, {
|
|
40
|
+
detail: eventData,
|
|
41
|
+
bubbles: true,
|
|
42
|
+
composed: true,
|
|
43
|
+
cancelable: false,
|
|
44
|
+
});
|
|
42
45
|
window.dispatchEvent(event);
|
|
43
46
|
}
|
|
44
47
|
|