@microsoft/omnichannel-chat-widget 0.1.0-main.3ac9d65 → 0.1.0-main.3aede09

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 (54) hide show
  1. package/lib/cjs/common/storage/default/defaultCacheManager.js +34 -0
  2. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +114 -0
  3. package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +86 -0
  4. package/lib/cjs/common/telemetry/TelemetryConstants.js +6 -0
  5. package/lib/cjs/components/footerstateful/FooterStateful.js +1 -8
  6. package/lib/cjs/components/livechatwidget/common/authHelper.js +65 -0
  7. package/lib/cjs/components/livechatwidget/common/createFooter.js +7 -16
  8. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +12 -0
  9. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +9 -1
  10. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +4 -0
  11. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +35 -23
  12. package/lib/cjs/components/livechatwidget/common/startChat.js +15 -34
  13. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +77 -51
  14. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +16 -2
  15. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +4 -1
  16. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +11 -0
  17. package/lib/cjs/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  18. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +2 -1
  19. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
  20. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +10 -3
  21. package/lib/esm/common/storage/default/defaultCacheManager.js +19 -0
  22. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +102 -0
  23. package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +71 -0
  24. package/lib/esm/common/telemetry/TelemetryConstants.js +6 -0
  25. package/lib/esm/components/footerstateful/FooterStateful.js +1 -8
  26. package/lib/esm/components/livechatwidget/common/authHelper.js +50 -0
  27. package/lib/esm/components/livechatwidget/common/createFooter.js +4 -15
  28. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +8 -0
  29. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +9 -1
  30. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +4 -0
  31. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +36 -25
  32. package/lib/esm/components/livechatwidget/common/startChat.js +16 -35
  33. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +76 -51
  34. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +14 -2
  35. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -1
  36. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +4 -0
  37. package/lib/esm/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  38. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +2 -1
  39. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
  40. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +8 -3
  41. package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
  42. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
  43. package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
  44. package/lib/types/common/telemetry/TelemetryConstants.d.ts +5 -1
  45. package/lib/types/components/livechatwidget/common/authHelper.d.ts +5 -0
  46. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +4 -4
  47. package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.d.ts +2 -0
  48. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +4 -0
  49. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +2 -1
  50. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +2 -0
  51. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
  52. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
  53. package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
  54. package/package.json +2 -2
