srs-heritage-chatbot 1.0.0

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.
Files changed (187) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +194 -0
  3. package/lib/commonjs/assets/chat-icon-mobile.svg +1 -0
  4. package/lib/commonjs/assets/heritage.png +0 -0
  5. package/lib/commonjs/assets/posiden.svg +51 -0
  6. package/lib/commonjs/components/LoadingTips.js +104 -0
  7. package/lib/commonjs/components/LoadingTips.js.map +1 -0
  8. package/lib/commonjs/components/email.js +461 -0
  9. package/lib/commonjs/components/email.js.map +1 -0
  10. package/lib/commonjs/components/feedback.js +114 -0
  11. package/lib/commonjs/components/feedback.js.map +1 -0
  12. package/lib/commonjs/components/header.js +126 -0
  13. package/lib/commonjs/components/header.js.map +1 -0
  14. package/lib/commonjs/components/input.js +144 -0
  15. package/lib/commonjs/components/input.js.map +1 -0
  16. package/lib/commonjs/components/productCard.js +688 -0
  17. package/lib/commonjs/components/productCard.js.map +1 -0
  18. package/lib/commonjs/components/progressCircle.js +99 -0
  19. package/lib/commonjs/components/progressCircle.js.map +1 -0
  20. package/lib/commonjs/components/testing.js +74 -0
  21. package/lib/commonjs/components/testing.js.map +1 -0
  22. package/lib/commonjs/components/voice.js +184 -0
  23. package/lib/commonjs/components/voice.js.map +1 -0
  24. package/lib/commonjs/components/welcomeButton.js +149 -0
  25. package/lib/commonjs/components/welcomeButton.js.map +1 -0
  26. package/lib/commonjs/components/welcomeInput.js +137 -0
  27. package/lib/commonjs/components/welcomeInput.js.map +1 -0
  28. package/lib/commonjs/contexts/AppContext.js +552 -0
  29. package/lib/commonjs/contexts/AppContext.js.map +1 -0
  30. package/lib/commonjs/hooks/Stream.js +599 -0
  31. package/lib/commonjs/hooks/Stream.js.map +1 -0
  32. package/lib/commonjs/hooks/useAsyncStorage.js +36 -0
  33. package/lib/commonjs/hooks/useAsyncStorage.js.map +1 -0
  34. package/lib/commonjs/index.js +44 -0
  35. package/lib/commonjs/index.js.map +1 -0
  36. package/lib/commonjs/layout/disclaimer.js +208 -0
  37. package/lib/commonjs/layout/disclaimer.js.map +1 -0
  38. package/lib/commonjs/layout/ex.js +254 -0
  39. package/lib/commonjs/layout/ex.js.map +1 -0
  40. package/lib/commonjs/layout/icon.js +118 -0
  41. package/lib/commonjs/layout/icon.js.map +1 -0
  42. package/lib/commonjs/layout/layout.js +168 -0
  43. package/lib/commonjs/layout/layout.js.map +1 -0
  44. package/lib/commonjs/layout/welcome.js +160 -0
  45. package/lib/commonjs/layout/welcome.js.map +1 -0
  46. package/lib/commonjs/layout/window.js +396 -0
  47. package/lib/commonjs/layout/window.js.map +1 -0
  48. package/lib/commonjs/utils/audioRecorder.js +412 -0
  49. package/lib/commonjs/utils/audioRecorder.js.map +1 -0
  50. package/lib/commonjs/utils/cloudinary.js +69 -0
  51. package/lib/commonjs/utils/cloudinary.js.map +1 -0
  52. package/lib/commonjs/utils/storage.js +76 -0
  53. package/lib/commonjs/utils/storage.js.map +1 -0
  54. package/lib/commonjs/utils/textToSpeech.js +53 -0
  55. package/lib/commonjs/utils/textToSpeech.js.map +1 -0
  56. package/lib/module/assets/chat-icon-mobile.svg +1 -0
  57. package/lib/module/assets/heritage.png +0 -0
  58. package/lib/module/assets/posiden.svg +51 -0
  59. package/lib/module/components/LoadingTips.js +95 -0
  60. package/lib/module/components/LoadingTips.js.map +1 -0
  61. package/lib/module/components/email.js +452 -0
  62. package/lib/module/components/email.js.map +1 -0
  63. package/lib/module/components/feedback.js +105 -0
  64. package/lib/module/components/feedback.js.map +1 -0
  65. package/lib/module/components/header.js +117 -0
  66. package/lib/module/components/header.js.map +1 -0
  67. package/lib/module/components/input.js +135 -0
  68. package/lib/module/components/input.js.map +1 -0
  69. package/lib/module/components/productCard.js +679 -0
  70. package/lib/module/components/productCard.js.map +1 -0
  71. package/lib/module/components/progressCircle.js +91 -0
  72. package/lib/module/components/progressCircle.js.map +1 -0
  73. package/lib/module/components/testing.js +66 -0
  74. package/lib/module/components/testing.js.map +1 -0
  75. package/lib/module/components/voice.js +175 -0
  76. package/lib/module/components/voice.js.map +1 -0
  77. package/lib/module/components/welcomeButton.js +140 -0
  78. package/lib/module/components/welcomeButton.js.map +1 -0
  79. package/lib/module/components/welcomeInput.js +128 -0
  80. package/lib/module/components/welcomeInput.js.map +1 -0
  81. package/lib/module/contexts/AppContext.js +542 -0
  82. package/lib/module/contexts/AppContext.js.map +1 -0
  83. package/lib/module/hooks/Stream.js +592 -0
  84. package/lib/module/hooks/Stream.js.map +1 -0
  85. package/lib/module/hooks/useAsyncStorage.js +29 -0
  86. package/lib/module/hooks/useAsyncStorage.js.map +1 -0
  87. package/lib/module/index.js +36 -0
  88. package/lib/module/index.js.map +1 -0
  89. package/lib/module/layout/disclaimer.js +199 -0
  90. package/lib/module/layout/disclaimer.js.map +1 -0
  91. package/lib/module/layout/ex.js +253 -0
  92. package/lib/module/layout/ex.js.map +1 -0
  93. package/lib/module/layout/icon.js +108 -0
  94. package/lib/module/layout/icon.js.map +1 -0
  95. package/lib/module/layout/layout.js +160 -0
  96. package/lib/module/layout/layout.js.map +1 -0
  97. package/lib/module/layout/welcome.js +150 -0
  98. package/lib/module/layout/welcome.js.map +1 -0
  99. package/lib/module/layout/window.js +387 -0
  100. package/lib/module/layout/window.js.map +1 -0
  101. package/lib/module/utils/audioRecorder.js +398 -0
  102. package/lib/module/utils/audioRecorder.js.map +1 -0
  103. package/lib/module/utils/cloudinary.js +61 -0
  104. package/lib/module/utils/cloudinary.js.map +1 -0
  105. package/lib/module/utils/storage.js +67 -0
  106. package/lib/module/utils/storage.js.map +1 -0
  107. package/lib/module/utils/textToSpeech.js +43 -0
  108. package/lib/module/utils/textToSpeech.js.map +1 -0
  109. package/lib/typescript/components/LoadingTips.d.ts +3 -0
  110. package/lib/typescript/components/LoadingTips.d.ts.map +1 -0
  111. package/lib/typescript/components/email.d.ts +6 -0
  112. package/lib/typescript/components/email.d.ts.map +1 -0
  113. package/lib/typescript/components/feedback.d.ts +6 -0
  114. package/lib/typescript/components/feedback.d.ts.map +1 -0
  115. package/lib/typescript/components/header.d.ts +3 -0
  116. package/lib/typescript/components/header.d.ts.map +1 -0
  117. package/lib/typescript/components/input.d.ts +6 -0
  118. package/lib/typescript/components/input.d.ts.map +1 -0
  119. package/lib/typescript/components/productCard.d.ts +7 -0
  120. package/lib/typescript/components/productCard.d.ts.map +1 -0
  121. package/lib/typescript/components/progressCircle.d.ts +3 -0
  122. package/lib/typescript/components/progressCircle.d.ts.map +1 -0
  123. package/lib/typescript/components/testing.d.ts +6 -0
  124. package/lib/typescript/components/testing.d.ts.map +1 -0
  125. package/lib/typescript/components/voice.d.ts +5 -0
  126. package/lib/typescript/components/voice.d.ts.map +1 -0
  127. package/lib/typescript/components/welcomeButton.d.ts +4 -0
  128. package/lib/typescript/components/welcomeButton.d.ts.map +1 -0
  129. package/lib/typescript/components/welcomeInput.d.ts +6 -0
  130. package/lib/typescript/components/welcomeInput.d.ts.map +1 -0
  131. package/lib/typescript/contexts/AppContext.d.ts +10 -0
  132. package/lib/typescript/contexts/AppContext.d.ts.map +1 -0
  133. package/lib/typescript/hooks/Stream.d.ts +2 -0
  134. package/lib/typescript/hooks/Stream.d.ts.map +1 -0
  135. package/lib/typescript/hooks/useAsyncStorage.d.ts +2 -0
  136. package/lib/typescript/hooks/useAsyncStorage.d.ts.map +1 -0
  137. package/lib/typescript/index.d.ts +8 -0
  138. package/lib/typescript/index.d.ts.map +1 -0
  139. package/lib/typescript/layout/disclaimer.d.ts +5 -0
  140. package/lib/typescript/layout/disclaimer.d.ts.map +1 -0
  141. package/lib/typescript/layout/ex.d.ts +1 -0
  142. package/lib/typescript/layout/ex.d.ts.map +1 -0
  143. package/lib/typescript/layout/icon.d.ts +3 -0
  144. package/lib/typescript/layout/icon.d.ts.map +1 -0
  145. package/lib/typescript/layout/layout.d.ts +3 -0
  146. package/lib/typescript/layout/layout.d.ts.map +1 -0
  147. package/lib/typescript/layout/welcome.d.ts +6 -0
  148. package/lib/typescript/layout/welcome.d.ts.map +1 -0
  149. package/lib/typescript/layout/window.d.ts +5 -0
  150. package/lib/typescript/layout/window.d.ts.map +1 -0
  151. package/lib/typescript/utils/audioRecorder.d.ts +9 -0
  152. package/lib/typescript/utils/audioRecorder.d.ts.map +1 -0
  153. package/lib/typescript/utils/cloudinary.d.ts +17 -0
  154. package/lib/typescript/utils/cloudinary.d.ts.map +1 -0
  155. package/lib/typescript/utils/storage.d.ts +29 -0
  156. package/lib/typescript/utils/storage.d.ts.map +1 -0
  157. package/lib/typescript/utils/textToSpeech.d.ts +2 -0
  158. package/lib/typescript/utils/textToSpeech.d.ts.map +1 -0
  159. package/package.json +109 -0
  160. package/src/assets/chat-icon-mobile.svg +1 -0
  161. package/src/assets/heritage.png +0 -0
  162. package/src/assets/posiden.svg +51 -0
  163. package/src/components/LoadingTips.js +99 -0
  164. package/src/components/email.js +467 -0
  165. package/src/components/feedback.js +114 -0
  166. package/src/components/header.js +119 -0
  167. package/src/components/input.js +133 -0
  168. package/src/components/productCard.js +815 -0
  169. package/src/components/progressCircle.js +88 -0
  170. package/src/components/testing.js +60 -0
  171. package/src/components/voice.js +228 -0
  172. package/src/components/welcomeButton.js +161 -0
  173. package/src/components/welcomeInput.js +133 -0
  174. package/src/contexts/AppContext.js +678 -0
  175. package/src/hooks/Stream.js +655 -0
  176. package/src/hooks/useAsyncStorage.js +33 -0
  177. package/src/index.js +30 -0
  178. package/src/layout/disclaimer.js +231 -0
  179. package/src/layout/ex.js +252 -0
  180. package/src/layout/icon.js +105 -0
  181. package/src/layout/layout.js +160 -0
  182. package/src/layout/welcome.js +172 -0
  183. package/src/layout/window.js +476 -0
  184. package/src/utils/audioRecorder.js +445 -0
  185. package/src/utils/cloudinary.js +61 -0
  186. package/src/utils/storage.ts +89 -0
  187. package/src/utils/textToSpeech.js +49 -0
@@ -0,0 +1,552 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AppProvider = exports.AppContext = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNativeUuid = _interopRequireDefault(require("react-native-uuid"));
9
+ var _storage = require("../utils/storage");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
+ // import useAsyncStorage from '../hooks/useAsyncStorage';
13
+
14
+ const AppContext = exports.AppContext = /*#__PURE__*/(0, _react.createContext)();
15
+ const AppProvider = ({
16
+ data,
17
+ onProductCardClick,
18
+ onAddToCartClick,
19
+ uiConfig = {},
20
+ children
21
+ }) => {
22
+ // Brand-driven configuration
23
+ const version = (data === null || data === void 0 ? void 0 : data.brand_version) === 'pool' || (data === null || data === void 0 ? void 0 : data.brand_version) === 'landscape' ? data.brand_version : 'landscape';
24
+ const API_PREFIX = 'https://';
25
+ const BRAND_CONFIG = (() => {
26
+ const isStage = (data === null || data === void 0 ? void 0 : data.env) === 'stage';
27
+ return {
28
+ pool: {
29
+ primaryColor: '#004687',
30
+ userMessageColor: '#003764',
31
+ cloudName: 'heritageplus',
32
+ // Pool assets live under mobileapp/ in heritageplus cloud
33
+ logoId: 'mobileapp/logos/HPSG_HPlus_Logo_White',
34
+ baseHost: isStage ? 'pool-stage-external-agent-adk-586731320826.us-east1.run.app' : 'pool-prod-external-agent-adk-586731320826.us-east1.run.app',
35
+ // baseHost: isStage
36
+ // ? '0.0.0.0:8080'
37
+ // : 'pool-prod-external-agent-adk-586731320826.us-east1.run.app',
38
+ loggingHost: 'srs-external-agent-logging-586731320826.us-central1.run.app'
39
+ },
40
+ landscape: {
41
+ primaryColor: '#437D3D',
42
+ userMessageColor: '#437D3D',
43
+ cloudName: 'mktg',
44
+ logoId: 'logos/HLSG_Logo_Lockup_Color',
45
+ baseHost: isStage ? 'landscape-stage-external-agent-adk-586731320826.us-east1.run.app' : 'landscape-prod-external-agent-adk-586731320826.us-east1.run.app',
46
+ loggingHost: 'srs-external-agent-landscape-logging-586731320826.us-central1.run.app'
47
+ }
48
+ }[version];
49
+ })();
50
+ const BASE_URL = BRAND_CONFIG.baseHost;
51
+ const LOGGING_URL = BRAND_CONFIG.loggingHost;
52
+ const TRACK_CLICK_URL = `${API_PREFIX}${LOGGING_URL}/track-click`;
53
+ const ADD_TO_CART_URL = `${API_PREFIX}${LOGGING_URL}/add-to-cart`;
54
+ const theme = {
55
+ userMessage: BRAND_CONFIG.userMessageColor,
56
+ botMessage: BRAND_CONFIG.userMessageColor,
57
+ backgroundColor: '#f6f6f6',
58
+ textColor: '#161616',
59
+ textColorSecondary: '#FFFFFF',
60
+ inlineButtonColor: '#dbd4c8',
61
+ primaryColor: BRAND_CONFIG.primaryColor
62
+ };
63
+ const brandLogo = BRAND_CONFIG.logoId;
64
+ const brandCloudName = BRAND_CONFIG.cloudName;
65
+
66
+ // Default Messages
67
+ const defaultMessage = [{
68
+ type: 'ai',
69
+ text: `Hi there 👋 I'm your ${version === 'pool' ? 'HeritagePool+' : 'Heritage+'} AI Assistant. I'm here to help you with Product and Account information during your online visit. I'm still learning and growing - the more we interact and the more feedback you share, the better I can assist you. How can I help you today?`
70
+ }];
71
+ const maintenanceMessage = [{
72
+ type: 'ai',
73
+ text: "Hi there 👋 I'm your Heritage+ AI Agent. I'm currently undergoing maintenance to improve my services. Thank you for your patience and understanding!"
74
+ }];
75
+
76
+ // user data variables
77
+ const customerToken = data.customer_token;
78
+
79
+ // Base Variables
80
+ const [showModal, setShowModal] = (0, _react.useState)('Icon');
81
+ const [input, setInput] = (0, _react.useState)('');
82
+ const [messages, setMessages] = (0, _react.useState)(_storage.defaultState.messages);
83
+ const [conversationStartTime, setConversationStartTime] = (0, _react.useState)(null);
84
+ const [lastUserMessage, setLastUserMessage] = (0, _react.useState)('');
85
+ const [lastMessageId, setLastMessageId] = (0, _react.useState)('');
86
+ const [sessionId, setSessionId] = (0, _react.useState)(null);
87
+ const [isListening, setIsListening] = (0, _react.useState)(false);
88
+
89
+ // Message UI
90
+ const [typingIndicator, setTypingIndicator] = (0, _react.useState)(false);
91
+ const [ghostMessage, setGhostMessage] = (0, _react.useState)(false);
92
+ const [ghostCard, setGhostCard] = (0, _react.useState)(false);
93
+ const [stopActivated, setStopActivated] = (0, _react.useState)(false);
94
+ const [disclaimer, setDisclaimer] = (0, _react.useState)(false);
95
+ const [startStreaming, setStartStreaming] = (0, _react.useState)(false);
96
+
97
+ // Load persisted state on mount
98
+ (0, _react.useEffect)(() => {
99
+ if (!customerToken) return;
100
+ const init = async () => {
101
+ try {
102
+ const cachedState = await (0, _storage.loadChat)(customerToken);
103
+
104
+ // Update all stateful values
105
+ setTypingIndicator(cachedState.typingIndicator);
106
+ setGhostMessage(cachedState.ghostMessage);
107
+ setGhostCard(cachedState.ghostCard);
108
+ setStopActivated(cachedState.stopActivated);
109
+ setDisclaimer(cachedState.disclaimer);
110
+ setStartStreaming(cachedState.startStreaming);
111
+ setMessages(cachedState.messages);
112
+ // setShowModal(cachedState.showModal);
113
+
114
+ if (uiConfig.toggleChat === false) {
115
+ setShowModal('Icon');
116
+ } else {
117
+ if (!disclaimer) {
118
+ setShowModal('Form');
119
+ } else {
120
+ if ((uiConfig.showWelcome === true || cachedState.showWelcome === true) && messages.length < 2) {
121
+ // console.log("showWelcome", uiConfig.showWelcome, cachedState.showWelcome)
122
+ setShowModal('Welcome');
123
+ } else {
124
+ setShowModal('ChatWindow');
125
+ }
126
+ }
127
+ }
128
+ } catch (error) {
129
+ console.error('Error loading chat state:', error);
130
+ }
131
+ };
132
+ init();
133
+ }, [customerToken, uiConfig.toggleChat, uiConfig.showWelcome]);
134
+
135
+ // Persist state changes
136
+ (0, _react.useEffect)(() => {
137
+ if (!customerToken) return;
138
+ const persistState = async () => {
139
+ const currentState = {
140
+ typingIndicator,
141
+ ghostMessage,
142
+ ghostCard,
143
+ stopActivated,
144
+ disclaimer,
145
+ startStreaming,
146
+ messages,
147
+ showModal,
148
+ showWelcome: uiConfig.showWelcome
149
+ };
150
+ await (0, _storage.updateChat)(customerToken, currentState);
151
+ };
152
+ persistState();
153
+ }, [customerToken, typingIndicator, ghostMessage, ghostCard, stopActivated, disclaimer, startStreaming, messages, showModal, uiConfig.showWelcome]);
154
+ (0, _react.useEffect)(() => {
155
+ if (showModal == 'Off') {
156
+ setShowModal('Icon');
157
+ }
158
+ }, [uiConfig.showIcon]);
159
+ const stopGenerating = () => {
160
+ setTypingIndicator(false);
161
+ setStopActivated(true);
162
+ };
163
+ function handleSend(input) {
164
+ if (maintenance) {
165
+ setMessages([...messages, {
166
+ type: 'user',
167
+ text: input
168
+ }, {
169
+ type: 'ai',
170
+ text: 'The chat is currently unavailable, please come back later!'
171
+ }]);
172
+ return;
173
+ }
174
+
175
+ // Ensure input is a string and not empty
176
+ const userInput = typeof input === 'string' ? input.trim() : String(input || '').trim();
177
+ if (userInput !== '') {
178
+ // Ensure sessionId exists before starting a conversation
179
+ if (!sessionId) {
180
+ const newSessionId = _reactNativeUuid.default.v4();
181
+ setSessionId(newSessionId);
182
+ console.log('[AppContext] Generated new sessionId:', newSessionId);
183
+ }
184
+ if (messages.length <= 1) {
185
+ const startTime = new Date().toISOString();
186
+ setConversationStartTime(startTime);
187
+ }
188
+
189
+ // Create user message object with immutable text
190
+ const userMessage = {
191
+ type: 'user',
192
+ text: userInput,
193
+ session_id: data.session_id || data.session || sessionId
194
+ };
195
+
196
+ // Initiate streaming
197
+ setShowModal('ChatWindow');
198
+ setLastUserMessage(userInput);
199
+ setMessages([...messages, userMessage]);
200
+ setTypingIndicator(true);
201
+ setGhostMessage(true);
202
+ setStartStreaming(true);
203
+ setInput('');
204
+ }
205
+ }
206
+
207
+ // After form submission
208
+ function setNextMessage(name) {
209
+ setMessages(prevMessages => {
210
+ const updatedMessages = prevMessages.map((message, index) => {
211
+ if (index === prevMessages.length - 1 && message.form) {
212
+ return {
213
+ ...message,
214
+ form: false
215
+ };
216
+ }
217
+ return message;
218
+ });
219
+ const nextMessage = {
220
+ type: 'ai',
221
+ text: [`Nice to meet you ${name}. How can I help you today?`]
222
+ };
223
+ return [...updatedMessages, nextMessage];
224
+ });
225
+ }
226
+
227
+ // Confirm Disclaimer
228
+ async function confirmDisclaimer() {
229
+ setDisclaimer(true);
230
+ if (!maintenance) {
231
+ setShowModal('Welcome');
232
+ setMessages(defaultMessage);
233
+ } else {
234
+ setShowModal('ChatWindow');
235
+ setMessages(maintenanceMessage);
236
+ }
237
+ try {
238
+ const response = await fetch(API_PREFIX + LOGGING_URL + '/log-disclaimer', {
239
+ method: 'POST',
240
+ headers: {
241
+ 'Content-Type': 'application/json'
242
+ },
243
+ body: JSON.stringify({
244
+ email: data.user_email
245
+ })
246
+ });
247
+ if (!response.ok) {
248
+ throw new Error(`HTTP error! status: ${response.status}`);
249
+ }
250
+ } catch (error) {
251
+ console.error('Error in Log disclaimer:', error);
252
+ }
253
+ }
254
+ function handleButtonClick(buttonText) {
255
+ handleSend(buttonText);
256
+ }
257
+ const [maintenance, setMaintenance] = (0, _react.useState)(false);
258
+ const handleClearState = async () => {
259
+ if (!maintenance) {
260
+ setShowModal('Welcome');
261
+ }
262
+ if (messages.length > 1) {
263
+ const newState = {
264
+ ..._storage.defaultState,
265
+ messages: maintenance ? maintenanceMessage : defaultMessage,
266
+ showModal: maintenance ? 'ChatWindow' : 'Welcome'
267
+ };
268
+
269
+ // Update all state variables
270
+ setMessages(newState.messages);
271
+ setTypingIndicator(false);
272
+ setGhostMessage(false);
273
+ setShowModal(newState.showModal);
274
+
275
+ // Generate new session
276
+ const newSessionId = _reactNativeUuid.default.v4();
277
+ setSessionId(newSessionId);
278
+
279
+ // Clear persisted state
280
+ if (customerToken) {
281
+ await (0, _storage.updateChat)(customerToken, newState);
282
+ }
283
+ }
284
+ };
285
+ const [feedback, setFeedback] = (0, _react.useState)({});
286
+ async function handleFeedback(feedbackValue, messageId) {
287
+ switchFeedbackOpen(true, messageId, true);
288
+ setFeedback(prevFeedback => {
289
+ const updatedFeedback = {
290
+ ...prevFeedback
291
+ };
292
+ if (!updatedFeedback[messageId]) {
293
+ updatedFeedback[messageId] = 0;
294
+ }
295
+ updatedFeedback[messageId] = feedbackValue;
296
+ return updatedFeedback;
297
+ });
298
+ try {
299
+ const response = await fetch(API_PREFIX + LOGGING_URL + '/feedback', {
300
+ method: 'POST',
301
+ headers: {
302
+ 'Content-Type': 'application/json'
303
+ },
304
+ body: JSON.stringify({
305
+ message_id: messageId,
306
+ feedback: feedbackValue
307
+ })
308
+ });
309
+ if (!response.ok) {
310
+ throw new Error(`HTTP error! status: ${response.status}`);
311
+ }
312
+ //console.log(response)
313
+ } catch (error) {
314
+ console.error('Error in feedback post:', error);
315
+ }
316
+ }
317
+ const [feedbackOpen, setFeedbackOpen] = (0, _react.useState)({});
318
+ const [writeFeedback, setWriteFeedback] = (0, _react.useState)('');
319
+ const [writeAnswer, setWriteAnswer] = (0, _react.useState)('');
320
+
321
+ // Written Feedback ----------------------------
322
+
323
+ function switchFeedbackOpen(newVal, messageId, resetvalue) {
324
+ console.log(newVal, feedbackOpen[messageId], messageId, resetvalue);
325
+ console.log(feedbackOpen);
326
+ if (newVal != feedbackOpen[messageId]) {
327
+ setWriteFeedback('');
328
+ setWriteAnswer('');
329
+ }
330
+ if (resetvalue) {
331
+ setWriteFeedback('');
332
+ setWriteAnswer('');
333
+ }
334
+ if (feedbackOpen[messageId] == 'done') {
335
+ return;
336
+ }
337
+ setFeedbackOpen(prevFeedback => {
338
+ const updatedFeedback = {
339
+ ...prevFeedback
340
+ };
341
+ updatedFeedback[messageId] = newVal;
342
+ return updatedFeedback;
343
+ });
344
+ console.log(feedbackOpen);
345
+ }
346
+ async function handleWrittenFeedback(messageId) {
347
+ if (writeFeedback.trim() !== '' || writeAnswer.trim() !== '') {
348
+ //console.log(messageId, writeFeedback)
349
+ switchFeedbackOpen(-1, messageId, true);
350
+ try {
351
+ const response = await fetch(API_PREFIX + LOGGING_URL + '/feedback-message', {
352
+ method: 'POST',
353
+ headers: {
354
+ 'Content-Type': 'application/json'
355
+ },
356
+ body: JSON.stringify({
357
+ message_id: messageId,
358
+ feedback_message: writeFeedback,
359
+ correct_answer: writeAnswer
360
+ })
361
+ });
362
+ if (!response.ok) {
363
+ throw new Error(`HTTP error! status: ${response.status}`);
364
+ }
365
+ //console.log(response)
366
+ } catch (error) {
367
+ console.error('Error in feedback_message:', error);
368
+ }
369
+ }
370
+ }
371
+ const formatChatHistory = () => {
372
+ // Skip the first message (index 0) which is the welcome message
373
+ return messages.slice(1).map(message => {
374
+ if (Array.isArray(message.text)) {
375
+ return {
376
+ type: message.type,
377
+ content: message.text.join('\n')
378
+ };
379
+ }
380
+ return {
381
+ type: message.type,
382
+ content: message.text
383
+ };
384
+ });
385
+ };
386
+ function handleVoiceSend(audio, transcription) {
387
+ //setReadAloud(true)
388
+ handleSend(transcription);
389
+ }
390
+
391
+ // Wrapper function for onAddToCartClick to add middle message
392
+ const handleAddToCartWithMessage = cartData => {
393
+ // Add middle message indicating item is being added to cart
394
+ setMessages(prevMessages => [...prevMessages, {
395
+ type: 'middle',
396
+ text: `${cartData.quantity} ${cartData.selectedUom} of item ${cartData.product.product_details.product_name} added to cart`,
397
+ products: [],
398
+ product_cards: 'False'
399
+ }]);
400
+
401
+ // Call the original onAddToCartClick function
402
+ if (onAddToCartClick) {
403
+ onAddToCartClick(cartData);
404
+ }
405
+ };
406
+
407
+ // translations from web: port to mobile in an effort to standardize experiences
408
+ const translations = {
409
+ en: {
410
+ greeting: 'Hi',
411
+ aiAssistantIntro: "I'm your Heritage Pool+ AI Assistant. I can help you during your online visit with Product and Account information.",
412
+ askAway: 'Ask away...',
413
+ betaDisclaimer: 'Beta version. AI Assistant is still learning!',
414
+ helpCategories: 'Here are some areas I can help you with:',
415
+ suggestedQuestions: 'Suggested Questions...',
416
+ languageToggle: 'Ayuda en Español',
417
+ products: 'Products',
418
+ orders: 'Orders',
419
+ invoices: 'Invoices',
420
+ branchInfo: 'Branch Information',
421
+ hiMessage: "Hi, I'm your Heritage Pool+ AI Assistant. How can I help you?",
422
+ hiMessageMobile: "Hi, I'm your Heritage Pool+ AI Assistant! How can I help you?",
423
+ defaultMessage: "Hi there 👋 I'm your Heritage Pool+ AI Assistant. I'm here to help you with Product and Account information during your online visit. I'm still learning and growing - the more we interact and the more feedback you share, the better I can assist you. How can I help you today?",
424
+ nameMessage: "Hi there 👋 I'm your Heritage Pool+ AI Assistant. I'm here to help you with Product and Account information during your online visit. I'm still learning and growing - the more we interact and the more feedback you share, the better I can assist you. How can I help you today?",
425
+ nextMessage: 'Nice to meet you {name}. How can I help you today?',
426
+ maintenanceMessage: "Hi there 👋 I'm your Heritage Pool+ AI Assistant. I'm currently undergoing maintenance to improve my services. Thank you for your patience and understanding!",
427
+ followUpQuestions: {
428
+ products: ['Do you have part # JNDDEV48 in stock?', 'Which grid assembly goes with the Hayward DE4820 filter?', "What's the max flow rate for the Tristar VS 950?", "What's the difference between the Jandy VS FloPro 2.7 HP and the Jandy VS PlusHP 2.7 HP?"],
429
+ branchInfo: ['What are the hours of my current branch?', 'How can I contact my branch?', 'Branches near me.'],
430
+ orders: ["Where can I find my PO's?", 'How do I change my shipping method?', 'How do I place my early buys?', 'Can I pick up my open order?', 'I need to edit a recently placed order.'],
431
+ invoices: ['How do I pay for invoices?', 'How do I print past invoices?', 'What is my current account balance?', 'How many unpaid invoices do I have?', 'How do I change my payment on file?']
432
+ },
433
+ loadingTips: ['Use 👍👎 next to each response to help us improve the AI Assistant', '🗑️ Clear the chat history after each conversation for continued accurate responses'],
434
+ addToCart: 'Add to Cart'
435
+ },
436
+ es: {
437
+ greeting: 'Hola',
438
+ aiAssistantIntro: 'Soy tu Asistente de IA de Heritage Pool+. Puedo ayudarte durante tu visita en línea con información de productos y cuentas.',
439
+ askAway: 'Pregunta lo que quieras...',
440
+ betaDisclaimer: 'Versión beta. ¡Asistente de IA sigue aprendiendo!',
441
+ helpCategories: 'Estas son algunas áreas en las que puedo ayudarte:',
442
+ suggestedQuestions: 'Preguntas Sugeridas...',
443
+ languageToggle: 'Assistance in English',
444
+ products: 'Productos',
445
+ orders: 'Pedidos',
446
+ invoices: 'Facturas',
447
+ branchInfo: 'Información de Sucursal',
448
+ hiMessage: 'Hola, soy tu Asistente de IA de Heritage Pool+. ¿Cómo puedo ayudarte?',
449
+ hiMessageMobile: '¡Hola, soy tu Asistente de IA de Heritage Pool+! ¿Cómo puedo ayudarte?',
450
+ defaultMessage: 'Hola 👋 Soy tu Asistente de IA de Heritage Pool+. Estoy aquí para ayudarte con información de productos y cuentas durante tu visita en línea. Sigo aprendiendo y creciendo - mientras más interactuemos y más comentarios compartas, mejor podré asistirte. ¿Cómo puedo ayudarte hoy?',
451
+ nameMessage: 'Hola 👋 Soy tu Asistente de IA de Heritage Pool+. Estoy aquí para ayudarte con información de productos y cuentas durante tu visita en línea. Sigo aprendiendo y creciendo - mientras más interactuemos y más comentarios compartas, mejor podré asistirte. ¿Cómo puedo ayudarte hoy?',
452
+ nextMessage: 'Mucho gusto en conocerte {name}. ¿Cómo puedo ayudarte hoy?',
453
+ maintenanceMessage: 'Hola 👋 Soy tu Asistente de IA de Heritage Pool+. Actualmente estoy en mantenimiento para mejorar mis servicios. ¡Gracias por tu paciencia y comprensión!',
454
+ followUpQuestions: {
455
+ products: ['¿Tienen la pieza # JNDDEV48 en existencia?', '¿Qué ensamble de rejilla corresponde al filtro Hayward DE4820?', '¿Cuál es el caudal máximo del Tristar VS 950?', '¿Cuál es la diferencia entre el Jandy VS FloPro de 2.7 HP y el Jandy VS PlusHP de 2.7 HP?'],
456
+ branchInfo: ['¿Cuáles son los horarios de mi sucursal actual?', '¿Cómo puedo contactar a mi sucursal?', 'Sucursales cerca de mí.'],
457
+ orders: ['¿Dónde puedo encontrar mis órdenes de compra?', '¿Cómo cambio mi método de envío?', '¿Cómo realizo mis compras anticipadas?', '¿Puedo recoger mi pedido abierto?', 'Necesito editar un pedido recién realizado.'],
458
+ invoices: ['¿Cómo pago las facturas?', '¿Cómo imprimo facturas anteriores?', '¿Cuál es el saldo actual de mi cuenta?', '¿Cuántas facturas sin pagar tengo?', '¿Cómo cambio mi método de pago registrado?']
459
+ },
460
+ loadingTips: ['Usa 👍👎 junto a cada respuesta para ayudarnos a mejorar el Asistente de IA', '🗑️ Borra el historial de chat después de cada conversación para mantener respuestas precisas'],
461
+ addToCart: 'Agregar al Carrito'
462
+ }
463
+ };
464
+ const [isSpanish, setIsSpanish] = (0, _react.useState)('isSpanish', false);
465
+ const getCurrentTranslations = () => translations[isSpanish ? 'es' : 'en'];
466
+ const toggleLanguage = () => {
467
+ const newLanguage = !isSpanish;
468
+ setIsSpanish(newLanguage);
469
+
470
+ // Update messages when language changes
471
+ const currentTranslations = translations[newLanguage ? 'es' : 'en'];
472
+ if (maintenance) {
473
+ setMessages([{
474
+ type: 'ai',
475
+ text: [currentTranslations.maintenanceMessage]
476
+ }]);
477
+ } else {
478
+ setMessages([{
479
+ type: 'ai',
480
+ text: [currentTranslations.defaultMessage]
481
+ }]);
482
+ }
483
+ };
484
+ return /*#__PURE__*/_react.default.createElement(AppContext.Provider, {
485
+ value: {
486
+ isSpanish,
487
+ getCurrentTranslations,
488
+ toggleLanguage,
489
+ showModal,
490
+ setShowModal,
491
+ messages,
492
+ setMessages,
493
+ handleSend,
494
+ input,
495
+ setInput,
496
+ defaultMessage,
497
+ typingIndicator,
498
+ setTypingIndicator,
499
+ handleClearState,
500
+ theme,
501
+ handleButtonClick,
502
+ conversationStartTime,
503
+ setConversationStartTime,
504
+ lastUserMessage,
505
+ setLastUserMessage,
506
+ ghostMessage,
507
+ setGhostMessage,
508
+ ghostCard,
509
+ setGhostCard,
510
+ stopActivated,
511
+ setStopActivated,
512
+ disclaimer,
513
+ setDisclaimer,
514
+ startStreaming,
515
+ setStartStreaming,
516
+ maintenance,
517
+ setMaintenance,
518
+ feedback,
519
+ setFeedback,
520
+ handleFeedback,
521
+ feedbackOpen,
522
+ setFeedbackOpen,
523
+ writeFeedback,
524
+ setWriteFeedback,
525
+ writeAnswer,
526
+ setWriteAnswer,
527
+ BASE_URL,
528
+ lastMessageId,
529
+ setLastMessageId,
530
+ onProductCardClick,
531
+ onAddToCartClick: handleAddToCartWithMessage,
532
+ data,
533
+ sessionId,
534
+ setSessionId,
535
+ handleWrittenFeedback,
536
+ switchFeedbackOpen,
537
+ confirmDisclaimer,
538
+ formatChatHistory,
539
+ uiConfig,
540
+ handleVoiceSend,
541
+ TRACK_CLICK_URL,
542
+ ADD_TO_CART_URL,
543
+ isListening,
544
+ setIsListening,
545
+ brandLogo,
546
+ brandCloudName,
547
+ version
548
+ }
549
+ }, children);
550
+ };
551
+ exports.AppProvider = AppProvider;
552
+ //# sourceMappingURL=AppContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNativeUuid","_interopRequireDefault","_storage","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AppContext","exports","createContext","AppProvider","data","onProductCardClick","onAddToCartClick","uiConfig","children","version","brand_version","API_PREFIX","BRAND_CONFIG","isStage","env","pool","primaryColor","userMessageColor","cloudName","logoId","baseHost","loggingHost","landscape","BASE_URL","LOGGING_URL","TRACK_CLICK_URL","ADD_TO_CART_URL","theme","userMessage","botMessage","backgroundColor","textColor","textColorSecondary","inlineButtonColor","brandLogo","brandCloudName","defaultMessage","type","text","maintenanceMessage","customerToken","customer_token","showModal","setShowModal","useState","input","setInput","messages","setMessages","defaultState","conversationStartTime","setConversationStartTime","lastUserMessage","setLastUserMessage","lastMessageId","setLastMessageId","sessionId","setSessionId","isListening","setIsListening","typingIndicator","setTypingIndicator","ghostMessage","setGhostMessage","ghostCard","setGhostCard","stopActivated","setStopActivated","disclaimer","setDisclaimer","startStreaming","setStartStreaming","useEffect","init","cachedState","loadChat","toggleChat","showWelcome","length","error","console","persistState","currentState","updateChat","showIcon","stopGenerating","handleSend","maintenance","userInput","trim","String","newSessionId","uuid","v4","log","startTime","Date","toISOString","session_id","session","setNextMessage","name","prevMessages","updatedMessages","map","message","index","form","nextMessage","confirmDisclaimer","response","fetch","method","headers","body","JSON","stringify","email","user_email","ok","Error","status","handleButtonClick","buttonText","setMaintenance","handleClearState","newState","feedback","setFeedback","handleFeedback","feedbackValue","messageId","switchFeedbackOpen","prevFeedback","updatedFeedback","message_id","feedbackOpen","setFeedbackOpen","writeFeedback","setWriteFeedback","writeAnswer","setWriteAnswer","newVal","resetvalue","handleWrittenFeedback","feedback_message","correct_answer","formatChatHistory","slice","Array","isArray","content","join","handleVoiceSend","audio","transcription","handleAddToCartWithMessage","cartData","quantity","selectedUom","product","product_details","product_name","products","product_cards","translations","en","greeting","aiAssistantIntro","askAway","betaDisclaimer","helpCategories","suggestedQuestions","languageToggle","orders","invoices","branchInfo","hiMessage","hiMessageMobile","nameMessage","followUpQuestions","loadingTips","addToCart","es","isSpanish","setIsSpanish","getCurrentTranslations","toggleLanguage","newLanguage","currentTranslations","createElement","Provider","value"],"sourceRoot":"../../../src","sources":["contexts/AppContext.js"],"mappings":"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","ignoreList":[]}