@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,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,18 @@
|
|
|
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
|
-
import { validateGraphQLFrontendConfig } from "src/application/models/validators/validateGraphQLFrontendConfig";
|
|
20
|
-
import { ColorMapping } from "src/application/models/colorsConfig";
|
|
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
|
+
} from '@envive-ai/types';
|
|
59
16
|
|
|
60
17
|
const GraphQLContext = createContext<GraphQLContextValue | null>(null);
|
|
61
18
|
|
|
@@ -70,10 +27,6 @@ const colorsAndFrontendConfigQuery = () => `
|
|
|
70
27
|
}
|
|
71
28
|
`;
|
|
72
29
|
|
|
73
|
-
type GraphQLProviderProps = {
|
|
74
|
-
children: ReactNode;
|
|
75
|
-
};
|
|
76
|
-
|
|
77
30
|
export const GraphQLProvider = ({ children }: GraphQLProviderProps) => {
|
|
78
31
|
const apiKey = useAtomValue(orgLevelApiKeyAtom);
|
|
79
32
|
const baseUrl = useAtomValue(baseUrlAtom);
|
|
@@ -83,13 +36,13 @@ export const GraphQLProvider = ({ children }: GraphQLProviderProps) => {
|
|
|
83
36
|
const executeQuery = useCallback(
|
|
84
37
|
async (query: string, variables?: Record<string, unknown>) => {
|
|
85
38
|
if (!isReady) {
|
|
86
|
-
throw new Error(
|
|
39
|
+
throw new Error('GraphQL client not ready - missing apiKey or baseUrl');
|
|
87
40
|
}
|
|
88
41
|
|
|
89
42
|
const response = await fetch(`${baseUrl}/v1/graphql`, {
|
|
90
|
-
method:
|
|
43
|
+
method: 'POST',
|
|
91
44
|
headers: {
|
|
92
|
-
|
|
45
|
+
'Content-Type': 'application/json',
|
|
93
46
|
Authorization: `Bearer ${apiKey}`,
|
|
94
47
|
},
|
|
95
48
|
body: JSON.stringify({ query, variables }),
|
|
@@ -106,7 +59,7 @@ export const GraphQLProvider = ({ children }: GraphQLProviderProps) => {
|
|
|
106
59
|
|
|
107
60
|
return result.data;
|
|
108
61
|
},
|
|
109
|
-
[apiKey, baseUrl, isReady]
|
|
62
|
+
[apiKey, baseUrl, isReady],
|
|
110
63
|
);
|
|
111
64
|
|
|
112
65
|
const getOrgId = useCallback(async () => {
|
|
@@ -114,32 +67,26 @@ export const GraphQLProvider = ({ children }: GraphQLProviderProps) => {
|
|
|
114
67
|
return validateGraphQLOrgId(response.me.org?.id);
|
|
115
68
|
}, [executeQuery]);
|
|
116
69
|
|
|
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 };
|
|
70
|
+
const getColorsAndFrontendConfig = useCallback(async (): Promise<GraphQlConfigValues> => {
|
|
71
|
+
try {
|
|
72
|
+
const query = await colorsAndFrontendConfigQuery();
|
|
73
|
+
if (!query) {
|
|
74
|
+
throw new Error('Colors and frontend config query is not defined');
|
|
141
75
|
}
|
|
142
|
-
|
|
76
|
+
const response = await executeQuery(query);
|
|
77
|
+
const colorsConfig = response.me.getProductsConfigByVersion?.colors?.values;
|
|
78
|
+
const frontendConfig = response.me.getProductsConfigByVersion?.frontend?.values;
|
|
79
|
+
const transformedColorConfig = transformSnakeToCamel(colorsConfig);
|
|
80
|
+
const transformedFrontendConfig = transformSnakeToCamel(frontendConfig);
|
|
81
|
+
return {
|
|
82
|
+
colorsConfig: transformedColorConfig as ColorsConfigResponse,
|
|
83
|
+
frontendConfig: transformedFrontendConfig as FrontendConfigResponse,
|
|
84
|
+
};
|
|
85
|
+
} catch (err) {
|
|
86
|
+
Logger.logError('Error fetching graphql colors and frontend config', err);
|
|
87
|
+
return { colorsConfig: undefined, frontendConfig: undefined };
|
|
88
|
+
}
|
|
89
|
+
}, [executeQuery]);
|
|
143
90
|
|
|
144
91
|
const value = useMemo(
|
|
145
92
|
() => ({
|
|
@@ -148,18 +95,16 @@ export const GraphQLProvider = ({ children }: GraphQLProviderProps) => {
|
|
|
148
95
|
getColorsAndFrontendConfig,
|
|
149
96
|
isReady,
|
|
150
97
|
}),
|
|
151
|
-
[executeQuery, getOrgId, getColorsAndFrontendConfig, isReady]
|
|
98
|
+
[executeQuery, getOrgId, getColorsAndFrontendConfig, isReady],
|
|
152
99
|
);
|
|
153
100
|
|
|
154
|
-
return
|
|
155
|
-
<GraphQLContext.Provider value={value}>{children}</GraphQLContext.Provider>
|
|
156
|
-
);
|
|
101
|
+
return <GraphQLContext.Provider value={value}>{children}</GraphQLContext.Provider>;
|
|
157
102
|
};
|
|
158
103
|
|
|
159
104
|
export const useGraphQLClient = () => {
|
|
160
105
|
const context = useContext(GraphQLContext);
|
|
161
106
|
if (!context) {
|
|
162
|
-
throw new Error(
|
|
107
|
+
throw new Error('useGraphQLClient must be used within a GraphQLProvider');
|
|
163
108
|
}
|
|
164
109
|
return context;
|
|
165
110
|
};
|
|
@@ -1,37 +1,17 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
} from
|
|
8
|
-
import Logger from "src/application/logging/logger";
|
|
9
|
-
import { LocalStorageEventListener } from "src/application/models/localStorageEventListener";
|
|
10
|
-
|
|
11
|
-
export enum LocalStorageKeys {
|
|
12
|
-
ChatId = "v1-spiffy-chat-session-id",
|
|
13
|
-
SpiffyOnOverride = "spiffy_on",
|
|
14
|
-
EnviveOnOverride = "envive_on",
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
interface LocalStorageContextType {
|
|
18
|
-
setItem: (key: string, value: string) => void;
|
|
19
|
-
getItem: (key: string) => string | null;
|
|
20
|
-
setSpiffyOnFeatureFlag: (value: boolean | null) => void;
|
|
21
|
-
getSpiffyOnFeatureFlag: () => string | null;
|
|
22
|
-
attachListener: (listener: LocalStorageEventListener) => void;
|
|
23
|
-
detachListener: (listener: LocalStorageEventListener) => void;
|
|
24
|
-
isAvailable: boolean;
|
|
25
|
-
}
|
|
1
|
+
import React, { createContext, useContext, useCallback, useMemo, useEffect } from 'react';
|
|
2
|
+
import Logger from '../../application/logging/logger';
|
|
3
|
+
import {
|
|
4
|
+
LocalStorageContextType,
|
|
5
|
+
LocalStorageEventListener,
|
|
6
|
+
LocalStorageKeys,
|
|
7
|
+
} from '@envive-ai/types';
|
|
26
8
|
|
|
27
9
|
const LocalStorageContext = createContext<LocalStorageContextType | null>(null);
|
|
28
10
|
|
|
29
|
-
export const LocalStorageProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
30
|
-
children,
|
|
31
|
-
}) => {
|
|
11
|
+
export const LocalStorageProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
|
|
32
12
|
const isAvailable = useMemo(() => {
|
|
33
13
|
try {
|
|
34
|
-
return typeof window !==
|
|
14
|
+
return typeof window !== 'undefined' && !!window.localStorage;
|
|
35
15
|
} catch {
|
|
36
16
|
return false;
|
|
37
17
|
}
|
|
@@ -39,7 +19,7 @@ export const LocalStorageProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
39
19
|
|
|
40
20
|
useEffect(() => {
|
|
41
21
|
if (!isAvailable) {
|
|
42
|
-
Logger.logError(
|
|
22
|
+
Logger.logError('localStorage is not available', undefined);
|
|
43
23
|
}
|
|
44
24
|
}, [isAvailable]);
|
|
45
25
|
|
|
@@ -47,11 +27,9 @@ export const LocalStorageProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
47
27
|
(key: string, value: string) => {
|
|
48
28
|
if (!isAvailable) return;
|
|
49
29
|
localStorage.setItem(key, value);
|
|
50
|
-
window.dispatchEvent(
|
|
51
|
-
new StorageEvent("storage", { key, newValue: value })
|
|
52
|
-
);
|
|
30
|
+
window.dispatchEvent(new StorageEvent('storage', { key, newValue: value }));
|
|
53
31
|
},
|
|
54
|
-
[isAvailable]
|
|
32
|
+
[isAvailable],
|
|
55
33
|
);
|
|
56
34
|
|
|
57
35
|
const getItem = useCallback(
|
|
@@ -59,19 +37,19 @@ export const LocalStorageProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
59
37
|
if (!isAvailable) return null;
|
|
60
38
|
return localStorage.getItem(key);
|
|
61
39
|
},
|
|
62
|
-
[isAvailable]
|
|
40
|
+
[isAvailable],
|
|
63
41
|
);
|
|
64
42
|
|
|
65
43
|
const setSpiffyOnFeatureFlag = useCallback(
|
|
66
44
|
(value: boolean | null): void => {
|
|
67
45
|
if (!isAvailable) return;
|
|
68
46
|
if (value === true) {
|
|
69
|
-
localStorage.setItem(LocalStorageKeys.SpiffyOnOverride,
|
|
47
|
+
localStorage.setItem(LocalStorageKeys.SpiffyOnOverride, 'true');
|
|
70
48
|
} else if (value === false) {
|
|
71
|
-
localStorage.setItem(LocalStorageKeys.SpiffyOnOverride,
|
|
49
|
+
localStorage.setItem(LocalStorageKeys.SpiffyOnOverride, 'false');
|
|
72
50
|
}
|
|
73
51
|
},
|
|
74
|
-
[isAvailable]
|
|
52
|
+
[isAvailable],
|
|
75
53
|
);
|
|
76
54
|
|
|
77
55
|
const getSpiffyOnFeatureFlag = useCallback((): string | null => {
|
|
@@ -79,10 +57,7 @@ export const LocalStorageProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
79
57
|
return localStorage.getItem(LocalStorageKeys.SpiffyOnOverride);
|
|
80
58
|
}, [isAvailable]);
|
|
81
59
|
|
|
82
|
-
const listenersCache = useMemo(
|
|
83
|
-
() => new Map<string, (event: StorageEvent) => void>(),
|
|
84
|
-
[]
|
|
85
|
-
);
|
|
60
|
+
const listenersCache = useMemo(() => new Map<string, (event: StorageEvent) => void>(), []);
|
|
86
61
|
|
|
87
62
|
const listenerForKey = useCallback(
|
|
88
63
|
(listener: LocalStorageEventListener): ((event: StorageEvent) => void) => {
|
|
@@ -91,33 +66,30 @@ export const LocalStorageProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
91
66
|
if (event.key !== listener.storageKey) {
|
|
92
67
|
return;
|
|
93
68
|
}
|
|
94
|
-
Logger.logDebug(
|
|
95
|
-
`[spiffy-ai] Storage event key=${event.key}, value=`,
|
|
96
|
-
event.newValue
|
|
97
|
-
);
|
|
69
|
+
Logger.logDebug(`[spiffy-ai] Storage event key=${event.key}, value=`, event.newValue);
|
|
98
70
|
listener.listener(event);
|
|
99
71
|
};
|
|
100
72
|
listenersCache.set(listener.storageKey, handler);
|
|
101
73
|
}
|
|
102
74
|
return listenersCache.get(listener.storageKey)!;
|
|
103
75
|
},
|
|
104
|
-
[listenersCache]
|
|
76
|
+
[listenersCache],
|
|
105
77
|
);
|
|
106
78
|
|
|
107
79
|
const attachListener = useCallback(
|
|
108
80
|
(listener: LocalStorageEventListener): void => {
|
|
109
81
|
if (!isAvailable) return;
|
|
110
|
-
window.addEventListener(
|
|
82
|
+
window.addEventListener('storage', listenerForKey(listener));
|
|
111
83
|
},
|
|
112
|
-
[isAvailable, listenerForKey]
|
|
84
|
+
[isAvailable, listenerForKey],
|
|
113
85
|
);
|
|
114
86
|
|
|
115
87
|
const detachListener = useCallback(
|
|
116
88
|
(listener: LocalStorageEventListener): void => {
|
|
117
89
|
if (!isAvailable) return;
|
|
118
|
-
window.removeEventListener(
|
|
90
|
+
window.removeEventListener('storage', listenerForKey(listener));
|
|
119
91
|
},
|
|
120
|
-
[isAvailable, listenerForKey]
|
|
92
|
+
[isAvailable, listenerForKey],
|
|
121
93
|
);
|
|
122
94
|
|
|
123
95
|
const value = useMemo(
|
|
@@ -138,22 +110,16 @@ export const LocalStorageProvider: React.FC<{ children: React.ReactNode }> = ({
|
|
|
138
110
|
attachListener,
|
|
139
111
|
detachListener,
|
|
140
112
|
isAvailable,
|
|
141
|
-
]
|
|
113
|
+
],
|
|
142
114
|
);
|
|
143
115
|
|
|
144
|
-
return
|
|
145
|
-
<LocalStorageContext.Provider value={value}>
|
|
146
|
-
{children}
|
|
147
|
-
</LocalStorageContext.Provider>
|
|
148
|
-
);
|
|
116
|
+
return <LocalStorageContext.Provider value={value}>{children}</LocalStorageContext.Provider>;
|
|
149
117
|
};
|
|
150
118
|
|
|
151
119
|
export const useLocalStorage = () => {
|
|
152
120
|
const context = useContext(LocalStorageContext);
|
|
153
121
|
if (!context) {
|
|
154
|
-
throw new Error(
|
|
155
|
-
"useLocalStorage must be used within a LocalStorageProvider"
|
|
156
|
-
);
|
|
122
|
+
throw new Error('useLocalStorage must be used within a LocalStorageProvider');
|
|
157
123
|
}
|
|
158
124
|
return context;
|
|
159
125
|
};
|
|
@@ -1,28 +1,18 @@
|
|
|
1
|
-
import React, { createContext, useContext, ReactNode, useMemo } from
|
|
2
|
-
import { useAtomValue, useSetAtom } from
|
|
3
|
-
import { useColorsAndFrontendConfig } from
|
|
4
|
-
import { orgShortNameAtom } from
|
|
5
|
-
import { newOrgConfigAtom } from
|
|
6
|
-
import { OrgConfigFeatureGate } from
|
|
7
|
-
import { FeatureFlagServiceProvider } from
|
|
8
|
-
import { GraphQlConfigValues } from "../graphqlContext";
|
|
9
|
-
|
|
10
|
-
export type NewOrgConfigContextType = GraphQlConfigValues & {
|
|
11
|
-
loading: boolean;
|
|
12
|
-
error: Error | null;
|
|
13
|
-
};
|
|
1
|
+
import React, { createContext, useContext, ReactNode, useMemo } from 'react';
|
|
2
|
+
import { useAtomValue, useSetAtom } from 'jotai';
|
|
3
|
+
import { useColorsAndFrontendConfig } from 'src/hooks/GraphQLConfig/useGraphQLConfig';
|
|
4
|
+
import { orgShortNameAtom } from 'src/atoms/envive/enviveConfig';
|
|
5
|
+
import { newOrgConfigAtom } from 'src/atoms/org/newOrgConfigAtom';
|
|
6
|
+
import { NewOrgConfigContextType, OrgConfigFeatureGate } from '@envive-ai/types';
|
|
7
|
+
import { FeatureFlagServiceProvider } from '../featureFlagServiceContext';
|
|
14
8
|
|
|
15
|
-
const NewOrgConfigContext = createContext<NewOrgConfigContextType | undefined>(
|
|
16
|
-
undefined
|
|
17
|
-
);
|
|
9
|
+
const NewOrgConfigContext = createContext<NewOrgConfigContextType | undefined>(undefined);
|
|
18
10
|
|
|
19
11
|
interface NewOrgConfigProviderProps {
|
|
20
12
|
children: ReactNode;
|
|
21
13
|
}
|
|
22
14
|
|
|
23
|
-
export const NewOrgConfigProvider: React.FC<NewOrgConfigProviderProps> = ({
|
|
24
|
-
children,
|
|
25
|
-
}) => {
|
|
15
|
+
export const NewOrgConfigProvider: React.FC<NewOrgConfigProviderProps> = ({ children }) => {
|
|
26
16
|
const orgShortName = useAtomValue(orgShortNameAtom);
|
|
27
17
|
const setNewOrgConfig = useSetAtom(newOrgConfigAtom);
|
|
28
18
|
|
|
@@ -55,9 +45,7 @@ export const NewOrgConfigProvider: React.FC<NewOrgConfigProviderProps> = ({
|
|
|
55
45
|
export const useNewOrgConfigContext = () => {
|
|
56
46
|
const context = useContext(NewOrgConfigContext);
|
|
57
47
|
if (context === undefined) {
|
|
58
|
-
throw new Error(
|
|
59
|
-
"useNewOrgConfigContext must be used within a NewOrgConfigProvider"
|
|
60
|
-
);
|
|
48
|
+
throw new Error('useNewOrgConfigContext must be used within a NewOrgConfigProvider');
|
|
61
49
|
}
|
|
62
50
|
return context;
|
|
63
51
|
};
|