@envive-ai/react-hooks 0.3.32 → 0.3.33
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.d.cts +1 -1
- package/dist/application/commerce-api.d.ts +1 -1
- package/dist/atoms/app/index.d.cts +9 -9
- package/dist/atoms/app/index.d.ts +9 -9
- package/dist/atoms/app/variant.d.cts +8 -8
- package/dist/atoms/app/variant.d.ts +8 -8
- package/dist/atoms/chat/chatState.d.cts +20 -20
- package/dist/atoms/chat/chatState.d.ts +20 -20
- 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 +3 -3
- package/dist/atoms/chat/index.d.ts +2 -2
- package/dist/atoms/chat/index.js +1 -1
- package/dist/atoms/chat/lastMessage.d.ts +2 -2
- package/dist/atoms/chat/messageQueue.d.cts +6 -6
- package/dist/atoms/chat/messageQueue.d.ts +6 -6
- package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
- package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
- package/dist/atoms/chat/renderedWidgetRefs.d.ts +3 -3
- package/dist/atoms/chat/replies.d.ts +3 -3
- package/dist/atoms/chat/suggestions.d.cts +2 -2
- package/dist/atoms/chat/suggestions.d.ts +2 -2
- package/dist/atoms/envive/enviveConfig.d.cts +13 -13
- package/dist/atoms/envive/enviveConfig.d.ts +13 -13
- package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
- package/dist/atoms/globalSearch/globalSearch.d.ts +6 -6
- package/dist/atoms/org/customerService.d.cts +6 -6
- package/dist/atoms/org/customerService.d.ts +6 -6
- package/dist/atoms/org/graphqlConfig.d.cts +5 -5
- package/dist/atoms/org/graphqlConfig.d.ts +5 -5
- package/dist/atoms/org/index.cjs +2 -3
- package/dist/atoms/org/index.d.cts +2 -2
- package/dist/atoms/org/index.d.ts +2 -2
- package/dist/atoms/org/index.js +3 -3
- 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 -3
- package/dist/atoms/org/orgAnalyticsConfig.d.cts +7 -8
- package/dist/atoms/org/orgAnalyticsConfig.d.ts +7 -8
- package/dist/atoms/org/orgAnalyticsConfig.js +2 -3
- package/dist/atoms/search/chatSearch.cjs +1 -1
- package/dist/atoms/search/chatSearch.d.cts +17 -17
- package/dist/atoms/search/chatSearch.d.ts +17 -17
- package/dist/atoms/search/chatSearch.js +1 -1
- package/dist/atoms/search/searchAPI.cjs +1 -1
- package/dist/atoms/search/searchAPI.d.cts +13 -13
- package/dist/atoms/search/searchAPI.d.ts +13 -13
- package/dist/atoms/search/searchAPI.js +1 -1
- package/dist/atoms/widget/chatPreviewLoading.d.ts +2 -2
- package/dist/contexts/amplitudeContext/amplitudeContext.cjs +1 -5
- package/dist/contexts/amplitudeContext/amplitudeContext.js +1 -5
- package/dist/contexts/enviveConfigContext/enviveConfigContext.cjs +18 -23
- package/dist/contexts/enviveConfigContext/enviveConfigContext.d.cts +10 -12
- package/dist/contexts/enviveConfigContext/enviveConfigContext.d.ts +10 -12
- package/dist/contexts/enviveConfigContext/enviveConfigContext.js +18 -23
- package/dist/contexts/enviveContext/enviveContext.cjs +41 -74
- package/dist/contexts/enviveContext/enviveContext.d.cts +15 -32
- package/dist/contexts/enviveContext/enviveContext.d.ts +15 -32
- package/dist/contexts/enviveContext/enviveContext.js +41 -74
- package/dist/contexts/enviveContext/index.d.cts +2 -2
- package/dist/contexts/enviveContext/index.d.ts +2 -2
- package/dist/contexts/enviveCssContext/enviveCssContext.cjs +31 -16
- package/dist/contexts/enviveCssContext/enviveCssContext.js +31 -16
- package/dist/contexts/graphqlContext/graphqlContext.cjs +3 -212
- package/dist/contexts/graphqlContext/graphqlContext.d.cts +2 -10
- package/dist/contexts/graphqlContext/graphqlContext.d.ts +2 -10
- package/dist/contexts/graphqlContext/graphqlContext.js +3 -212
- package/dist/contexts/graphqlContext/mockV3Config.cjs +31 -16
- package/dist/contexts/graphqlContext/mockV3Config.js +31 -16
- package/dist/contexts/hardcopyContext/hardcopyContext.cjs +9 -238
- package/dist/contexts/hardcopyContext/hardcopyContext.d.cts +5 -17
- package/dist/contexts/hardcopyContext/hardcopyContext.d.ts +5 -17
- package/dist/contexts/hardcopyContext/hardcopyContext.js +9 -238
- package/dist/contexts/hardcopyContext/index.d.cts +3 -2
- package/dist/contexts/hardcopyContext/index.d.ts +3 -2
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.cjs +10 -32
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.d.cts +2 -2
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.d.ts +2 -2
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.js +12 -34
- package/dist/contexts/pageContext/mapping.d.cts +1 -1
- package/dist/contexts/pageContext/mapping.d.ts +1 -1
- package/dist/contexts/pageContext/types.d.cts +1 -1
- package/dist/contexts/salesAgentContext/chatAPI.cjs +2 -2
- package/dist/contexts/salesAgentContext/chatAPI.js +2 -2
- package/dist/contexts/salesAgentContext/salesAgentService.cjs +1 -1
- package/dist/contexts/salesAgentContext/salesAgentService.js +1 -1
- package/dist/contexts/searchContext/searchContext.cjs +1 -1
- package/dist/contexts/searchContext/searchContext.js +1 -1
- package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
- package/dist/contexts/types.d.cts +2 -2
- package/dist/contexts/types.d.ts +2 -2
- package/dist/contexts/typesV3.cjs +31 -16
- package/dist/contexts/typesV3.d.cts +62 -31
- package/dist/contexts/typesV3.d.ts +62 -31
- package/dist/contexts/typesV3.js +31 -16
- package/dist/contexts/userIdentityContext/userIdentityContext.cjs +1 -1
- package/dist/contexts/userIdentityContext/userIdentityContext.d.cts +3 -3
- package/dist/contexts/userIdentityContext/userIdentityContext.d.ts +3 -3
- package/dist/contexts/userIdentityContext/userIdentityContext.js +1 -1
- package/dist/hooks/ChatToggle/useChatToggle.cjs +1 -1
- package/dist/hooks/ChatToggle/useChatToggle.js +1 -1
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
- package/dist/hooks/GraphQLConfig/index.cjs +0 -1
- package/dist/hooks/GraphQLConfig/index.d.cts +2 -2
- package/dist/hooks/GraphQLConfig/index.d.ts +2 -2
- package/dist/hooks/GraphQLConfig/index.js +2 -2
- package/dist/hooks/GraphQLConfig/useGraphQLConfig.cjs +7 -66
- package/dist/hooks/GraphQLConfig/useGraphQLConfig.d.cts +5 -13
- package/dist/hooks/GraphQLConfig/useGraphQLConfig.d.ts +5 -13
- package/dist/hooks/GraphQLConfig/useGraphQLConfig.js +8 -66
- package/dist/hooks/Search/useSearch.cjs +3 -3
- package/dist/hooks/Search/useSearch.js +3 -3
- package/dist/services/amplitudeService/amplitudeService.cjs +4 -3
- package/dist/services/amplitudeService/amplitudeService.d.cts +1 -2
- package/dist/services/amplitudeService/amplitudeService.d.ts +1 -2
- package/dist/services/amplitudeService/amplitudeService.js +4 -3
- package/dist/services/enviveConfigService/enviveConfigService.cjs +25 -5
- package/dist/services/enviveConfigService/enviveConfigService.d.cts +24 -5
- package/dist/services/enviveConfigService/enviveConfigService.d.ts +24 -5
- package/dist/services/enviveConfigService/enviveConfigService.js +25 -6
- package/dist/services/enviveConfigService/fetchGraphQLConfig.cjs +181 -0
- package/dist/services/enviveConfigService/fetchGraphQLConfig.js +180 -0
- package/dist/services/enviveConfigService/index.cjs +2 -1
- package/dist/services/enviveConfigService/index.d.cts +2 -2
- package/dist/services/enviveConfigService/index.d.ts +2 -2
- package/dist/services/enviveConfigService/index.js +2 -2
- package/dist/services/hardcopyService/hardcopyService.cjs +232 -0
- package/dist/services/hardcopyService/hardcopyService.d.cts +39 -0
- package/dist/services/hardcopyService/hardcopyService.d.ts +39 -0
- package/dist/services/hardcopyService/hardcopyService.js +229 -0
- package/dist/services/hardcopyService/index.cjs +5 -0
- package/dist/services/hardcopyService/index.d.cts +2 -0
- package/dist/services/hardcopyService/index.d.ts +2 -0
- package/dist/services/hardcopyService/index.js +3 -0
- package/dist/services/userIdentityService/index.cjs +1 -0
- package/dist/services/userIdentityService/index.d.cts +2 -2
- package/dist/services/userIdentityService/index.d.ts +2 -2
- package/dist/services/userIdentityService/index.js +2 -2
- package/dist/services/userIdentityService/userIdentityService.cjs +13 -1
- package/dist/services/userIdentityService/userIdentityService.d.cts +12 -2
- package/dist/services/userIdentityService/userIdentityService.d.ts +12 -2
- package/dist/services/userIdentityService/userIdentityService.js +13 -2
- package/dist/types/enviveConfig.d.cts +1 -1
- package/dist/types/enviveConfig.d.ts +1 -1
- package/package.json +5 -1
- package/src/atoms/org/orgAnalyticsConfig.ts +0 -5
- package/src/contexts/amplitudeContext/amplitudeContext.tsx +0 -4
- package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +37 -49
- package/src/contexts/enviveContext/enviveContext.tsx +72 -134
- package/src/contexts/enviveCssContext/enviveCssContext.tsx +32 -17
- package/src/contexts/graphqlContext/__tests__/graphqlContext.test.tsx +3 -36
- package/src/contexts/graphqlContext/graphqlContext.tsx +4 -304
- package/src/contexts/graphqlContext/mockV3Config.ts +30 -15
- package/src/contexts/hardcopyContext/hardcopyContext.tsx +12 -270
- package/src/contexts/newOrgConfigContext/__tests__/newOrgConfigContext.test.tsx +54 -478
- package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +9 -26
- package/src/contexts/typesV3.ts +61 -30
- package/src/contexts/userIdentityContext/userIdentityContext.tsx +2 -2
- package/src/hooks/GraphQLConfig/useGraphQLConfig.ts +2 -62
- package/src/hooks/Search/__tests__/useSearch.test.tsx +2 -2
- package/src/services/amplitudeService/__tests__/amplitudeService.test.ts +3 -5
- package/src/services/amplitudeService/amplitudeService.ts +5 -3
- package/src/services/enviveConfigService/__tests__/fetchGraphQLConfig.test.ts +425 -0
- package/src/services/enviveConfigService/enviveConfigService.ts +41 -13
- package/src/services/enviveConfigService/fetchGraphQLConfig.ts +225 -0
- package/src/services/hardcopyService/__tests__/hardcopyService.test.ts +367 -0
- package/src/services/hardcopyService/hardcopyService.ts +271 -0
- package/src/services/hardcopyService/index.ts +1 -0
- package/src/services/userIdentityService/userIdentityService.ts +18 -0
|
@@ -1,301 +1,43 @@
|
|
|
1
1
|
import { ReactNode, createContext, useCallback, useContext, useMemo, useState } from 'react';
|
|
2
2
|
import Logger from 'src/application/logging/logger';
|
|
3
|
-
import {
|
|
4
|
-
import CommerceApiClient from 'src/application/commerce-api';
|
|
5
|
-
import { WidgetString, WidgetText } from 'src/application/models/api/widgetText';
|
|
6
|
-
import { WidgetTextRequest } from 'src/application/models/api/widgetTextRequest';
|
|
3
|
+
import { HardcopyRequest, HardcopyResponse, IHardcopyService } from 'src/services/hardcopyService';
|
|
7
4
|
|
|
8
|
-
|
|
9
|
-
import { appDetailsAtom } from 'src/atoms/app';
|
|
10
|
-
import { EnviveMetricsEventName } from 'src/services/amplitudeService/amplitudeService';
|
|
11
|
-
import { toCamelCase } from 'src/application/models/utils/snakeToCamelTransformer';
|
|
12
|
-
import { UserEvent } from 'src/application/models';
|
|
13
|
-
import { getQueryParam } from 'src/application/utils';
|
|
14
|
-
import { WidgetTypeV3 } from '../typesV3';
|
|
15
|
-
import { useFeatureFlagService } from '../featureFlagServiceContext/featureFlagServiceContext';
|
|
16
|
-
import { useAmplitude } from '../amplitudeContext';
|
|
5
|
+
export type { HardcopyRequest, HardcopyResponse } from 'src/services/hardcopyService';
|
|
17
6
|
|
|
18
7
|
const logger = new Logger('hardcopyContext');
|
|
19
8
|
|
|
20
|
-
interface HardcopyRequest {
|
|
21
|
-
widgetType: WidgetTypeV3;
|
|
22
|
-
userEvent: UserEvent;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export type HardcopyResponse = {
|
|
26
|
-
responseId: string;
|
|
27
|
-
language: string;
|
|
28
|
-
rawValues?: Record<string, WidgetString | WidgetString[]>;
|
|
29
|
-
values: Record<string, string | string[]>;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
9
|
interface HardcopyContextType {
|
|
33
|
-
getHardcopy: (
|
|
10
|
+
getHardcopy: (request: HardcopyRequest) => Promise<HardcopyResponse>;
|
|
34
11
|
isLoading: boolean;
|
|
35
12
|
}
|
|
36
13
|
|
|
37
|
-
const convertToHardcopyResponse = (response: WidgetText): HardcopyResponse => {
|
|
38
|
-
return {
|
|
39
|
-
responseId: response.responseId,
|
|
40
|
-
language: response.language,
|
|
41
|
-
rawValues: response.values,
|
|
42
|
-
values: Object.fromEntries(
|
|
43
|
-
Object.entries(response.values).map(([key, value]) => [
|
|
44
|
-
// Transform the key from snake_case to camelCase
|
|
45
|
-
toCamelCase(key),
|
|
46
|
-
value.length === 1 ? value[0].value : value.map(v => v.value),
|
|
47
|
-
]),
|
|
48
|
-
),
|
|
49
|
-
};
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
// These are just sample responses for the sake of testing.
|
|
53
|
-
// As we start to build the actual widgets we should determine what the actual
|
|
54
|
-
// values and their names should be.
|
|
55
|
-
const MOCK_HARDCOPY_RESPONSE: Partial<Record<WidgetTypeV3, HardcopyResponse>> = {
|
|
56
|
-
[WidgetTypeV3.PromptCarouselV3]: {
|
|
57
|
-
responseId: uuid(),
|
|
58
|
-
language: 'en',
|
|
59
|
-
values: {
|
|
60
|
-
promptButtonTexts: [
|
|
61
|
-
'What are your best sellers?',
|
|
62
|
-
'Show me summer dresses',
|
|
63
|
-
'Do you have free shipping?',
|
|
64
|
-
'What sizes are available?',
|
|
65
|
-
'Can I return items?',
|
|
66
|
-
],
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
[WidgetTypeV3.TitledPromptCarouselV3]: {
|
|
70
|
-
responseId: 'mock-response-id',
|
|
71
|
-
language: 'en',
|
|
72
|
-
values: {
|
|
73
|
-
titleLabel: 'Need some help?',
|
|
74
|
-
promptButtonTexts: [
|
|
75
|
-
'What are your best sellers?',
|
|
76
|
-
'Show me summer dresses',
|
|
77
|
-
'Do you have free shipping?',
|
|
78
|
-
'What sizes are available?',
|
|
79
|
-
'Can I return items?',
|
|
80
|
-
],
|
|
81
|
-
},
|
|
82
|
-
},
|
|
83
|
-
[WidgetTypeV3.SocialProofV3]: {
|
|
84
|
-
responseId: 'mock-response-id',
|
|
85
|
-
language: 'en',
|
|
86
|
-
values: {
|
|
87
|
-
titleLabel: 'Shopping Assistant',
|
|
88
|
-
numberOfCustomersText: '123 customers',
|
|
89
|
-
customerQueryText: 'found what they were looking for...',
|
|
90
|
-
primaryButtonText: 'Start shopping',
|
|
91
|
-
secondaryButtonTitleText: 'Popular searches',
|
|
92
|
-
secondaryButtonTexts: [
|
|
93
|
-
'Why should I buy from you?',
|
|
94
|
-
'How do I return an item?',
|
|
95
|
-
'New arrivals',
|
|
96
|
-
'Sale items',
|
|
97
|
-
'Popular items',
|
|
98
|
-
],
|
|
99
|
-
textFieldPlaceholderText: 'Ask me anything...',
|
|
100
|
-
},
|
|
101
|
-
},
|
|
102
|
-
[WidgetTypeV3.TypingAnimationV3]: {
|
|
103
|
-
responseId: 'mock-response-id',
|
|
104
|
-
language: 'en',
|
|
105
|
-
values: {
|
|
106
|
-
titleLabel: 'Shopping Assistant',
|
|
107
|
-
headlineText: 'Need help finding',
|
|
108
|
-
animatedTextSequence: [
|
|
109
|
-
'the perfect gift for your loved ones?',
|
|
110
|
-
'something special for the holidays?',
|
|
111
|
-
'the ideal present for someone special?',
|
|
112
|
-
],
|
|
113
|
-
hintText: 'Ask me anything',
|
|
114
|
-
promptButtonTexts: [
|
|
115
|
-
'What are your best sellers?',
|
|
116
|
-
'Show me summer dresses',
|
|
117
|
-
'Do you have free shipping?',
|
|
118
|
-
'What sizes are available?',
|
|
119
|
-
],
|
|
120
|
-
textFieldAriaLabel: 'Ask me anything',
|
|
121
|
-
},
|
|
122
|
-
},
|
|
123
|
-
[WidgetTypeV3.ChatPreviewComparisonV3]: {
|
|
124
|
-
responseId: 'mock-response-id',
|
|
125
|
-
language: 'en',
|
|
126
|
-
values: {
|
|
127
|
-
titleLabel: 'Shopping Assistant',
|
|
128
|
-
headlineText: 'Need help comparing?',
|
|
129
|
-
textFieldPlaceholderText: 'Ask me anything...',
|
|
130
|
-
},
|
|
131
|
-
},
|
|
132
|
-
[WidgetTypeV3.ChatPreviewLoadingV3]: {
|
|
133
|
-
responseId: 'mock-response-id',
|
|
134
|
-
language: 'en',
|
|
135
|
-
values: {
|
|
136
|
-
titleLabel: 'Shopping Assistant',
|
|
137
|
-
textFieldPlaceholderText: 'Ask me anything...',
|
|
138
|
-
},
|
|
139
|
-
},
|
|
140
|
-
[WidgetTypeV3.ChatPreviewV3]: {
|
|
141
|
-
responseId: 'mock-response-id',
|
|
142
|
-
language: 'en',
|
|
143
|
-
values: {
|
|
144
|
-
titleLabel: 'Shopping Assistant',
|
|
145
|
-
textFieldPlaceholderText: 'Ask me anything...',
|
|
146
|
-
},
|
|
147
|
-
},
|
|
148
|
-
[WidgetTypeV3.PromptButtonCarouselWithImageV3]: {
|
|
149
|
-
responseId: 'mock-response-id',
|
|
150
|
-
language: 'en',
|
|
151
|
-
values: {
|
|
152
|
-
titleLabel: 'Need some help?',
|
|
153
|
-
promptButtonsTexts: ['Help me find a product', "What's on your mind?", 'Talk to a human'],
|
|
154
|
-
textFieldPlaceholderText: 'Ask me anything...',
|
|
155
|
-
},
|
|
156
|
-
},
|
|
157
|
-
[WidgetTypeV3.ProductCardV3]: {
|
|
158
|
-
responseId: 'mock-response-id',
|
|
159
|
-
language: 'en',
|
|
160
|
-
values: {
|
|
161
|
-
headline: 'Discover Your Perfect Style',
|
|
162
|
-
animatedText: [
|
|
163
|
-
'the perfect outfit for any occasion',
|
|
164
|
-
'trending fashion that fits your lifestyle',
|
|
165
|
-
'quality pieces that last',
|
|
166
|
-
],
|
|
167
|
-
prompts: [
|
|
168
|
-
'What are your best sellers?',
|
|
169
|
-
'Show me summer dresses',
|
|
170
|
-
'Do you have free shipping?',
|
|
171
|
-
'What sizes are available?',
|
|
172
|
-
'Can I return items?',
|
|
173
|
-
],
|
|
174
|
-
placeholder: 'Ask me anything...',
|
|
175
|
-
},
|
|
176
|
-
},
|
|
177
|
-
[WidgetTypeV3.FloatingChatV3]: {
|
|
178
|
-
responseId: 'mock-response-id',
|
|
179
|
-
language: 'en',
|
|
180
|
-
values: {
|
|
181
|
-
welcomeMessageTitle: 'Welcome to Envive AI',
|
|
182
|
-
welcomeMessageText:
|
|
183
|
-
'Your personal shopper trained on the collective knowledge of thousands of real experts!',
|
|
184
|
-
chatFooterTextFieldPlaceholderText: 'Ask me anything...',
|
|
185
|
-
disclaimerText: 'This is a disclaimer...',
|
|
186
|
-
leftToggleLabel: 'Shop with AI',
|
|
187
|
-
rightToggleLabel: 'Live support',
|
|
188
|
-
},
|
|
189
|
-
},
|
|
190
|
-
[WidgetTypeV3.FullPageSalesAgentV3]: {
|
|
191
|
-
responseId: 'mock-response-id',
|
|
192
|
-
language: 'en',
|
|
193
|
-
values: {
|
|
194
|
-
welcomeMessageTitle: 'Welcome to Envive AI',
|
|
195
|
-
welcomeMessageText:
|
|
196
|
-
'Your personal shopper trained on the collective knowledge of thousands of real experts!',
|
|
197
|
-
chatFooterTextFieldPlaceholderText: 'Ask me anything...',
|
|
198
|
-
disclaimerText: 'This is a disclaimer...',
|
|
199
|
-
},
|
|
200
|
-
},
|
|
201
|
-
};
|
|
202
|
-
|
|
203
14
|
const HardcopyContext = createContext<HardcopyContextType | undefined>(undefined);
|
|
204
15
|
|
|
205
16
|
interface HardcopyProviderProps {
|
|
206
17
|
children: ReactNode;
|
|
207
|
-
|
|
18
|
+
hardcopyService: IHardcopyService;
|
|
208
19
|
}
|
|
209
20
|
|
|
210
21
|
export const HardcopyProvider: React.FC<HardcopyProviderProps> = ({
|
|
211
22
|
children,
|
|
212
|
-
|
|
23
|
+
hardcopyService,
|
|
213
24
|
}) => {
|
|
214
|
-
const languages = useMemo(() => navigator.languages, []);
|
|
215
25
|
const [isLoading, setIsLoading] = useState(false);
|
|
216
|
-
const context = useAtomValue(appDetailsAtom);
|
|
217
|
-
const { trackEvent } = useAmplitude();
|
|
218
|
-
|
|
219
|
-
const { featureFlagService } = useFeatureFlagService();
|
|
220
|
-
const getHardcopyFromBackend = useCallback(
|
|
221
|
-
async (request: HardcopyRequest): Promise<HardcopyResponse> => {
|
|
222
|
-
const fallbackWidgetType =
|
|
223
|
-
request.widgetType === WidgetTypeV3.ProductCardV3
|
|
224
|
-
? WidgetTypeV3.ImagePromptCardV3
|
|
225
|
-
: request.widgetType;
|
|
226
|
-
|
|
227
|
-
const overrideEntry =
|
|
228
|
-
hardcopyOverride?.[request.widgetType] ?? hardcopyOverride?.[fallbackWidgetType];
|
|
229
|
-
if (overrideEntry) {
|
|
230
|
-
logger.logDebug('using hardcopy override', request.widgetType);
|
|
231
|
-
return overrideEntry;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
const overrideConfigVersion =
|
|
235
|
-
getQueryParam('spiffy_config_version') ||
|
|
236
|
-
getQueryParam('envive_config_version') ||
|
|
237
|
-
undefined;
|
|
238
|
-
const widgetTextRequest: WidgetTextRequest = {
|
|
239
|
-
requestId: uuid(),
|
|
240
|
-
widgetType: request.widgetType,
|
|
241
|
-
context,
|
|
242
|
-
featureFlags: featureFlagService?.getFeatureFlags() || {},
|
|
243
|
-
language: languages[0] || 'en',
|
|
244
|
-
overrideConfigVersion,
|
|
245
|
-
url: window.location.href,
|
|
246
|
-
};
|
|
247
|
-
trackEvent({
|
|
248
|
-
eventName: EnviveMetricsEventName.WidgetTextRequest,
|
|
249
|
-
eventProps: {
|
|
250
|
-
widget_type: request.widgetType,
|
|
251
|
-
request_id: widgetTextRequest.requestId,
|
|
252
|
-
},
|
|
253
|
-
});
|
|
254
|
-
try {
|
|
255
|
-
const response = await CommerceApiClient.getHardcopy(widgetTextRequest);
|
|
256
|
-
if (response) {
|
|
257
|
-
const convertedResponse = convertToHardcopyResponse(response);
|
|
258
|
-
logger.logDebug('converted response', convertedResponse);
|
|
259
|
-
trackEvent({
|
|
260
|
-
eventName: EnviveMetricsEventName.WidgetTextResponse,
|
|
261
|
-
eventProps: {
|
|
262
|
-
widget_type: request.widgetType,
|
|
263
|
-
response_id: response.responseId,
|
|
264
|
-
widget_text: response.values,
|
|
265
|
-
request_id: widgetTextRequest.requestId,
|
|
266
|
-
},
|
|
267
|
-
});
|
|
268
|
-
return convertedResponse;
|
|
269
|
-
}
|
|
270
|
-
} catch (error) {
|
|
271
|
-
logger.logError('error getting hardcopy from backend', error);
|
|
272
|
-
}
|
|
273
|
-
const mockResponse = MOCK_HARDCOPY_RESPONSE[request.widgetType];
|
|
274
|
-
if (mockResponse) {
|
|
275
|
-
logger.logDebug('no real response, using mock', mockResponse);
|
|
276
|
-
return mockResponse;
|
|
277
|
-
}
|
|
278
|
-
throw new Error(`No hardcopy response found for widget type: ${request.widgetType}`);
|
|
279
|
-
},
|
|
280
|
-
[context, featureFlagService, hardcopyOverride, languages, trackEvent],
|
|
281
|
-
);
|
|
282
26
|
|
|
283
27
|
const getHardcopy = useCallback(
|
|
284
28
|
async (request: HardcopyRequest): Promise<HardcopyResponse> => {
|
|
285
29
|
setIsLoading(true);
|
|
286
|
-
logger.logDebug('retrieving hardcopy'
|
|
287
|
-
|
|
30
|
+
logger.logDebug('retrieving hardcopy');
|
|
288
31
|
logger.logDebug('request', request);
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
32
|
+
try {
|
|
33
|
+
const response = await hardcopyService.getHardcopy(request);
|
|
34
|
+
logger.logDebug('returning hardcopy response', response);
|
|
35
|
+
return response;
|
|
36
|
+
} finally {
|
|
292
37
|
setIsLoading(false);
|
|
293
|
-
throw new Error(`No hardcopy response found for widget type: ${request.widgetType}`);
|
|
294
38
|
}
|
|
295
|
-
setIsLoading(false);
|
|
296
|
-
return response;
|
|
297
39
|
},
|
|
298
|
-
[
|
|
40
|
+
[hardcopyService],
|
|
299
41
|
);
|
|
300
42
|
|
|
301
43
|
const value = useMemo(() => ({ getHardcopy, isLoading }), [getHardcopy, isLoading]);
|