@envive-ai/react-hooks 0.3.1 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/application/commerce-api.cjs +6 -4
- package/dist/application/commerce-api.js +7 -5
- package/dist/application/models/api/nextMessageRequest.d.cts +3 -1
- package/dist/application/models/api/nextMessageRequest.d.ts +3 -1
- package/dist/application/models/api/response.d.cts +1 -1
- package/dist/application/models/api/response.d.ts +1 -1
- package/dist/application/models/frontendConfig.d.cts +1 -1
- package/dist/application/models/frontendConfig.d.ts +1 -1
- package/dist/application/models/guards/api/isApiFormResponse.cjs +1 -1
- package/dist/application/models/guards/api/isApiFormResponse.js +1 -1
- package/dist/application/models/guards/api/isApiFormSubmittedResponseAttributes.cjs +1 -1
- package/dist/application/models/guards/api/isApiFormSubmittedResponseAttributes.js +1 -1
- package/dist/application/models/guards/api/isApiOrderResponseAttributes.cjs +2 -2
- package/dist/application/models/guards/api/isApiOrderResponseAttributes.js +2 -2
- package/dist/application/models/guards/api/isApiProductResponseAttributes.cjs +1 -1
- package/dist/application/models/guards/api/isApiProductResponseAttributes.js +1 -1
- package/dist/application/models/guards/api/isApiResponse.cjs +1 -1
- package/dist/application/models/guards/api/isApiResponse.js +1 -1
- package/dist/application/models/guards/api/isApiSearchEventAttributes.cjs +2 -2
- package/dist/application/models/guards/api/isApiSearchEventAttributes.js +2 -2
- package/dist/application/models/message.cjs +1 -1
- package/dist/application/models/message.d.cts +1 -1
- package/dist/application/models/message.d.ts +1 -1
- package/dist/application/models/message.js +1 -1
- package/dist/application/models/validators/validateGraphQLColorsConfig.cjs +2 -1
- package/dist/application/models/validators/validateGraphQLColorsConfig.js +2 -1
- package/dist/application/models/validators/validateGraphQLFrontendConfig.cjs +1 -1
- package/dist/application/models/validators/validateGraphQLFrontendConfig.d.cts +1 -1
- package/dist/application/models/validators/validateGraphQLFrontendConfig.d.ts +1 -1
- package/dist/application/models/validators/validateGraphQLFrontendConfig.js +1 -1
- package/dist/application/models/variantInfo/variantInfo.cjs +4 -1
- package/dist/application/models/variantInfo/variantInfo.d.cts +4 -1
- package/dist/application/models/variantInfo/variantInfo.d.ts +4 -1
- package/dist/application/models/variantInfo/variantInfo.js +4 -1
- package/dist/application/utils/analyticsUtils.cjs +2 -2
- package/dist/application/utils/analyticsUtils.js +2 -2
- package/dist/application/utils/domObserver.cjs +1 -1
- package/dist/application/utils/domObserver.js +1 -1
- package/dist/application/utils/elementObserver.cjs +1 -1
- package/dist/application/utils/elementObserver.d.cts +2 -2
- package/dist/application/utils/elementObserver.d.ts +2 -2
- package/dist/application/utils/elementObserver.js +1 -1
- package/dist/application/utils/mutationHelper.cjs +2 -2
- package/dist/application/utils/mutationHelper.js +2 -2
- package/dist/application/utils/nodeSelector.cjs +5 -2
- package/dist/application/utils/nodeSelector.js +5 -2
- package/dist/application/utils/stringUtils.cjs +1 -1
- package/dist/application/utils/stringUtils.js +1 -1
- package/dist/atoms/app/index.cjs +12 -1
- package/dist/atoms/app/index.d.cts +3 -2
- package/dist/atoms/app/index.d.ts +3 -2
- package/dist/atoms/app/index.js +13 -3
- package/dist/atoms/app/variant.cjs +2 -2
- package/dist/atoms/app/variant.d.cts +69 -5
- package/dist/atoms/app/variant.d.ts +69 -5
- package/dist/atoms/app/variant.js +2 -2
- package/dist/atoms/chat/chatState.d.cts +15 -15
- package/dist/atoms/chat/chatState.d.ts +15 -15
- package/dist/atoms/chat/form.d.cts +2 -2
- package/dist/atoms/chat/form.d.ts +2 -2
- package/dist/atoms/chat/index.cjs +1 -1
- package/dist/atoms/chat/index.d.cts +2 -2
- package/dist/atoms/chat/index.d.ts +3 -3
- package/dist/atoms/chat/index.js +1 -1
- package/dist/atoms/chat/lastMessage.d.cts +2 -2
- package/dist/atoms/chat/lastMessage.d.ts +2 -2
- package/dist/atoms/chat/messageQueue.cjs +1 -35
- package/dist/atoms/chat/messageQueue.js +2 -34
- package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
- package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
- package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
- package/dist/atoms/chat/replies.cjs +2 -2
- package/dist/atoms/chat/replies.d.cts +2 -2
- package/dist/atoms/chat/replies.d.ts +2 -2
- package/dist/atoms/chat/replies.js +2 -2
- package/dist/atoms/chat/suggestions.d.cts +2 -2
- package/dist/atoms/chat/suggestions.d.ts +2 -2
- package/dist/atoms/globalSearch/globalSearch.d.cts +6 -6
- package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
- package/dist/atoms/org/customerService.d.cts +7 -7
- package/dist/atoms/org/customerService.d.ts +6 -6
- package/dist/atoms/org/graphqlConfig.cjs +1 -1
- package/dist/atoms/org/graphqlConfig.d.cts +5 -5
- package/dist/atoms/org/graphqlConfig.d.ts +5 -5
- package/dist/atoms/org/graphqlConfig.js +1 -1
- package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
- package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
- package/dist/atoms/org/orgAnalyticsConfig.cjs +1 -1
- package/dist/atoms/org/orgAnalyticsConfig.d.cts +6 -6
- package/dist/atoms/org/orgAnalyticsConfig.d.ts +6 -6
- package/dist/atoms/org/orgAnalyticsConfig.js +1 -1
- package/dist/atoms/search/chatSearch.d.cts +17 -17
- package/dist/atoms/search/chatSearch.d.ts +17 -17
- package/dist/atoms/search/searchAPI.cjs +2 -2
- package/dist/atoms/search/searchAPI.d.cts +14 -14
- package/dist/atoms/search/searchAPI.d.ts +14 -14
- package/dist/atoms/search/searchAPI.js +2 -2
- package/dist/atoms/search/searchServiceAdapter.cjs +1 -1
- package/dist/atoms/search/searchServiceAdapter.js +1 -1
- package/dist/atoms/search/types.d.cts +1 -1
- package/dist/atoms/search/types.d.ts +1 -1
- package/dist/atoms/search/utils.d.cts +1 -1
- package/dist/atoms/search/utils.d.ts +1 -1
- package/dist/contexts/amplitudeContext/amplitudeContext.cjs +2 -2
- package/dist/contexts/amplitudeContext/amplitudeContext.js +2 -2
- package/dist/contexts/cdnContext/cdnContext.cjs +1 -1
- package/dist/contexts/cdnContext/cdnContext.js +1 -1
- package/dist/contexts/enviveConfigContext/enviveConfigContext.cjs +2 -3
- package/dist/contexts/enviveConfigContext/enviveConfigContext.js +2 -3
- package/dist/contexts/enviveContext/enviveContext.cjs +56 -0
- package/dist/contexts/enviveContext/enviveContext.d.cts +31 -0
- package/dist/contexts/enviveContext/enviveContext.d.ts +31 -0
- package/dist/contexts/enviveContext/enviveContext.js +55 -0
- package/dist/contexts/enviveContext/index.cjs +5 -0
- package/dist/contexts/enviveContext/index.d.cts +3 -0
- package/dist/contexts/enviveContext/index.d.ts +3 -0
- package/dist/contexts/enviveContext/index.js +4 -0
- package/dist/contexts/enviveContext/types.cjs +11 -0
- package/dist/contexts/enviveContext/types.d.cts +8 -0
- package/dist/contexts/enviveContext/types.d.ts +8 -0
- package/dist/contexts/enviveContext/types.js +10 -0
- package/dist/contexts/featureFlagContext/featureFlagContext.cjs +2 -2
- package/dist/contexts/featureFlagContext/featureFlagContext.js +2 -2
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.cjs +2 -2
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.js +2 -2
- package/dist/contexts/graphqlContext/graphqlContext.cjs +2 -2
- package/dist/contexts/graphqlContext/graphqlContext.js +2 -2
- package/dist/contexts/hardcopyContext/hardcopyContext.cjs +62 -0
- package/dist/contexts/hardcopyContext/hardcopyContext.d.cts +23 -0
- package/dist/contexts/hardcopyContext/hardcopyContext.d.ts +23 -0
- package/dist/contexts/hardcopyContext/hardcopyContext.js +60 -0
- package/dist/contexts/hardcopyContext/index.cjs +4 -0
- package/dist/contexts/hardcopyContext/index.d.cts +2 -0
- package/dist/contexts/hardcopyContext/index.d.ts +2 -0
- package/dist/contexts/hardcopyContext/index.js +3 -0
- package/dist/contexts/localStorageContext/localStorageContext.cjs +1 -1
- package/dist/contexts/localStorageContext/localStorageContext.js +1 -1
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.cjs +1 -1
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.js +1 -1
- package/dist/contexts/pageContext/index.cjs +6 -0
- package/dist/contexts/pageContext/index.d.cts +3 -0
- package/dist/contexts/pageContext/index.d.ts +3 -0
- package/dist/contexts/pageContext/index.js +4 -0
- package/dist/contexts/pageContext/mapping.cjs +25 -0
- package/dist/contexts/pageContext/mapping.d.cts +8 -0
- package/dist/contexts/pageContext/mapping.d.ts +8 -0
- package/dist/contexts/pageContext/mapping.js +25 -0
- package/dist/contexts/pageContext/pageContext.cjs +66 -0
- package/dist/contexts/pageContext/pageContext.d.cts +11 -0
- package/dist/contexts/pageContext/pageContext.d.ts +11 -0
- package/dist/contexts/pageContext/pageContext.js +64 -0
- package/dist/contexts/pageContext/types.cjs +0 -0
- package/dist/contexts/pageContext/types.d.cts +27 -0
- package/dist/contexts/pageContext/types.d.ts +27 -0
- package/dist/contexts/pageContext/types.js +1 -0
- package/dist/contexts/salesAgentContext/chatAPI.cjs +45 -0
- package/dist/contexts/salesAgentContext/chatAPI.d.cts +35 -0
- package/dist/contexts/salesAgentContext/chatAPI.d.ts +35 -0
- package/dist/contexts/salesAgentContext/chatAPI.js +44 -0
- package/dist/contexts/salesAgentContext/index.cjs +20 -0
- package/dist/contexts/salesAgentContext/index.d.cts +4 -0
- package/dist/contexts/salesAgentContext/index.d.ts +4 -0
- package/dist/contexts/salesAgentContext/index.js +5 -0
- package/dist/contexts/salesAgentContext/salesAgentContext.cjs +90 -0
- package/dist/contexts/salesAgentContext/salesAgentContext.d.cts +22 -0
- package/dist/contexts/salesAgentContext/salesAgentContext.d.ts +22 -0
- package/dist/contexts/salesAgentContext/salesAgentContext.js +88 -0
- package/dist/contexts/salesAgentContext/salesAgentService.cjs +99 -0
- package/dist/contexts/salesAgentContext/salesAgentService.js +98 -0
- package/dist/contexts/searchContext/searchContext.cjs +2 -2
- package/dist/contexts/searchContext/searchContext.js +2 -2
- package/dist/contexts/sessionStorageContext/sessionStorageContext.cjs +1 -1
- package/dist/contexts/sessionStorageContext/sessionStorageContext.js +1 -1
- package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
- package/dist/contexts/types.cjs +11 -1
- package/dist/contexts/types.d.cts +10 -2
- package/dist/contexts/types.d.ts +10 -2
- package/dist/contexts/types.js +11 -2
- package/dist/contexts/userIdentityContext/userIdentityContext.cjs +2 -2
- package/dist/contexts/userIdentityContext/userIdentityContext.js +2 -2
- package/dist/events/index.cjs +2 -4
- package/dist/events/index.js +2 -4
- package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.cjs +1 -1
- package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.js +1 -1
- package/dist/hooks/Debounce/useDebounce.cjs +1 -1
- package/dist/hooks/Debounce/useDebounce.js +1 -1
- package/dist/hooks/ElementObserver/useElementObserver.cjs +2 -2
- package/dist/hooks/ElementObserver/useElementObserver.js +2 -2
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.ts +2 -2
- package/dist/hooks/GraphQLConfig/useGraphQLConfig.cjs +9 -3
- package/dist/hooks/GraphQLConfig/useGraphQLConfig.js +9 -3
- package/dist/hooks/IdentifyUser/useIdentifyUser.cjs +1 -1
- package/dist/hooks/IdentifyUser/useIdentifyUser.js +1 -1
- package/dist/hooks/ImageResolver/useImageResolver.cjs +1 -1
- package/dist/hooks/ImageResolver/useImageResolver.js +1 -1
- package/dist/hooks/IsSmallScreen/useIsSmallScreen.cjs +1 -1
- package/dist/hooks/IsSmallScreen/useIsSmallScreen.js +1 -1
- package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.cjs +11 -3
- package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.js +11 -3
- package/dist/hooks/Search/useRecommendedProducts.cjs +1 -1
- package/dist/hooks/Search/useRecommendedProducts.js +1 -1
- package/dist/hooks/Search/useSearch.cjs +2 -2
- package/dist/hooks/Search/useSearch.js +2 -2
- package/dist/hooks/Search/useSearchInput.cjs +1 -1
- package/dist/hooks/Search/useSearchInput.js +1 -1
- package/dist/hooks/SearchOperations/useSearchOperations.cjs +1 -1
- package/dist/hooks/SearchOperations/useSearchOperations.d.cts +1 -1
- package/dist/hooks/SearchOperations/useSearchOperations.d.ts +1 -1
- package/dist/hooks/SearchOperations/useSearchOperations.js +1 -1
- package/dist/hooks/SessionStorageOperations/useSessionStorageOperations.cjs +1 -1
- package/dist/hooks/SessionStorageOperations/useSessionStorageOperations.js +1 -1
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.cjs +1 -1
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.js +1 -1
- package/dist/hooks/utils.cjs +3 -3
- package/dist/hooks/utils.d.cts +1 -1
- package/dist/hooks/utils.d.ts +1 -1
- package/dist/hooks/utils.js +3 -3
- package/package.json +29 -6
- package/src/application/commerce-api.ts +12 -10
- package/src/application/models/api/nextMessageRequest.ts +2 -0
- package/src/application/models/api/response.ts +4 -4
- package/src/application/models/api/search.ts +1 -2
- package/src/application/models/api/userEvent.ts +1 -2
- package/src/application/models/frontendConfig.ts +2 -2
- package/src/application/models/guards/api/isApiOrderResponseAttributes.ts +8 -4
- package/src/application/models/guards/api/isApiSearchEventAttributes.ts +1 -1
- package/src/application/models/index.ts +1 -0
- package/src/application/models/message.ts +5 -5
- package/src/application/models/utilityTypes/delimiterCase.ts +1 -0
- package/src/application/models/validators/validateGraphQLColorsConfig.ts +2 -1
- package/src/application/models/validators/validateGraphQLFrontendConfig.ts +1 -1
- package/src/application/models/variantInfo/variantInfo.ts +3 -0
- package/src/application/utils/analyticsUtils.ts +3 -3
- package/src/application/utils/domObserver.ts +1 -0
- package/src/application/utils/elementObserver.ts +1 -0
- package/src/application/utils/mutationHelper.ts +3 -1
- package/src/application/utils/nodeSelector.ts +7 -1
- package/src/application/utils/stringUtils.ts +1 -0
- package/src/atoms/app/index.ts +17 -6
- package/src/atoms/app/variant.ts +11 -13
- package/src/atoms/chat/__tests__/messageQueue.test.spec.ts +61 -0
- package/src/atoms/chat/index.ts +8 -8
- package/src/atoms/chat/messageQueue.ts +2 -48
- package/src/atoms/chat/replies.ts +3 -3
- package/src/atoms/org/graphqlConfig.ts +0 -1
- package/src/atoms/org/orgAnalyticsConfig.ts +1 -1
- package/src/atoms/search/searchAPI.ts +1 -1
- package/src/atoms/search/searchServiceAdapter.ts +1 -1
- package/src/contexts/amplitudeContext/__tests__/amplitudeContext.test.tsx +4 -3
- package/src/contexts/amplitudeContext/amplitudeContext.tsx +5 -5
- package/src/contexts/cdnContext/cdnContext.tsx +1 -1
- package/src/contexts/enviveConfigContext/__tests__/enviveConfigContext.test.tsx +2 -3
- package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +3 -3
- package/src/contexts/enviveContext/enviveContext.tsx +89 -0
- package/src/contexts/enviveContext/index.ts +2 -0
- package/src/contexts/enviveContext/types.ts +4 -0
- package/src/contexts/featureFlagContext/featureFlagContext.tsx +1 -1
- package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +1 -1
- package/src/contexts/graphqlContext/__tests__/graphqlContext.test.tsx +7 -5
- package/src/contexts/graphqlContext/graphqlContext.tsx +1 -5
- package/src/contexts/hardcopyContext/hardcopyContext.tsx +70 -0
- package/src/contexts/hardcopyContext/index.ts +1 -0
- package/src/contexts/localStorageContext/__tests__/localStorageContext.test.tsx +9 -3
- package/src/contexts/localStorageContext/localStorageContext.tsx +1 -1
- package/src/contexts/newOrgConfigContext/__tests__/newOrgConfigContext.test.tsx +2 -3
- package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +1 -1
- package/src/contexts/pageContext/__tests__/pageContext.test.tsx +666 -0
- package/src/contexts/pageContext/index.ts +2 -0
- package/src/contexts/pageContext/mapping.ts +38 -0
- package/src/contexts/pageContext/pageContext.tsx +78 -0
- package/src/contexts/pageContext/types.ts +27 -0
- package/src/contexts/salesAgentContext/chatAPI.ts +75 -0
- package/src/contexts/salesAgentContext/index.ts +3 -0
- package/src/contexts/salesAgentContext/salesAgentContext.tsx +128 -0
- package/src/contexts/salesAgentContext/salesAgentService.ts +197 -0
- package/src/contexts/searchContext/__tests__/searchContext.test.tsx +14 -15
- package/src/contexts/searchContext/searchContext.tsx +1 -1
- package/src/contexts/sessionStorageContext/sessionStorageContext.tsx +1 -1
- package/src/contexts/systemSettingsContext/__tests__/systemSettingsContext.test.tsx +7 -6
- package/src/contexts/types.ts +20 -22
- package/src/contexts/userIdentityContext/__tests__/userIdentityContext.test.tsx +3 -8
- package/src/contexts/userIdentityContext/userIdentityContext.tsx +1 -1
- package/src/events/index.ts +5 -7
- package/src/hooks/AmplitudeOperations/useAmplitudeOperations.ts +1 -1
- package/src/hooks/Debounce/useDebounce.ts +1 -1
- package/src/hooks/ElementObserver/useElementObserver.ts +2 -1
- package/src/hooks/GraphQLConfig/useGraphQLConfig.ts +4 -2
- package/src/hooks/IdentifyUser/useIdentifyUser.ts +1 -1
- package/src/hooks/ImageResolver/useImageResolver.ts +2 -0
- package/src/hooks/IsSmallScreen/useIsSmallScreen.ts +1 -1
- package/src/hooks/LocalStorageOperations/useLocalStorageOperations.ts +20 -4
- package/src/hooks/Search/__tests__/useSearch.test.tsx +15 -10
- package/src/hooks/Search/useRecommendedProducts.ts +2 -2
- package/src/hooks/Search/useSearchInput.ts +1 -1
- package/src/hooks/SearchOperations/useSearchOperations.ts +2 -2
- package/src/hooks/SessionStorageOperations/useSessionStorageOperations.ts +1 -1
- package/src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts +2 -2
- package/src/hooks/utils.ts +3 -2
- package/dist/contexts/chatContext/chatContext.cjs +0 -306
- package/dist/contexts/chatContext/chatContext.d.cts +0 -15
- package/dist/contexts/chatContext/chatContext.d.ts +0 -15
- package/dist/contexts/chatContext/chatContext.js +0 -304
- package/dist/contexts/chatContext/index.cjs +0 -4
- package/dist/contexts/chatContext/index.d.cts +0 -2
- package/dist/contexts/chatContext/index.d.ts +0 -2
- package/dist/contexts/chatContext/index.js +0 -3
- package/src/contexts/chatContext/chatContext.tsx +0 -463
- package/src/contexts/chatContext/index.ts +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { createContext,
|
|
1
|
+
import React, { createContext, useCallback, useContext, useMemo } from 'react';
|
|
2
2
|
import Logger from 'src/application/logging/logger';
|
|
3
3
|
import { StatsigFeatureGate } from '@spiffy-ai/commerce-api-client';
|
|
4
4
|
import { FeatureGates } from 'src/application/models/featureGates';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { createContext, useContext, useMemo
|
|
1
|
+
import React, { ReactNode, createContext, useContext, useMemo } from 'react';
|
|
2
2
|
import { OrgConfigFeatureGate } from 'src/application/models/api/orgConfigResults';
|
|
3
3
|
import { FeatureGates } from 'src/application/models/featureGates';
|
|
4
4
|
import Logger from 'src/application/logging/logger';
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { render, screen, waitFor
|
|
3
|
-
import { Provider } from 'jotai';
|
|
4
|
-
import { useAtomValue } from 'jotai';
|
|
5
|
-
import { GraphQLProvider, useGraphQLClient } from '../graphqlContext';
|
|
2
|
+
import { act, render, screen, waitFor } from '@testing-library/react';
|
|
3
|
+
import { Provider, useAtomValue } from 'jotai';
|
|
6
4
|
import { EnviveConfigProvider } from 'src/contexts/enviveConfigContext/enviveConfigContext';
|
|
7
|
-
import {
|
|
5
|
+
import { baseUrlAtom, orgLevelApiKeyAtom } from 'src/atoms/envive/enviveConfig';
|
|
8
6
|
import Logger from 'src/application/logging/logger';
|
|
9
7
|
import { getMerchantOrgIdQuery } from 'src/application/models/graphql/queries/getMerchantOrgIdQuery';
|
|
8
|
+
import { GraphQLProvider, useGraphQLClient } from '../graphqlContext';
|
|
10
9
|
|
|
11
10
|
// Mock the Logger to avoid console output in tests
|
|
12
11
|
vi.spyOn(Logger, 'logDebug').mockImplementation(() => {});
|
|
@@ -25,6 +24,7 @@ const MockGraphQLComponent: React.FC = () => {
|
|
|
25
24
|
<div data-testid="is-ready">{client.isReady.toString()}</div>
|
|
26
25
|
<button
|
|
27
26
|
data-testid="execute-query-btn"
|
|
27
|
+
type="button"
|
|
28
28
|
onClick={async () => {
|
|
29
29
|
try {
|
|
30
30
|
const result = await client.executeQuery('query { test }');
|
|
@@ -38,6 +38,7 @@ const MockGraphQLComponent: React.FC = () => {
|
|
|
38
38
|
</button>
|
|
39
39
|
<button
|
|
40
40
|
data-testid="get-org-id-btn"
|
|
41
|
+
type="button"
|
|
41
42
|
onClick={async () => {
|
|
42
43
|
try {
|
|
43
44
|
const orgId = await client.getOrgId();
|
|
@@ -51,6 +52,7 @@ const MockGraphQLComponent: React.FC = () => {
|
|
|
51
52
|
</button>
|
|
52
53
|
<button
|
|
53
54
|
data-testid="get-config-btn"
|
|
55
|
+
type="button"
|
|
54
56
|
onClick={async () => {
|
|
55
57
|
try {
|
|
56
58
|
const config = await client.getColorsAndFrontendConfig();
|
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { ReactNode, createContext, useCallback, useContext, useMemo } from 'react';
|
|
2
2
|
import { useAtomValue } from 'jotai';
|
|
3
3
|
import { baseUrlAtom, orgLevelApiKeyAtom } from 'src/atoms/envive/enviveConfig';
|
|
4
4
|
import { getMerchantOrgIdQuery } from 'src/application/models/graphql/queries/getMerchantOrgIdQuery';
|
|
5
5
|
import { validateGraphQLOrgId } from 'src/application/models/validators/validateGraphQLOrgId';
|
|
6
6
|
import {
|
|
7
|
-
getMerchantColorsQuery,
|
|
8
7
|
GetMerchantColorsQueryData,
|
|
9
|
-
getMerchantFrontendConfigQuery,
|
|
10
8
|
GetMerchantFrontendConfigQueryData,
|
|
11
9
|
} from 'src/application/models/graphql';
|
|
12
|
-
import { validateGraphQLColorsConfig } from 'src/application/models/validators/validateGraphQLColorsConfig';
|
|
13
|
-
import { validateGraphQLFrontendConfig } from 'src/application/models/validators/validateGraphQLFrontendConfig';
|
|
14
10
|
import { ColorMapping } from 'src/application/models/colorsConfig';
|
|
15
11
|
import { FrontendConfig } from 'src/application/models/frontendConfig';
|
|
16
12
|
import Logger from 'src/application/logging/logger';
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { UserEvent } from '@spiffy-ai/commerce-api-client';
|
|
2
|
+
import { ReactNode, createContext, useCallback, useContext, useMemo } from 'react';
|
|
3
|
+
import Logger from 'src/application/logging/logger';
|
|
4
|
+
import { WidgetTypeV3 } from '../types';
|
|
5
|
+
|
|
6
|
+
interface HardcopyRequest {
|
|
7
|
+
widgetType: WidgetTypeV3;
|
|
8
|
+
userEvent: UserEvent;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export type HardcopyResponse = {
|
|
12
|
+
language: string;
|
|
13
|
+
values: Record<string, string | string[]>;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
interface HardcopyContextType {
|
|
17
|
+
getHardcopy: (HardcopyRequest: HardcopyRequest) => Promise<HardcopyResponse>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// These are just sample responses for the sake of testing.
|
|
21
|
+
// As we start to build the actual widgets we should determine what the actual
|
|
22
|
+
// values and their names should be.
|
|
23
|
+
const MOCK_HARDCOPY_RESPONSE: Partial<Record<WidgetTypeV3, HardcopyResponse>> = {
|
|
24
|
+
[WidgetTypeV3.SuggestionBarV3]: {
|
|
25
|
+
language: 'en',
|
|
26
|
+
values: {
|
|
27
|
+
suggestionBarButtons: ['Button 1', 'Button 2', 'Button 3'],
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
[WidgetTypeV3.ChatPreviewV3]: {
|
|
31
|
+
language: 'en',
|
|
32
|
+
values: {
|
|
33
|
+
chatPreviewTitle: 'Chat Preview Title',
|
|
34
|
+
typewriterTextPrefix: 'Want to know',
|
|
35
|
+
typewriterTexts: ['more about this product?', 'what others are saying?', 'how to use it?'],
|
|
36
|
+
suggestionButtons: ['Button 1', 'Button 2', 'Button 3'],
|
|
37
|
+
footerText: 'Ask me anything...',
|
|
38
|
+
|
|
39
|
+
chatPreviewDescription: 'Chat Preview Description',
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const HardcopyContext = createContext<HardcopyContextType | undefined>(undefined);
|
|
45
|
+
|
|
46
|
+
export const HardcopyProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
|
|
47
|
+
const languages = useMemo(() => navigator.languages, []);
|
|
48
|
+
|
|
49
|
+
const getHardcopy = useCallback(async (request: HardcopyRequest): Promise<HardcopyResponse> => {
|
|
50
|
+
Logger.logInfo('hardcopyContext | retrieving hardcopy', languages);
|
|
51
|
+
const response = MOCK_HARDCOPY_RESPONSE[request.widgetType];
|
|
52
|
+
Logger.logInfo('hardcopyContext | returning hardcopy response', response);
|
|
53
|
+
if (!response) {
|
|
54
|
+
throw new Error(`No hardcopy response found for widget type: ${request.widgetType}`);
|
|
55
|
+
}
|
|
56
|
+
return response;
|
|
57
|
+
}, []);
|
|
58
|
+
|
|
59
|
+
const value = useMemo(() => ({ getHardcopy }), [getHardcopy]);
|
|
60
|
+
|
|
61
|
+
return <HardcopyContext.Provider value={value}>{children}</HardcopyContext.Provider>;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export const useHardcopy = () => {
|
|
65
|
+
const context = useContext(HardcopyContext);
|
|
66
|
+
if (!context) {
|
|
67
|
+
throw new Error('useHardcopy must be used within a HardcopyProvider');
|
|
68
|
+
}
|
|
69
|
+
return context;
|
|
70
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './hardcopyContext';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { render, screen, waitFor
|
|
3
|
-
import { LocalStorageProvider, useLocalStorage, LocalStorageKeys } from '../localStorageContext';
|
|
2
|
+
import { act, render, screen, waitFor } from '@testing-library/react';
|
|
4
3
|
import Logger from 'src/application/logging/logger';
|
|
5
4
|
import { LocalStorageEventListener } from 'src/application/models/localStorageEventListener';
|
|
5
|
+
import { LocalStorageKeys, LocalStorageProvider, useLocalStorage } from '../localStorageContext';
|
|
6
6
|
|
|
7
7
|
// Mock the Logger to avoid console output in tests
|
|
8
8
|
vi.spyOn(Logger, 'logDebug').mockImplementation(() => {});
|
|
@@ -56,6 +56,7 @@ const MockLocalStorageComponent: React.FC = () => {
|
|
|
56
56
|
<div data-testid="event-received">{eventReceived.toString()}</div>
|
|
57
57
|
<button
|
|
58
58
|
data-testid="set-item-btn"
|
|
59
|
+
type="button"
|
|
59
60
|
onClick={() => {
|
|
60
61
|
setItem('test-key', 'test-value');
|
|
61
62
|
setTestValue(getItem('test-key'));
|
|
@@ -65,6 +66,7 @@ const MockLocalStorageComponent: React.FC = () => {
|
|
|
65
66
|
</button>
|
|
66
67
|
<button
|
|
67
68
|
data-testid="set-spiffy-on-true-btn"
|
|
69
|
+
type="button"
|
|
68
70
|
onClick={() => {
|
|
69
71
|
setSpiffyOnFeatureFlag(true);
|
|
70
72
|
setSpiffyOnValue(getSpiffyOnFeatureFlag());
|
|
@@ -74,6 +76,7 @@ const MockLocalStorageComponent: React.FC = () => {
|
|
|
74
76
|
</button>
|
|
75
77
|
<button
|
|
76
78
|
data-testid="set-spiffy-on-false-btn"
|
|
79
|
+
type="button"
|
|
77
80
|
onClick={() => {
|
|
78
81
|
setSpiffyOnFeatureFlag(false);
|
|
79
82
|
setSpiffyOnValue(getSpiffyOnFeatureFlag());
|
|
@@ -83,6 +86,7 @@ const MockLocalStorageComponent: React.FC = () => {
|
|
|
83
86
|
</button>
|
|
84
87
|
<button
|
|
85
88
|
data-testid="trigger-event-btn"
|
|
89
|
+
type="button"
|
|
86
90
|
onClick={() => {
|
|
87
91
|
setItem('test-listener-key', 'event-value');
|
|
88
92
|
}}
|
|
@@ -479,7 +483,9 @@ describe('LocalStorageProvider', () => {
|
|
|
479
483
|
});
|
|
480
484
|
|
|
481
485
|
// Wait a bit to ensure listener is attached
|
|
482
|
-
await new Promise(resolve =>
|
|
486
|
+
await new Promise(resolve => {
|
|
487
|
+
setTimeout(resolve, 50);
|
|
488
|
+
});
|
|
483
489
|
|
|
484
490
|
await act(async () => {
|
|
485
491
|
screen.getByTestId('trigger-event-btn').click();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { createContext, useContext,
|
|
1
|
+
import React, { createContext, useCallback, useContext, useEffect, useMemo } from 'react';
|
|
2
2
|
import Logger from 'src/application/logging/logger';
|
|
3
3
|
import { LocalStorageEventListener } from 'src/application/models/localStorageEventListener';
|
|
4
4
|
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { render, screen, waitFor } from '@testing-library/react';
|
|
3
|
-
import { Provider } from 'jotai';
|
|
4
|
-
import { useAtomValue } from 'jotai';
|
|
5
|
-
import { NewOrgConfigProvider, useNewOrgConfigContext } from '../newOrgConfigContext';
|
|
3
|
+
import { Provider, useAtomValue } from 'jotai';
|
|
6
4
|
import { EnviveConfigProvider } from 'src/contexts/enviveConfigContext/enviveConfigContext';
|
|
7
5
|
import { GraphQLProvider } from 'src/contexts/graphqlContext/graphqlContext';
|
|
8
6
|
import { LocalStorageProvider } from 'src/contexts/localStorageContext/localStorageContext';
|
|
9
7
|
import { newOrgConfigAtom } from 'src/atoms/org/newOrgConfigAtom';
|
|
10
8
|
import { orgShortNameAtom } from 'src/atoms/envive/enviveConfig';
|
|
11
9
|
import { useColorsAndFrontendConfig } from 'src/hooks/GraphQLConfig/useGraphQLConfig';
|
|
10
|
+
import { NewOrgConfigProvider, useNewOrgConfigContext } from '../newOrgConfigContext';
|
|
12
11
|
|
|
13
12
|
// Mock the useColorsAndFrontendConfig hook
|
|
14
13
|
vi.mock('src/hooks/GraphQLConfig/useGraphQLConfig', () => ({
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { createContext, useContext,
|
|
1
|
+
import React, { ReactNode, createContext, useContext, useMemo } from 'react';
|
|
2
2
|
import { useAtomValue, useSetAtom } from 'jotai';
|
|
3
3
|
import { useColorsAndFrontendConfig } from 'src/hooks/GraphQLConfig/useGraphQLConfig';
|
|
4
4
|
import { orgShortNameAtom } from 'src/atoms/envive/enviveConfig';
|