@@ -91,7 +91,9 @@ var _useChatSDKStore = _interopRequireDefault(require("../../../hooks/useChatSDK
91
91
 
92
92
  var _ActivityStreamHandler = require("../common/ActivityStreamHandler");
93
93
 
94
- var _Constants = require("../../../common/Constants");
94
+ var _defaultCacheManager = require("../../../common/storage/default/defaultCacheManager");
95
+
96
+ var _defaultClientDataStoreProvider = require("../../../common/storage/default/defaultClientDataStoreProvider");
95
97
 
96
98
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
97
99
 
@@ -102,7 +104,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
102
104
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
103
105
 
104
106
  const LiveChatWidgetStateful = props => {
105
- var _props$webChatContain, _props$styleProps, _props$controlProps, _props$webChatContain3, _props$webChatContain4, _props$styleProps2, _props$controlProps14, _props$controlProps15, _props$componentOverr, _props$controlProps16, _props$componentOverr2, _props$controlProps17, _props$componentOverr3, _props$controlProps18, _props$componentOverr4, _props$controlProps19, _props$componentOverr5, _props$controlProps20, _props$componentOverr6, _props$controlProps21, _props$componentOverr7, _props$controlProps22, _props$controlProps23, _props$componentOverr8, _props$controlProps24, _props$componentOverr9, _props$controlProps25, _props$componentOverr10, _props$componentOverr11, _props$componentOverr12;
107
+ var _props$webChatContain, _props$styleProps, _chatSDK$omnichannelC, _props$controlProps, _props$controlProps2, _props$webChatContain3, _props$webChatContain4, _props$styleProps2, _props$controlProps14, _props$controlProps15, _props$componentOverr, _props$controlProps16, _props$componentOverr2, _props$controlProps17, _props$componentOverr3, _props$controlProps18, _props$componentOverr4, _props$controlProps19, _props$componentOverr5, _props$controlProps20, _props$componentOverr6, _props$controlProps21, _props$componentOverr7, _props$controlProps22, _props$controlProps23, _props$componentOverr8, _props$controlProps24, _props$componentOverr9, _props$controlProps25, _props$componentOverr10, _props$componentOverr11, _props$componentOverr12;
106
108
 
107
109
  const [state, dispatch] = (0, _useChatContextStore.default)(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
108
110
 
@@ -122,8 +124,10 @@ const LiveChatWidgetStateful = props => {
122
124
  const generalStyles = {
123
125
  root: Object.assign({}, (0, _getGeneralStylesForButton.getGeneralStylesForButton)(state), (_props$styleProps = props.styleProps) === null || _props$styleProps === void 0 ? void 0 : _props$styleProps.generalStyles)
124
126
  };
127
+ const broadcastServiceChannelName = (0, _utils.getBroadcastChannelName)(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC === void 0 ? void 0 : _chatSDK$omnichannelC.widgetId, ((_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.widgetInstanceId) ?? "");
128
+ (0, _omnichannelChatComponents.BroadcastServiceInitialize)(broadcastServiceChannelName);
125
129
  _TelemetryManager.TelemetryTimers.LcwLoadToChatButtonTimer = (0, _utils.createTimer)();
126
- const widgetElementId = ((_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.id) || "oc-lcw";
130
+ const widgetElementId = ((_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.id) || "oc-lcw";
127
131
  const currentMessageCountRef = (0, _react2.useRef)(0);
128
132
  let widgetStateEventName = "";
129
133
 
@@ -150,32 +154,39 @@ const LiveChatWidgetStateful = props => {
150
154
  };
151
155
 
152
156
  (0, _react2.useEffect)(() => {
153
- var _chatSDK$omnichannelC, _props$controlProps2, _props$controlProps3, _props$controlProps4, _props$controlProps5, _props$controlProps7, _props$chatConfig, _props$chatConfig$Cha, _props$controlProps8, _props$reconnectChatP, _props$chatConfig2, _props$chatConfig2$Li;
157
+ var _props$controlProps4, _props$controlProps5, _props$controlProps6, _props$controlProps8, _props$chatConfig, _props$chatConfig$Cha, _props$controlProps9, _props$reconnectChatP, _props$chatConfig2, _props$chatConfig2$Li, _props$reconnectChatP4, _state$domainStates;
158
+
159
+ // Add default localStorage support for widget
160
+ if (props.contextDataStore === undefined) {
161
+ var _chatSDK$omnichannelC2, _chatSDK$omnichannelC3, _props$controlProps3;
162
+
163
+ (0, _defaultCacheManager.registerBroadcastServiceForLocalStorage)(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC3 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC3 === void 0 ? void 0 : _chatSDK$omnichannelC3.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : _props$controlProps3.widgetInstanceId) ?? "");
164
+ _DataStoreManager.DataStoreManager.clientDataStore = (0, _defaultClientDataStoreProvider.defaultClientDataStoreProvider)();
165
+ } else {
166
+ _DataStoreManager.DataStoreManager.clientDataStore = props.contextDataStore;
167
+ }
154
168
 
155
- const broadcastServiceChannelName = (0, _utils.getBroadcastChannelName)(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC === void 0 ? void 0 : _chatSDK$omnichannelC.widgetId, ((_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.widgetInstanceId) ?? "");
156
- (0, _omnichannelChatComponents.BroadcastServiceInitialize)(broadcastServiceChannelName);
157
169
  (0, _registerTelemetryLoggers.registerTelemetryLoggers)(props, dispatch);
158
170
  (0, _createInternetConnectionChangeHandler.createInternetConnectionChangeHandler)();
159
- _DataStoreManager.DataStoreManager.clientDataStore = props.contextDataStore ?? undefined;
160
171
  dispatch({
161
172
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_WIDGET_ELEMENT_ID,
162
173
  payload: widgetElementId
163
174
  });
164
175
  dispatch({
165
176
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_SKIP_CHAT_BUTTON_RENDERING,
166
- payload: ((_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : _props$controlProps3.skipChatButtonRendering) || false
177
+ payload: ((_props$controlProps4 = props.controlProps) === null || _props$controlProps4 === void 0 ? void 0 : _props$controlProps4.skipChatButtonRendering) || false
167
178
  });
168
179
  dispatch({
169
180
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_E2VV_ENABLED,
170
181
  payload: false
171
182
  });
172
183
 
173
- if ((_props$controlProps4 = props.controlProps) !== null && _props$controlProps4 !== void 0 && _props$controlProps4.widgetInstanceId && !(0, _utils.isNullOrEmptyString)((_props$controlProps5 = props.controlProps) === null || _props$controlProps5 === void 0 ? void 0 : _props$controlProps5.widgetInstanceId)) {
174
- var _props$controlProps6;
184
+ if ((_props$controlProps5 = props.controlProps) !== null && _props$controlProps5 !== void 0 && _props$controlProps5.widgetInstanceId && !(0, _utils.isNullOrEmptyString)((_props$controlProps6 = props.controlProps) === null || _props$controlProps6 === void 0 ? void 0 : _props$controlProps6.widgetInstanceId)) {
185
+ var _props$controlProps7;
175
186
 
176
187
  dispatch({
177
188
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_WIDGET_INSTANCE_ID,
178
- payload: (_props$controlProps6 = props.controlProps) === null || _props$controlProps6 === void 0 ? void 0 : _props$controlProps6.widgetInstanceId
189
+ payload: (_props$controlProps7 = props.controlProps) === null || _props$controlProps7 === void 0 ? void 0 : _props$controlProps7.widgetInstanceId
179
190
  });
180
191
  }
181
192
 
@@ -186,35 +197,48 @@ const LiveChatWidgetStateful = props => {
186
197
  });
187
198
  }); // Initialize global dir
188
199
 
189
- const globalDir = ((_props$controlProps7 = props.controlProps) === null || _props$controlProps7 === void 0 ? void 0 : _props$controlProps7.dir) ?? (0, _utils.getLocaleDirection)((_props$chatConfig = props.chatConfig) === null || _props$chatConfig === void 0 ? void 0 : (_props$chatConfig$Cha = _props$chatConfig.ChatWidgetLanguage) === null || _props$chatConfig$Cha === void 0 ? void 0 : _props$chatConfig$Cha.msdyn_localeid);
200
+ const globalDir = ((_props$controlProps8 = props.controlProps) === null || _props$controlProps8 === void 0 ? void 0 : _props$controlProps8.dir) ?? (0, _utils.getLocaleDirection)((_props$chatConfig = props.chatConfig) === null || _props$chatConfig === void 0 ? void 0 : (_props$chatConfig$Cha = _props$chatConfig.ChatWidgetLanguage) === null || _props$chatConfig$Cha === void 0 ? void 0 : _props$chatConfig$Cha.msdyn_localeid);
190
201
  dispatch({
191
202
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_GLOBAL_DIR,
192
203
  payload: globalDir
193
204
  });
194
205
 
195
- if (!((_props$controlProps8 = props.controlProps) !== null && _props$controlProps8 !== void 0 && _props$controlProps8.skipChatButtonRendering) && (_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
196
- var _props$reconnectChatP2;
206
+ if (!((_props$controlProps9 = props.controlProps) !== null && _props$controlProps9 !== void 0 && _props$controlProps9.skipChatButtonRendering) && (_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
207
+ var _props$reconnectChatP2, _props$reconnectChatP3;
197
208
 
198
- (0, _reconnectChatHelper.startUnauthenticatedReconnectChat)(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.reconnectId, _startChat.initStartChat);
209
+ (0, _reconnectChatHelper.startUnauthenticatedReconnectChat)(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.isReconnectEnabled, (_props$reconnectChatP3 = props.reconnectChatPaneProps) === null || _props$reconnectChatP3 === void 0 ? void 0 : _props$reconnectChatP3.reconnectId, _startChat.initStartChat);
199
210
  return;
200
- } // Check if auth settings enabled, do not connect to existing chat from cache during refresh/re-load
211
+ } // Checks if reconnectId is present for auth chat. If it is present, then it shows reconnect chat pane,
212
+ // where customer can choose to continue previous conversation or start new conversation
201
213
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
202
214
 
203
215
 
204
216
  const isAuthenticationSettingsEnabled = (_props$chatConfig2 = props.chatConfig) !== null && _props$chatConfig2 !== void 0 && (_props$chatConfig2$Li = _props$chatConfig2.LiveChatConfigAuthSettings) !== null && _props$chatConfig2$Li !== void 0 && _props$chatConfig2$Li.msdyn_javascriptclientfunction ? true : false;
205
217
 
206
- if (isAuthenticationSettingsEnabled === false) {
207
- var _state$domainStates;
218
+ if (!state.appStates.skipChatButtonRendering && state.appStates.conversationState === _ConversationState.ConversationState.Active && isAuthenticationSettingsEnabled === true && (_props$reconnectChatP4 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP4 !== void 0 && _props$reconnectChatP4.isReconnectEnabled) {
219
+ (0, _reconnectChatHelper.getReconnectIdForAuthenticatedChat)(props, chatSDK).then(authReconnectId => {
220
+ if (authReconnectId && !state.appStates.reconnectId) {
221
+ dispatch({
222
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
223
+ payload: authReconnectId
224
+ });
225
+ dispatch({
226
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
227
+ payload: _ConversationState.ConversationState.ReconnectChat
228
+ });
229
+ }
230
+ });
231
+ return;
232
+ }
208
233
 
209
- if (!(0, _utils.isUndefinedOrEmpty)((_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.liveChatContext) && state.appStates.conversationState === _ConversationState.ConversationState.Active) {
210
- var _state$domainStates2;
234
+ if (!state.appStates.skipChatButtonRendering && !(0, _utils.isUndefinedOrEmpty)((_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.liveChatContext) && state.appStates.conversationState === _ConversationState.ConversationState.Active) {
235
+ var _state$domainStates2;
211
236
 
212
- const optionalParams = {
213
- liveChatContext: (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.liveChatContext
214
- };
215
- (0, _startChat.initStartChat)(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams);
216
- return;
217
- }
237
+ const optionalParams = {
238
+ liveChatContext: (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.liveChatContext
239
+ };
240
+ (0, _startChat.initStartChat)(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams);
241
+ return;
218
242
  } // All other case should show start chat button, skipChatButtonRendering will take care of it own
219
243
 
220
244
 
@@ -226,16 +250,16 @@ const LiveChatWidgetStateful = props => {
226
250
 
227
251
  (0, _react2.useEffect)(() => {
228
252
  if (state.appStates.skipChatButtonRendering) {
229
- var _props$reconnectChatP3;
253
+ var _props$reconnectChatP5;
230
254
 
231
255
  _omnichannelChatComponents.BroadcastService.postMessage({
232
256
  eventName: _TelemetryConstants.BroadcastEvent.ChatInitiated
233
257
  });
234
258
 
235
- if ((_props$reconnectChatP3 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP3 !== void 0 && _props$reconnectChatP3.reconnectId && !state.appStates.reconnectId) {
236
- var _props$reconnectChatP4, _props$reconnectChatP5;
259
+ if ((_props$reconnectChatP5 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP5 !== void 0 && _props$reconnectChatP5.reconnectId && !state.appStates.reconnectId) {
260
+ var _props$reconnectChatP6, _props$reconnectChatP7, _props$reconnectChatP8;
237
261
 
238
- (0, _reconnectChatHelper.handleUnauthenticatedReconnectChat)(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, (_props$reconnectChatP4 = props.reconnectChatPaneProps) === null || _props$reconnectChatP4 === void 0 ? void 0 : _props$reconnectChatP4.reconnectId, _startChat.initStartChat, (_props$reconnectChatP5 = props.reconnectChatPaneProps) === null || _props$reconnectChatP5 === void 0 ? void 0 : _props$reconnectChatP5.redirectInSameWindow);
262
+ (0, _reconnectChatHelper.handleUnauthenticatedReconnectChat)(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, (_props$reconnectChatP6 = props.reconnectChatPaneProps) === null || _props$reconnectChatP6 === void 0 ? void 0 : _props$reconnectChatP6.isReconnectEnabled, (_props$reconnectChatP7 = props.reconnectChatPaneProps) === null || _props$reconnectChatP7 === void 0 ? void 0 : _props$reconnectChatP7.reconnectId, _startChat.initStartChat, (_props$reconnectChatP8 = props.reconnectChatPaneProps) === null || _props$reconnectChatP8 === void 0 ? void 0 : _props$reconnectChatP8.redirectInSameWindow);
239
263
  } else {
240
264
  (0, _reconnectChatHelper.getReconnectIdForAuthenticatedChat)(props, chatSDK).then(authReconnectId => {
241
265
  if (authReconnectId && !state.appStates.reconnectId) {
@@ -262,7 +286,7 @@ const LiveChatWidgetStateful = props => {
262
286
  }, [state.appStates.skipChatButtonRendering]); // useEffect for when skip chat button rendering
263
287
 
264
288
  (0, _react2.useEffect)(() => {
265
- var _chatSDK$omnichannelC6, _chatSDK$omnichannelC7, _props$controlProps11;
289
+ var _chatSDK$omnichannelC8, _chatSDK$omnichannelC9, _props$controlProps12;
266
290
 
267
291
  // Add the custom context on receiving the SetCustomContext event
268
292
  _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.BroadcastEvent.SetCustomContext).subscribe(msg => {
@@ -283,7 +307,7 @@ const LiveChatWidgetStateful = props => {
283
307
  Description: "Start proactive chat event received."
284
308
  });
285
309
 
286
- if (canStartProactiveChat.current) {
310
+ if (canStartProactiveChat.current === true) {
287
311
  var _msg$payload, _msg$payload2, _msg$payload3;
288
312
 
289
313
  (0, _startProactiveChat.startProactiveChat)(dispatch, msg === null || msg === void 0 ? void 0 : (_msg$payload = msg.payload) === null || _msg$payload === void 0 ? void 0 : _msg$payload.notificationConfig, msg === null || msg === void 0 ? void 0 : (_msg$payload2 = msg.payload) === null || _msg$payload2 === void 0 ? void 0 : _msg$payload2.enablePreChat, msg === null || msg === void 0 ? void 0 : (_msg$payload3 = msg.payload) === null || _msg$payload3 === void 0 ? void 0 : _msg$payload3.inNewWindow);
@@ -297,14 +321,14 @@ const LiveChatWidgetStateful = props => {
297
321
 
298
322
 
299
323
  _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.BroadcastEvent.StartChat).subscribe(() => {
300
- var _chatSDK$omnichannelC2, _chatSDK$omnichannelC3, _props$controlProps9;
324
+ var _chatSDK$omnichannelC4, _chatSDK$omnichannelC5, _props$controlProps10;
301
325
 
302
326
  _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
303
327
  Event: _TelemetryConstants.TelemetryEvent.StartChatEventRecevied,
304
328
  Description: "Start chat event received."
305
329
  });
306
330
 
307
- const persistedState = (0, _utils.getStateFromCache)(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC3 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC3 === void 0 ? void 0 : _chatSDK$omnichannelC3.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps9 = props.controlProps) === null || _props$controlProps9 === void 0 ? void 0 : _props$controlProps9.widgetInstanceId) ?? ""); // Chat not found in cache
331
+ const persistedState = (0, _utils.getStateFromCache)(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC4 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC4 === void 0 ? void 0 : _chatSDK$omnichannelC4.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC5 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC5 === void 0 ? void 0 : _chatSDK$omnichannelC5.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps10 = props.controlProps) === null || _props$controlProps10 === void 0 ? void 0 : _props$controlProps10.widgetInstanceId) ?? ""); // Chat not found in cache
308
332
 
309
333
  if (persistedState === undefined) {
310
334
  _omnichannelChatComponents.BroadcastService.postMessage({
@@ -348,10 +372,10 @@ const LiveChatWidgetStateful = props => {
348
372
 
349
373
  _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.BroadcastEvent.InitiateEndChat).subscribe(async () => {
350
374
  if (state.appStates.skipChatButtonRendering !== true) {
351
- var _chatSDK$omnichannelC4, _chatSDK$omnichannelC5, _props$controlProps10;
375
+ var _chatSDK$omnichannelC6, _chatSDK$omnichannelC7, _props$controlProps11;
352
376
 
353
377
  // This is to ensure to get latest state from cache in multitab
354
- const persistedState = (0, _utils.getStateFromCache)(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC4 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC4 === void 0 ? void 0 : _chatSDK$omnichannelC4.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC5 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC5 === void 0 ? void 0 : _chatSDK$omnichannelC5.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps10 = props.controlProps) === null || _props$controlProps10 === void 0 ? void 0 : _props$controlProps10.widgetInstanceId) ?? "");
378
+ const persistedState = (0, _utils.getStateFromCache)(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC6 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC6 === void 0 ? void 0 : _chatSDK$omnichannelC6.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC7 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC7 === void 0 ? void 0 : _chatSDK$omnichannelC7.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps11 = props.controlProps) === null || _props$controlProps11 === void 0 ? void 0 : _props$controlProps11.widgetInstanceId) ?? "");
355
379
 
356
380
  if (persistedState && persistedState.appStates.conversationState === _ConversationState.ConversationState.Active) {
357
381
  (0, _endChat.prepareEndChat)(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state);
@@ -373,7 +397,7 @@ const LiveChatWidgetStateful = props => {
373
397
  }); // Listen to end chat event from other tabs
374
398
 
375
399
 
376
- const endChatEventName = (0, _utils.getWidgetEndChatEventName)(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC6 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC6 === void 0 ? void 0 : _chatSDK$omnichannelC6.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC7 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC7 === void 0 ? void 0 : _chatSDK$omnichannelC7.widgetId, ((_props$controlProps11 = props.controlProps) === null || _props$controlProps11 === void 0 ? void 0 : _props$controlProps11.widgetInstanceId) ?? "");
400
+ const endChatEventName = (0, _utils.getWidgetEndChatEventName)(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC8 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC8 === void 0 ? void 0 : _chatSDK$omnichannelC8.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC9 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC9 === void 0 ? void 0 : _chatSDK$omnichannelC9.widgetId, ((_props$controlProps12 = props.controlProps) === null || _props$controlProps12 === void 0 ? void 0 : _props$controlProps12.widgetInstanceId) ?? "");
377
401
 
378
402
  _omnichannelChatComponents.BroadcastService.getMessageByEventName(endChatEventName).subscribe(async () => {
379
403
  (0, _endChat.endChat)(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, false);
@@ -459,23 +483,25 @@ const LiveChatWidgetStateful = props => {
459
483
  }, [(_props$webChatContain3 = props.webChatContainerProps) === null || _props$webChatContain3 === void 0 ? void 0 : _props$webChatContain3.webChatStyles]); // Publish chat widget state
460
484
 
461
485
  (0, _react2.useEffect)(() => {
462
- var _props$controlProps12, _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic, _props$controlProps13;
486
+ var _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic, _props$controlProps13;
463
487
 
464
488
  // Only activate these windows events when conversation state is active and chat widget is in popout mode
465
489
  // Ghost chat scenarios
466
- if (state.appStates.conversationState === _ConversationState.ConversationState.Active && ((_props$controlProps12 = props.controlProps) === null || _props$controlProps12 === void 0 ? void 0 : _props$controlProps12.skipChatButtonRendering) === true) {
467
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
468
- window.onbeforeunload = function () {
469
- const prompt = _Constants.Constants.BrowserUnloadConfirmationMessage;
470
- return prompt;
471
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
472
-
473
-
474
- window.onunload = function () {
475
- initiateEndChatOnBrowserUnload();
476
- };
477
- }
478
490
 
491
+ /* COMMENTING THIS CODE FOR PARITY WITH OLD LCW
492
+ if (state.appStates.conversationState === ConversationState.Active &&
493
+ props.controlProps?.skipChatButtonRendering === true) {
494
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
495
+
496
+ window.onbeforeunload = function () {
497
+ const prompt = Constants.BrowserUnloadConfirmationMessage;
498
+ return prompt;
499
+ };
500
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
501
+ window.onunload = function () {
502
+ initiateEndChatOnBrowserUnload();
503
+ };
504
+ }*/
479
505
  widgetStateEventName = (0, _utils.getWidgetCacheId)(props === null || props === void 0 ? void 0 : (_props$chatSDK = props.chatSDK) === null || _props$chatSDK === void 0 ? void 0 : (_props$chatSDK$omnich = _props$chatSDK.omnichannelConfig) === null || _props$chatSDK$omnich === void 0 ? void 0 : _props$chatSDK$omnich.orgId, props === null || props === void 0 ? void 0 : (_props$chatSDK2 = props.chatSDK) === null || _props$chatSDK2 === void 0 ? void 0 : (_props$chatSDK2$omnic = _props$chatSDK2.omnichannelConfig) === null || _props$chatSDK2$omnic === void 0 ? void 0 : _props$chatSDK2$omnic.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps13 = props.controlProps) === null || _props$controlProps13 === void 0 ? void 0 : _props$controlProps13.widgetInstanceId) ?? "");
480
506
  const chatWidgetStateChangeEvent = {
481
507
  eventName: widgetStateEventName,
@@ -484,7 +510,7 @@ const LiveChatWidgetStateful = props => {
484
510
  };
485
511
 
486
512
  _omnichannelChatComponents.BroadcastService.postMessage(chatWidgetStateChangeEvent);
487
- }, [state.appStates.conversationState]);
513
+ }, [state]);
488
514
  const webChatProps = (0, _initWebChatComposer.initWebChatComposer)(props, chatSDK, state, dispatch, setWebChatStyles);
489
515
 
490
516
  const setPostChatContextRelay = () => (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch); // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -33,6 +33,10 @@ var _Constants = require("../../common/Constants");
33
33
 
34
34
  var _BotMagicCodeStore = require("./webchatcontroller/BotMagicCodeStore");
35
35
 
36
+ var _defaultAdaptiveCardStyles = require("./common/defaultStyles/defaultAdaptiveCardStyles");
37
+
38
+ var _defaultReceivedMessageAnchorStyles = require("./webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles");
39
+
36
40
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
37
41
 
38
42
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -66,6 +70,8 @@ const createMagicCodeSuccessResponse = signin => {
66
70
  };
67
71
 
68
72
  const WebChatContainerStateful = props => {
73
+ var _props$adaptiveCardSt, _props$adaptiveCardSt2, _props$renderingMiddl, _props$renderingMiddl2, _props$renderingMiddl3, _props$renderingMiddl4;
74
+
69
75
  const {
70
76
  BasicWebChat
71
77
  } = _botframeworkWebchat.Components;
@@ -139,10 +145,18 @@ const WebChatContainerStateful = props => {
139
145
  magicCodeBroadcastChannel.addEventListener(broadcastChannelMessageEvent, eventListener);
140
146
  }, []);
141
147
  return /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null, /*#__PURE__*/_react2.default.createElement("style", null, `
148
+
149
+ .webchat__bubble__content>div#ms_lcw_webchat_adaptive_card {
150
+ background: ${(props === null || props === void 0 ? void 0 : (_props$adaptiveCardSt = props.adaptiveCardStyles) === null || _props$adaptiveCardSt === void 0 ? void 0 : _props$adaptiveCardSt.background) ?? _defaultAdaptiveCardStyles.defaultAdaptiveCardStyles.background};
151
+ }
152
+
153
+ div[class="ac-textBlock"]>p{color:${(props === null || props === void 0 ? void 0 : (_props$adaptiveCardSt2 = props.adaptiveCardStyles) === null || _props$adaptiveCardSt2 === void 0 ? void 0 : _props$adaptiveCardSt2.color) ?? _defaultAdaptiveCardStyles.defaultAdaptiveCardStyles.color};}
154
+
142
155
  .ms_lcw_webchat_received_message img.webchat__markdown__external-link-icon {
143
156
  background-image : url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIzIDMgMTggMTgiICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik03LjI1MDEgNC41MDAxN0gxMC43NDk1QzExLjE2MzcgNC41MDAxNyAxMS40OTk1IDQuODM1OTYgMTEuNDk5NSA1LjI1MDE3QzExLjQ5OTUgNS42Mjk4NiAxMS4yMTczIDUuOTQzNjYgMTAuODUxMyA1Ljk5MzMyTDEwLjc0OTUgNi4wMDAxN0g3LjI0OTc0QzYuMDcwNzkgNS45OTk2MSA1LjEwMzQ5IDYuOTA2NTYgNS4wMDc4NiA4LjA2MTEyTDUuMDAwMjggOC4yMjAwM0w1LjAwMzEyIDE2Ljc1MDdDNS4wMDM0MyAxNy45NDE1IDUuOTI4ODUgMTguOTE2MSA3LjA5OTY2IDE4Ljk5NDlMNy4yNTM3MSAxOS4wMDAxTDE1Ljc1MTggMTguOTg4NEMxNi45NDE1IDE4Ljk4NjggMTcuOTE0NSAxOC4wNjIgMTcuOTkzNSAxNi44OTIzTDE3Ljk5ODcgMTYuNzM4NFYxMy4yMzIxQzE3Ljk5ODcgMTIuODE3OSAxOC4zMzQ1IDEyLjQ4MjEgMTguNzQ4NyAxMi40ODIxQzE5LjEyODQgMTIuNDgyMSAxOS40NDIyIDEyLjc2NDMgMTkuNDkxOCAxMy4xMzAzTDE5LjQ5ODcgMTMuMjMyMVYxNi43Mzg0QzE5LjQ5ODcgMTguNzQwNyAxNy45MjkzIDIwLjM3NjkgMTUuOTUyOCAyMC40ODI5TDE1Ljc1MzggMjAuNDg4NEw3LjI1ODI3IDIwLjUwMDFMNy4wNTQ5NSAyMC40OTQ5QzUuMTQyMzkgMjAuMzk1NCAzLjYwODk1IDE4Ljg2MjcgMy41MDgzNyAxNi45NTAyTDMuNTAzMTIgMTYuNzUxMUwzLjUwMDg5IDguMjUyN0wzLjUwNTI5IDguMDUwMkMzLjYwNTM5IDYuMTM3NDkgNS4xMzg2NyA0LjYwNDQ5IDcuMDUwOTYgNC41MDUyN0w3LjI1MDEgNC41MDAxN0gxMC43NDk1SDcuMjUwMVpNMTMuNzQ4MSAzLjAwMTQ2TDIwLjMwMTggMy4wMDE5N0wyMC40MDE0IDMuMDE1NzVMMjAuNTAyMiAzLjA0MzkzTDIwLjU1OSAzLjA2ODAzQzIwLjYxMjIgMy4wOTEyMiAyMC42NjM0IDMuMTIxNjMgMjAuNzExMSAzLjE1ODg1TDIwLjc4MDQgMy4yMjE1NkwyMC44NjQxIDMuMzIwMTRMMjAuOTE4MyAzLjQxMDI1TDIwLjk1NyAzLjUwMDU3TDIwLjk3NjIgMy41NjQ3NkwyMC45ODk4IDMuNjI4NjJMMjAuOTk5MiAzLjcyMjgyTDIwLjk5OTcgMTAuMjU1NEMyMC45OTk3IDEwLjY2OTYgMjAuNjYzOSAxMS4wMDU0IDIwLjI0OTcgMTEuMDA1NEMxOS44NyAxMS4wMDU0IDE5LjU1NjIgMTAuNzIzMiAxOS41MDY1IDEwLjM1NzFMMTkuNDk5NyAxMC4yNTU0TDE5LjQ5ODkgNS41NjE0N0wxMi4yNzk3IDEyLjc4NDdDMTIuMDEzNCAxMy4wNTEgMTEuNTk2OCAxMy4wNzUzIDExLjMwMzEgMTIuODU3NUwxMS4yMTkgMTIuNzg0OUMxMC45NTI3IDEyLjUxODcgMTAuOTI4NCAxMi4xMDIxIDExLjE0NjIgMTEuODA4NEwxMS4yMTg4IDExLjcyNDNMMTguNDM2OSA0LjUwMTQ2SDEzLjc0ODFDMTMuMzY4NCA0LjUwMTQ2IDEzLjA1NDYgNC4yMTkzMSAxMy4wMDUgMy44NTMyNEwxMi45OTgxIDMuNzUxNDZDMTIuOTk4MSAzLjM3MTc3IDEzLjI4MDMgMy4wNTc5NyAxMy42NDY0IDMuMDA4MzFMMTMuNzQ4MSAzLjAwMTQ2WiIgZmlsbD0iI0ZGRkZGRiIgLz48L3N2Zz4) !important;
144
157
  height: '.75em';
145
- marginLeft: '.25em';
158
+ marginLeft: '.25em';
159
+ filter:${(props === null || props === void 0 ? void 0 : (_props$renderingMiddl = props.renderingMiddlewareProps) === null || _props$renderingMiddl === void 0 ? void 0 : (_props$renderingMiddl2 = _props$renderingMiddl.receivedMessageAnchorStyles) === null || _props$renderingMiddl2 === void 0 ? void 0 : _props$renderingMiddl2.filter) ?? "none"};
146
160
  }
147
161
  pre {
148
162
  white-space: pre-wrap;
@@ -155,7 +169,7 @@ const WebChatContainerStateful = props => {
155
169
  .ms_lcw_webchat_received_message a:visited,
156
170
  .ms_lcw_webchat_received_message a:hover,
157
171
  .ms_lcw_webchat_received_message a:active {
158
- color: white;
172
+ color: ${(props === null || props === void 0 ? void 0 : (_props$renderingMiddl3 = props.renderingMiddlewareProps) === null || _props$renderingMiddl3 === void 0 ? void 0 : (_props$renderingMiddl4 = _props$renderingMiddl3.receivedMessageAnchorStyles) === null || _props$renderingMiddl4 === void 0 ? void 0 : _props$renderingMiddl4.color) ?? (_defaultReceivedMessageAnchorStyles.defaultReceivedMessageAnchorStyles === null || _defaultReceivedMessageAnchorStyles.defaultReceivedMessageAnchorStyles === void 0 ? void 0 : _defaultReceivedMessageAnchorStyles.defaultReceivedMessageAnchorStyles.color)};
159
173
  } `), /*#__PURE__*/_react2.default.createElement(_react.Stack, {
160
174
  styles: containerStyles
161
175
  }, /*#__PURE__*/_react2.default.createElement(BasicWebChat, null)));
@@ -13,6 +13,8 @@ var _defaultWebChatStatefulProps = require("./defaultWebChatStatefulProps");
13
13
 
14
14
  var _defaultWebChatContainerStatefulStyles = require("../defaultStyles/defaultWebChatContainerStatefulStyles");
15
15
 
16
+ var _defaultAdaptiveCardStyles = require("../defaultStyles/defaultAdaptiveCardStyles");
17
+
16
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
19
 
18
20
  const defaultWebChatContainerStatefulProps = {
@@ -21,6 +23,7 @@ const defaultWebChatContainerStatefulProps = {
21
23
  containerStyles: _defaultWebChatStatefulContainerStyles.defaultWebChatStatefulContainerStyles,
22
24
  disableNewLineMarkdownSupport: false,
23
25
  disableMarkdownMessageFormatting: false,
24
- directLine: new _mockadapter.default()
26
+ directLine: new _mockadapter.default(),
27
+ adaptiveCardStyles: _defaultAdaptiveCardStyles.defaultAdaptiveCardStyles
25
28
  };
26
29
  exports.defaultWebChatContainerStatefulProps = defaultWebChatContainerStatefulProps;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.defaultAdaptiveCardStyles = void 0;
7
+ const defaultAdaptiveCardStyles = {
8
+ background: "white",
9
+ color: "black"
10
+ };
11
+ exports.defaultAdaptiveCardStyles = defaultAdaptiveCardStyles;
@@ -76,7 +76,8 @@ const activityStatusMiddleware = () => next => args => {
76
76
  args: args,
77
77
  role: current_role,
78
78
  name: current_name
79
- }));
79
+ })) // eslint-disable-next-line @typescript-eslint/no-explicit-any
80
+ ;
80
81
  }
81
82
  };
82
83
 
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.defaultReceivedMessageAnchorStyles = void 0;
7
+ const defaultReceivedMessageAnchorStyles = {
8
+ color: "white"
9
+ };
10
+ exports.defaultReceivedMessageAnchorStyles = defaultReceivedMessageAnchorStyles;
@@ -9,11 +9,18 @@ var _ConversationState = require("./ConversationState");
9
9
 
10
10
  var _defaultMiddlewareLocalizedTexts = require("../../components/webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts");
11
11
 
12
+ var _utils = require("../../common/utils");
13
+
14
+ var _defaultClientDataStoreProvider = require("../../common/storage/default/defaultClientDataStoreProvider");
15
+
12
16
  const getLiveChatWidgetContextInitialState = props => {
13
- var _props$webChatContain;
17
+ var _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic, _props$controlProps, _props$webChatContain;
18
+
19
+ const widgetCacheId = (0, _utils.getWidgetCacheId)(props === null || props === void 0 ? void 0 : (_props$chatSDK = props.chatSDK) === null || _props$chatSDK === void 0 ? void 0 : (_props$chatSDK$omnich = _props$chatSDK.omnichannelConfig) === null || _props$chatSDK$omnich === void 0 ? void 0 : _props$chatSDK$omnich.orgId, props === null || props === void 0 ? void 0 : (_props$chatSDK2 = props.chatSDK) === null || _props$chatSDK2 === void 0 ? void 0 : (_props$chatSDK2$omnic = _props$chatSDK2.omnichannelConfig) === null || _props$chatSDK2$omnic === void 0 ? void 0 : _props$chatSDK2$omnic.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.widgetInstanceId) ?? "");
20
+ const initialState = (0, _defaultClientDataStoreProvider.defaultClientDataStoreProvider)().getData(widgetCacheId, "localStorage");
14
21
 
15
- if (props !== null && props !== void 0 && props.liveChatContextFromCache) {
16
- return props === null || props === void 0 ? void 0 : props.liveChatContextFromCache;
22
+ if (!(0, _utils.isNullOrUndefined)(initialState)) {
23
+ return JSON.parse(initialState);
17
24
  }
18
25
 
19
26
  const LiveChatWidgetContextInitialState = {
@@ -0,0 +1,19 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
3
+ import { BroadcastService } from "@microsoft/omnichannel-chat-components";
4
+ import { getWidgetCacheId } from "../../utils";
5
+ import { defaultClientDataStoreProvider } from "./defaultClientDataStoreProvider";
6
+ export class defaultCacheManager {}
7
+
8
+ _defineProperty(defaultCacheManager, "InternalCache", {});
9
+
10
+ export const registerBroadcastServiceForLocalStorage = (orgid, widgetId, widgetInstanceId) => {
11
+ const widgetCacheId = getWidgetCacheId(orgid, widgetId, widgetInstanceId);
12
+ BroadcastService.getMessageByEventName(widgetCacheId).subscribe(msg => {
13
+ try {
14
+ defaultClientDataStoreProvider().setData(widgetCacheId, JSON.stringify(msg.payload), "localStorage");
15
+ } catch (error) {
16
+ console.error("Error in setting data to localstorage", error);
17
+ }
18
+ });
19
+ };
@@ -0,0 +1,102 @@
1
+ import { inMemoryDataStore } from "./defaultInMemoryDataStore";
2
+ import { TelemetryHelper } from "../../telemetry/TelemetryHelper";
3
+ import { LogLevel, TelemetryEvent } from "../../telemetry/TelemetryConstants";
4
+ export const defaultClientDataStoreProvider = () => {
5
+ const isCookieAllowed = () => {
6
+ try {
7
+ localStorage;
8
+ sessionStorage;
9
+ return true;
10
+ } catch (error) {
11
+ console.error("Third party cookie blocked");
12
+ return false;
13
+ }
14
+ };
15
+
16
+ const TtlInMs = 15 * 60 * 1000; // 15 mins
17
+
18
+ const dataStoreProvider = {
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
+ setData: (key, data, type) => {
21
+ if (isCookieAllowed()) {
22
+ try {
23
+ if (key) {
24
+ const now = new Date();
25
+ const item = {
26
+ data: data,
27
+ expiry: now.getTime() + TtlInMs
28
+ };
29
+ const strItem = JSON.stringify(item);
30
+
31
+ if (type === "localStorage") {
32
+ localStorage.setItem(key, strItem);
33
+ } else {
34
+ sessionStorage.setItem(key, strItem);
35
+ }
36
+ }
37
+ } catch (error) {
38
+ TelemetryHelper.logConfigDataEvent(LogLevel.ERROR, {
39
+ Event: TelemetryEvent.ClientDataStoreProviderFailed,
40
+ ExceptionDetails: error,
41
+ Description: "Unable to store data in localStorage."
42
+ });
43
+ }
44
+ } else {
45
+ const dataToCache = {
46
+ key: key,
47
+ data: data,
48
+ type: type
49
+ };
50
+ parent.postMessage(dataToCache, "*");
51
+ }
52
+ },
53
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
54
+ getData: (key, type) => {
55
+ if (isCookieAllowed()) {
56
+ let item;
57
+
58
+ if (type === "localStorage") {
59
+ item = localStorage.getItem(key);
60
+ } else {
61
+ item = sessionStorage.getItem(key);
62
+ } //Return item if not expired
63
+
64
+
65
+ let itemInJson = undefined;
66
+
67
+ if (item !== null) {
68
+ itemInJson = JSON.parse(item);
69
+ const now = new Date(); // compare the expiry time of the item with the current time
70
+
71
+ if (now.getTime() > itemInJson.expiry) {
72
+ // If the item is expired, delete the item from storage
73
+ // and return null
74
+ localStorage.removeItem(key);
75
+ return null;
76
+ }
77
+
78
+ return itemInJson.data;
79
+ }
80
+ } else {
81
+ // get data from in memory db when cookie is disabled
82
+ return inMemoryDataStore().getData(key);
83
+ }
84
+ },
85
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
86
+ removeData: (key, type) => {
87
+ if (isCookieAllowed()) {
88
+ if (key) {
89
+ if (type === "localStorage") {
90
+ return localStorage.removeItem(key);
91
+ } else {
92
+ return sessionStorage.removeItem(key);
93
+ }
94
+ }
95
+ } else {
96
+ // get data from in memory db when cookie is disabled
97
+ return inMemoryDataStore().removeData(key);
98
+ }
99
+ }
100
+ };
101
+ return dataStoreProvider;
102
+ };
@@ -0,0 +1,71 @@
1
+ import { LogLevel, TelemetryEvent } from "../../telemetry/TelemetryConstants";
2
+ import { TelemetryHelper } from "../../telemetry/TelemetryHelper";
3
+ import { defaultCacheManager } from "./defaultCacheManager";
4
+ export const defaultInitializeInMemoryDataStore = widgetId => {
5
+ try {
6
+ localStorage;
7
+ } catch (error) {
8
+ // Register below events when localStorage is not accessible
9
+ // Listening to event raised from client browser
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ window.addEventListener("message", function (e) {
12
+ try {
13
+ if (e.data.key) {
14
+ const browserData = e.data;
15
+
16
+ if (defaultCacheManager.InternalCache[browserData.key]) {
17
+ delete defaultCacheManager.InternalCache[browserData.key];
18
+ }
19
+
20
+ defaultCacheManager.InternalCache[browserData.key] = browserData.data;
21
+ }
22
+ } catch (error) {
23
+ TelemetryHelper.logConfigDataEvent(LogLevel.ERROR, {
24
+ Event: TelemetryEvent.InMemoryDataStoreFailed,
25
+ ExceptionDetails: error,
26
+ Description: "Unable to register default in-memory cache."
27
+ });
28
+ }
29
+ }); // send cache initialize message to client
30
+
31
+ if (defaultCacheManager.InternalCache === undefined || {}) {
32
+ parent.postMessage({
33
+ data: "cacheinitialize",
34
+ widgetId: widgetId
35
+ }, "*");
36
+ }
37
+ }
38
+ };
39
+ export const inMemoryDataStore = () => {
40
+ const dataStoreProvider = {
41
+ getData: key => {
42
+ if (defaultCacheManager.InternalCache && defaultCacheManager.InternalCache[key]) {
43
+ return defaultCacheManager.InternalCache[key];
44
+ }
45
+ },
46
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
47
+ setData: (key, data) => {
48
+ try {
49
+ defaultCacheManager.InternalCache[key] = data;
50
+ } catch (error) {
51
+ TelemetryHelper.logConfigDataEvent(LogLevel.ERROR, {
52
+ Event: TelemetryEvent.InMemoryDataStoreFailed,
53
+ ExceptionDetails: error,
54
+ Description: "Unable to set data in default in-memory cache."
55
+ });
56
+ }
57
+ },
58
+ removeData: key => {
59
+ try {
60
+ defaultCacheManager.InternalCache[key] = {};
61
+ } catch (error) {
62
+ TelemetryHelper.logConfigDataEvent(LogLevel.ERROR, {
63
+ Event: TelemetryEvent.InMemoryDataStoreFailed,
64
+ ExceptionDetails: error,
65
+ Description: "Unable to remove data from default in-memory cache."
66
+ });
67
+ }
68
+ }
69
+ };
70
+ return dataStoreProvider;
71
+ };
@@ -89,6 +89,8 @@ export let TelemetryEvent;
89
89
  TelemetryEvent["PostChatContextCallSucceed"] = "PostChatContextCallSucceed";
90
90
  TelemetryEvent["PostChatContextCallFailed"] = "PostChatContextCallFailed";
91
91
  TelemetryEvent["ParseAdaptiveCardFailed"] = "ParseAdaptiveCardFailed";
92
+ TelemetryEvent["ClientDataStoreProviderFailed"] = "ClientDataStoreProviderFailed";
93
+ TelemetryEvent["InMemoryDataStoreFailed"] = "InMemoryDataStoreFailed";
92
94
  TelemetryEvent["WebChatLoaded"] = "WebChatLoaded";
93
95
  TelemetryEvent["LCWChatButtonClicked"] = "LCWChatButtonClicked";
94
96
  TelemetryEvent["LCWChatButtonShow"] = "LCWChatButtonShow";
@@ -159,6 +161,8 @@ export let TelemetryEvent;
159
161
  TelemetryEvent["MessageSent"] = "MessageSent";
160
162
  TelemetryEvent["MessageReceived"] = "MessageReceived";
161
163
  TelemetryEvent["CustomContextReceived"] = "CustomContextReceived";
164
+ TelemetryEvent["NetworkDisconnected"] = "NetworkDisconnected";
165
+ TelemetryEvent["NetworkReconnected"] = "NetworkReconnected";
162
166
  })(TelemetryEvent || (TelemetryEvent = {}));
163
167
 
164
168
  export class TelemetryConstants {
@@ -205,6 +209,8 @@ export class TelemetryConstants {
205
209
  case TelemetryEvent.MessageReceived:
206
210
  case TelemetryEvent.CustomContextReceived:
207
211
  case TelemetryEvent.BrowserUnloadEventStarted:
212
+ case TelemetryEvent.NetworkDisconnected:
213
+ case TelemetryEvent.NetworkReconnected:
208
214
  return ScenarioType.ACTIONS;
209
215
 
210
216
  case TelemetryEvent.StartChatSDKCall: