@microsoft/omnichannel-chat-widget 0.1.0-main.20562ae → 0.1.0-main.24bd1e6

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 (104) hide show
  1. package/README.md +32 -0
  2. package/lib/cjs/common/Constants.js +48 -6
  3. package/lib/cjs/common/telemetry/TelemetryConstants.js +28 -3
  4. package/lib/cjs/common/telemetry/TelemetryHelper.js +13 -0
  5. package/lib/cjs/common/telemetry/TelemetryManager.js +10 -1
  6. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  7. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +33 -13
  8. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +6 -5
  9. package/lib/cjs/common/utils.js +76 -2
  10. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  11. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +20 -4
  12. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +0 -1
  13. package/lib/cjs/components/footerstateful/FooterStateful.js +1 -2
  14. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +11 -2
  15. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +12 -15
  16. package/lib/cjs/components/livechatwidget/common/endChat.js +63 -16
  17. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +24 -3
  18. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +105 -20
  19. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +3 -15
  20. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +0 -4
  21. package/lib/cjs/components/livechatwidget/common/startChat.js +131 -48
  22. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +204 -87
  23. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +5 -10
  24. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +17 -1
  25. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +80 -0
  26. package/lib/cjs/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  27. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +14 -0
  28. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +16 -2
  29. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +52 -0
  30. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +98 -0
  31. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +117 -0
  32. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +45 -0
  33. package/lib/cjs/contexts/common/ConversationState.js +3 -2
  34. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +24 -21
  35. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +3 -2
  36. package/lib/cjs/contexts/createReducer.js +16 -0
  37. package/lib/cjs/controller/componentController.js +3 -3
  38. package/lib/cjs/plugins/newMessageEventHandler.js +10 -13
  39. package/lib/esm/common/Constants.js +44 -5
  40. package/lib/esm/common/telemetry/TelemetryConstants.js +28 -3
  41. package/lib/esm/common/telemetry/TelemetryHelper.js +13 -1
  42. package/lib/esm/common/telemetry/TelemetryManager.js +9 -1
  43. package/lib/esm/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  44. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +36 -14
  45. package/lib/esm/common/telemetry/loggers/consoleLogger.js +6 -5
  46. package/lib/esm/common/utils.js +55 -1
  47. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  48. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +22 -7
  49. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +0 -1
  50. package/lib/esm/components/footerstateful/FooterStateful.js +1 -2
  51. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +9 -3
  52. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +12 -16
  53. package/lib/esm/components/livechatwidget/common/endChat.js +61 -17
  54. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +22 -5
  55. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +94 -20
  56. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +3 -13
  57. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +0 -4
  58. package/lib/esm/components/livechatwidget/common/startChat.js +131 -51
  59. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +195 -90
  60. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +7 -11
  61. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +17 -1
  62. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +72 -0
  63. package/lib/esm/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  64. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +5 -0
  65. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +16 -2
  66. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +41 -0
  67. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +94 -0
  68. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +107 -0
  69. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +32 -0
  70. package/lib/esm/contexts/common/ConversationState.js +3 -2
  71. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +24 -21
  72. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +3 -2
  73. package/lib/esm/contexts/createReducer.js +16 -0
  74. package/lib/esm/controller/componentController.js +3 -3
  75. package/lib/esm/plugins/newMessageEventHandler.js +10 -12
  76. package/lib/types/common/Constants.d.ts +24 -2
  77. package/lib/types/common/interfaces/IContextDataStore.d.ts +2 -2
  78. package/lib/types/common/telemetry/TelemetryConstants.d.ts +27 -5
  79. package/lib/types/common/telemetry/TelemetryHelper.d.ts +3 -1
  80. package/lib/types/common/telemetry/definitions/Payload.d.ts +12 -9
  81. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +3 -3
  82. package/lib/types/common/utils.d.ts +6 -0
  83. package/lib/types/components/footerstateful/audionotificationstateful/interfaces/IAudioNotificationStatefulParams.d.ts +0 -1
  84. package/lib/types/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.d.ts +1 -1
  85. package/lib/types/components/livechatwidget/common/endChat.d.ts +1 -1
  86. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -2
  87. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +1 -1
  88. package/lib/types/components/livechatwidget/common/startChat.d.ts +2 -1
  89. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +1 -1
  90. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +1 -1
  91. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +1 -0
  92. package/lib/types/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.d.ts +4 -0
  93. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +2 -0
  94. package/lib/types/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.d.ts +3 -0
  95. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +1 -1
  96. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.d.ts +1 -1
  97. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.d.ts +2 -0
  98. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.d.ts +1 -0
  99. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +5 -0
  100. package/lib/types/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.d.ts +1 -0
  101. package/lib/types/contexts/common/ConversationState.d.ts +3 -2
  102. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +2 -1
  103. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +24 -21
  104. package/package.json +6 -7
@@ -27,6 +27,8 @@ var _groupActivitiesMiddleware = require("../../../webchatcontainerstateful/webc
27
27
 
28
28
  var _typingIndicatorMiddleware = require("../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware");
29
29
 
30
+ var _WebChatLogger = require("../../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger");
31
+
30
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
33
 
32
34
  /* eslint-disable @typescript-eslint/no-empty-function, @typescript-eslint/no-explicit-any */
@@ -272,18 +274,6 @@ const dummyDefaultProps = {
272
274
  width: "50px",
273
275
  fontSize: "18px"
274
276
  },
275
- currentCallTimerStyleProps: {
276
- borderRadius: "2px",
277
- margin: "1px",
278
- color: "#FFFFFF",
279
- paddingTop: "18px",
280
- fontSize: 12,
281
- fontFamily: "Segoe UI, Arial, sans-serif",
282
- backgroundColor: "darkgrey",
283
- height: "45px",
284
- width: "50px",
285
- textAlign: "center"
286
- },
287
277
  videoTileStyleProps: {
288
278
  width: "100%",
289
279
  marginLeft: "auto",
@@ -347,7 +337,9 @@ const dummyDefaultProps = {
347
337
  hideChatTextContainer: false,
348
338
  hideChatSubtitle: false,
349
339
  hideChatTitle: false,
350
- hideNotificationBubble: true
340
+ hideNotificationBubble: true,
341
+ unreadMessageString: "new messages",
342
+ largeUnreadMessageString: "99+"
351
343
  },
352
344
  styleProps: {
353
345
  generalStyleProps: {
@@ -1444,7 +1436,8 @@ const dummyDefaultProps = {
1444
1436
  },
1445
1437
  authClientFunction: undefined,
1446
1438
  isReconnectEnabled: undefined,
1447
- reconnectId: undefined
1439
+ reconnectId: undefined,
1440
+ redirectInSameWindow: undefined
1448
1441
  },
1449
1442
  styleProps: {
1450
1443
  generalStyles: {
@@ -1516,7 +1509,7 @@ const dummyDefaultProps = {
1516
1509
  internalErrorBoxClass: undefined,
1517
1510
  internalRenderErrorBox: undefined,
1518
1511
  locale: "en-US",
1519
- onTelemetry: undefined,
1512
+ onTelemetry: (0, _WebChatLogger.createWebChatTelemetry)(),
1520
1513
  overrideLocalizedStrings: undefined,
1521
1514
  renderMarkdown: (0, _createMarkdown.createMarkdown)(false, false),
1522
1515
  scrollToEndButtonMiddleware: undefined,
@@ -1706,6 +1699,10 @@ const dummyDefaultProps = {
1706
1699
  MIDDLEWARE_MESSAGE_RETRY: "Retry",
1707
1700
  PRECHAT_REQUIRED_FIELD_MISSING_MESSAGE: "{0} field is required",
1708
1701
  MARKDOWN_EXTERNAL_LINK_ALT: "Opens in a new window; external."
1702
+ },
1703
+ botMagicCode: {
1704
+ disabled: false,
1705
+ fwdUrl: ""
1709
1706
  }
1710
1707
  },
1711
1708
  telemetryConfig: undefined
@@ -23,20 +23,39 @@ var _PostChatSurveyMode = require("../../postchatsurveypanestateful/enums/PostCh
23
23
 
24
24
  var _Constants = require("../../../common/Constants");
25
25
 
26
+ var _utils = require("../../../common/utils");
27
+
26
28
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
29
  const prepareEndChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state) => {
28
- var _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4;
30
+ var _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4, _conversationDetails;
29
31
 
30
32
  const isPostChatEnabled = (_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : (_state$domainStates$l2 = _state$domainStates$l.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.msdyn_postconversationsurveyenable;
31
- const postChatSurveyMode = (_state$domainStates$l3 = state.domainStates.liveChatConfig) === null || _state$domainStates$l3 === void 0 ? void 0 : (_state$domainStates$l4 = _state$domainStates$l3.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l4 === void 0 ? void 0 : _state$domainStates$l4.msdyn_postconversationsurveymode;
32
- const conversationDetails = await chatSDK.getConversationDetails();
33
+ const postChatSurveyMode = (_state$domainStates$l3 = state.domainStates.liveChatConfig) === null || _state$domainStates$l3 === void 0 ? void 0 : (_state$domainStates$l4 = _state$domainStates$l3.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l4 === void 0 ? void 0 : _state$domainStates$l4.msdyn_postconversationsurveymode; // eslint-disable-next-line @typescript-eslint/no-explicit-any
34
+
35
+ let conversationDetails = undefined;
36
+
37
+ try {
38
+ conversationDetails = await chatSDK.getConversationDetails();
39
+ } catch (erorr) {
40
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
41
+ Event: _TelemetryConstants.TelemetryEvent.GetConversationDetailsException,
42
+ ExceptionDetails: {
43
+ exception: `Failed to get conversation details: ${erorr}`
44
+ }
45
+ });
46
+ }
33
47
 
34
- if (isPostChatEnabled === "true" && (conversationDetails === null || conversationDetails === void 0 ? void 0 : conversationDetails.canRenderPostChat) === _Constants.Constants.truePascal) {
48
+ if (isPostChatEnabled === "true" && ((_conversationDetails = conversationDetails) === null || _conversationDetails === void 0 ? void 0 : _conversationDetails.canRenderPostChat) === _Constants.Constants.truePascal) {
35
49
  const skipEndChatSDK = false;
36
50
  const skipCloseChat = true;
37
- await endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat);
51
+ await endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat, true);
38
52
 
39
53
  if (postChatSurveyMode === _PostChatSurveyMode.PostChatSurveyMode.Embed) {
54
+ dispatch({
55
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
56
+ payload: _ConversationState.ConversationState.PostchatLoading
57
+ });
58
+ await (0, _utils.addDelayInMs)(_Constants.Constants.PostChatLoadingDurationInMs);
40
59
  const loadPostChatEvent = {
41
60
  eventName: _TelemetryConstants.BroadcastEvent.LoadPostChatSurvey
42
61
  };
@@ -48,15 +67,17 @@ const prepareEndChat = async (props, chatSDK, setAdapter, setWebChatStyles, disp
48
67
  payload: _ConversationState.ConversationState.InActive
49
68
  });
50
69
  }
51
- } else {
52
- await endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter);
70
+
71
+ return;
53
72
  }
73
+
74
+ await endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, true);
54
75
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
76
 
56
77
 
57
78
  exports.prepareEndChat = prepareEndChat;
58
79
 
59
- const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat) => {
80
+ const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat, postMessageToOtherTab) => {
60
81
  if (!skipEndChatSDK) {
61
82
  try {
62
83
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
@@ -71,8 +92,24 @@ const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, a
71
92
  exception: ex
72
93
  }
73
94
  });
95
+
96
+ postMessageToOtherTab = false;
74
97
  }
75
- }
98
+ } // Need to clear these states immediately when chat ended from OC.
99
+
100
+
101
+ dispatch({
102
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CUSTOM_CONTEXT,
103
+ payload: undefined
104
+ });
105
+ dispatch({
106
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
107
+ payload: undefined
108
+ });
109
+ dispatch({
110
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
111
+ payload: undefined
112
+ });
76
113
 
77
114
  if (!skipCloseChat) {
78
115
  try {
@@ -101,17 +138,27 @@ const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, a
101
138
  payload: null
102
139
  });
103
140
  dispatch({
104
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
105
- payload: undefined
141
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_UNREAD_MESSAGE_COUNT,
142
+ payload: 0
106
143
  });
107
144
  dispatch({
108
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
109
- payload: undefined
145
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PROACTIVE_CHAT_PARAMS,
146
+ payload: {
147
+ proactiveChatBodyTitle: "",
148
+ proactiveChatEnablePrechat: false,
149
+ proactiveChatInNewWindow: false
150
+ }
110
151
  });
111
152
 
112
- _omnichannelChatComponents.BroadcastService.postMessage({
113
- eventName: _TelemetryConstants.BroadcastEvent.EndChat
114
- });
153
+ if (postMessageToOtherTab) {
154
+ var _chatSDK$omnichannelC, _chatSDK$omnichannelC2;
155
+
156
+ const endChatEventName = (0, _utils.getWidgetEndChatEventName)(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC === void 0 ? void 0 : _chatSDK$omnichannelC.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.widgetId);
157
+
158
+ _omnichannelChatComponents.BroadcastService.postMessage({
159
+ eventName: endChatEventName
160
+ });
161
+ }
115
162
  } catch (error) {
116
163
  _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
117
164
  Event: _TelemetryConstants.TelemetryEvent.CloseChatMethodException,
@@ -43,6 +43,8 @@ var _createMarkdown = require("./createMarkdown");
43
43
 
44
44
  var _maxMessageSizeValidator = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator"));
45
45
 
46
+ var _WebChatLogger = require("../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger");
47
+
46
48
  var _defaultAttachmentProps = require("../../webchatcontainerstateful/common/defaultProps/defaultAttachmentProps");
47
49
 
48
50
  var _defaultMiddlewareLocalizedTexts = require("../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts");
@@ -61,11 +63,17 @@ var _preProcessingMiddleware = _interopRequireDefault(require("../../webchatcont
61
63
 
62
64
  var _sanitizationMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware"));
63
65
 
66
+ var _cardActionMiddleware = require("../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware");
67
+
68
+ var _messageTimestampMiddleware = _interopRequireDefault(require("../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware"));
69
+
70
+ var _Constants = require("../../../common/Constants");
71
+
64
72
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
65
73
 
66
74
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
67
75
  const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatStyles) => {
68
- var _props$webChatContain, _props$webChatContain2, _props$webChatContain3, _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4, _state$domainStates$l8, _state$domainStates$l9, _props$webChatContain7, _props$webChatContain8, _state$domainStates$r, _state$domainStates$r2, _props$webChatContain9, _props$webChatContain10, _state$domainStates$r3, _state$domainStates$r4, _props$webChatContain11, _props$webChatContain12, _defaultWebChatContai, _props$webChatContain13, _props$webChatContain14, _props$webChatContain15, _props$webChatContain16, _state$domainStates$r5, _state$domainStates$r6, _props$webChatContain17, _props$webChatContain18, _defaultWebChatContai2, _props$webChatContain19, _props$webChatContain20, _defaultWebChatContai3, _props$webChatContain21;
76
+ var _props$webChatContain, _props$webChatContain2, _props$webChatContain3, _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4, _state$domainStates$l8, _state$domainStates$l9, _props$webChatContain7, _props$webChatContain8, _state$domainStates$r, _state$domainStates$r2, _props$webChatContain9, _props$webChatContain10, _state$domainStates$r3, _state$domainStates$r4, _props$webChatContain11, _props$webChatContain12, _defaultWebChatContai, _props$webChatContain13, _props$webChatContain14, _props$webChatContain15, _props$webChatContain16, _state$domainStates$r5, _state$domainStates$r6, _props$webChatContain17, _props$webChatContain18, _defaultWebChatContai2, _props$webChatContain19, _props$webChatContain20, _defaultWebChatContai3, _props$webChatContain21, _props$webChatContain22;
69
77
 
70
78
  const localizedTexts = { ..._defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts,
71
79
  ...((_props$webChatContain = props.webChatContainerProps) === null || _props$webChatContain === void 0 ? void 0 : _props$webChatContain.localizedTexts)
@@ -97,8 +105,15 @@ const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatStyles)
97
105
  });
98
106
  }
99
107
 
108
+ _WebChatStoreLoader.WebChatStoreLoader.store = null;
109
+
100
110
  if (isPostChatEnabled === "true") {
101
111
  if (postChatSurveyMode === _PostChatSurveyMode.PostChatSurveyMode.Embed) {
112
+ dispatch({
113
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
114
+ payload: _ConversationState.ConversationState.PostchatLoading
115
+ });
116
+ await (0, _utils.addDelayInMs)(_Constants.Constants.PostChatLoadingDurationInMs);
102
117
  const loadPostChatEvent = {
103
118
  eventName: _TelemetryConstants.BroadcastEvent.LoadPostChatSurvey
104
119
  };
@@ -121,10 +136,14 @@ const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatStyles)
121
136
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
122
137
  payload: undefined
123
138
  });
139
+ dispatch({
140
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
141
+ payload: undefined
142
+ });
124
143
  };
125
144
 
126
145
  webChatStore = (0, _botframeworkWebchat.createStore)({}, //initial state
127
- _preProcessingMiddleware.default, _attachmentProcessingMiddleware.default, (0, _attachmentUploadValidatorMiddleware.default)((_state$domainStates$l5 = state.domainStates.liveChatConfig) === null || _state$domainStates$l5 === void 0 ? void 0 : _state$domainStates$l5.allowedFileExtensions, (_state$domainStates$l6 = state.domainStates.liveChatConfig) === null || _state$domainStates$l6 === void 0 ? void 0 : _state$domainStates$l6.maxUploadFileSize, localizedTexts), _channelDataMiddleware.default, (0, _conversationEndMiddleware.default)(conversationEndCallback), (0, _dataMaskingMiddleware.default)((_state$domainStates$l7 = state.domainStates.liveChatConfig) === null || _state$domainStates$l7 === void 0 ? void 0 : _state$domainStates$l7.DataMaskingInfo), _gifUploadMiddleware.default, _htmlPlayerMiddleware.default, _htmlTextMiddleware.default, (0, _maxMessageSizeValidator.default)(localizedTexts), _sanitizationMiddleware.default, // eslint-disable-next-line @typescript-eslint/no-explicit-any
146
+ _preProcessingMiddleware.default, _attachmentProcessingMiddleware.default, (0, _attachmentUploadValidatorMiddleware.default)((_state$domainStates$l5 = state.domainStates.liveChatConfig) === null || _state$domainStates$l5 === void 0 ? void 0 : _state$domainStates$l5.allowedFileExtensions, (_state$domainStates$l6 = state.domainStates.liveChatConfig) === null || _state$domainStates$l6 === void 0 ? void 0 : _state$domainStates$l6.maxUploadFileSize, localizedTexts), _channelDataMiddleware.default, (0, _conversationEndMiddleware.default)(conversationEndCallback), (0, _dataMaskingMiddleware.default)((_state$domainStates$l7 = state.domainStates.liveChatConfig) === null || _state$domainStates$l7 === void 0 ? void 0 : _state$domainStates$l7.DataMaskingInfo), _messageTimestampMiddleware.default, _gifUploadMiddleware.default, _htmlPlayerMiddleware.default, _htmlTextMiddleware.default, (0, _maxMessageSizeValidator.default)(localizedTexts), _sanitizationMiddleware.default, // eslint-disable-next-line @typescript-eslint/no-explicit-any
128
147
  ...(((_props$webChatContain6 = props.webChatContainerProps) === null || _props$webChatContain6 === void 0 ? void 0 : _props$webChatContain6.storeMiddlewares) ?? []));
129
148
  _WebChatStoreLoader.WebChatStoreLoader.store = webChatStore;
130
149
  } // Initialize the remaining Web Chat props
@@ -141,7 +160,9 @@ const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatStyles)
141
160
  avatarMiddleware: (_props$webChatContain15 = props.webChatContainerProps) !== null && _props$webChatContain15 !== void 0 && (_props$webChatContain16 = _props$webChatContain15.renderingMiddlewareProps) !== null && _props$webChatContain16 !== void 0 && _props$webChatContain16.disableAvatarMiddleware ? undefined : (0, _avatarMiddleware.createAvatarMiddleware)((_state$domainStates$r5 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r5 === void 0 ? void 0 : _state$domainStates$r5.avatarStyleProps, (_state$domainStates$r6 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r6 === void 0 ? void 0 : _state$domainStates$r6.avatarTextStyleProps),
142
161
  groupActivitiesMiddleware: (_props$webChatContain17 = props.webChatContainerProps) !== null && _props$webChatContain17 !== void 0 && (_props$webChatContain18 = _props$webChatContain17.renderingMiddlewareProps) !== null && _props$webChatContain18 !== void 0 && _props$webChatContain18.disableGroupActivitiesMiddleware ? undefined : (_defaultWebChatContai2 = _defaultWebChatContainerStatefulProps.defaultWebChatContainerStatefulProps.webChatProps) === null || _defaultWebChatContai2 === void 0 ? void 0 : _defaultWebChatContai2.groupActivitiesMiddleware,
143
162
  typingIndicatorMiddleware: (_props$webChatContain19 = props.webChatContainerProps) !== null && _props$webChatContain19 !== void 0 && (_props$webChatContain20 = _props$webChatContain19.renderingMiddlewareProps) !== null && _props$webChatContain20 !== void 0 && _props$webChatContain20.disableTypingIndicatorMiddleware ? undefined : (_defaultWebChatContai3 = _defaultWebChatContainerStatefulProps.defaultWebChatContainerStatefulProps.webChatProps) === null || _defaultWebChatContai3 === void 0 ? void 0 : _defaultWebChatContai3.typingIndicatorMiddleware,
144
- ...((_props$webChatContain21 = props.webChatContainerProps) === null || _props$webChatContain21 === void 0 ? void 0 : _props$webChatContain21.webChatProps)
163
+ onTelemetry: (0, _WebChatLogger.createWebChatTelemetry)(),
164
+ cardActionMiddleware: (0, _cardActionMiddleware.createCardActionMiddleware)(((_props$webChatContain21 = props.webChatContainerProps) === null || _props$webChatContain21 === void 0 ? void 0 : _props$webChatContain21.botMagicCode) || undefined),
165
+ ...((_props$webChatContain22 = props.webChatContainerProps) === null || _props$webChatContain22 === void 0 ? void 0 : _props$webChatContain22.webChatProps)
145
166
  };
146
167
  return webChatProps;
147
168
  };
@@ -3,13 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.handleUnauthenticatedReconnectChat = exports.getReconnectIdForAuthenticatedChat = void 0;
6
+ exports.startUnauthenticatedReconnectChat = exports.handleUnauthenticatedReconnectChat = exports.handleRedirectUnauthenticatedReconnectChat = exports.getReconnectIdForAuthenticatedChat = exports.getChatReconnectContext = void 0;
7
7
 
8
8
  require("regenerator-runtime/runtime");
9
9
 
10
10
  var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
11
11
 
12
- var _Constants = require("../../../common/Constants");
12
+ var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
13
13
 
14
14
  var _ConversationState = require("../../../contexts/common/ConversationState");
15
15
 
@@ -41,6 +41,8 @@ const getChatReconnectContext = async (chatSDK, reconnectId) => {
41
41
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
42
 
43
43
 
44
+ exports.getChatReconnectContext = getChatReconnectContext;
45
+
44
46
  const getReconnectIdForAuthenticatedChat = async (props, chatSDK) => {
45
47
  var _props$reconnectChatP, _props$reconnectChatP2;
46
48
 
@@ -61,33 +63,116 @@ const getReconnectIdForAuthenticatedChat = async (props, chatSDK) => {
61
63
 
62
64
  exports.getReconnectIdForAuthenticatedChat = getReconnectIdForAuthenticatedChat;
63
65
 
64
- const handleUnauthenticatedReconnectChat = async (dispatch, reconnectId, initStartChat) => {
65
- const reconnectAvailabilityResponse = await getChatReconnectContext(reconnectId);
66
+ const handleUnauthenticatedReconnectChat = async (chatSDK, dispatch, setAdapter, reconnectId, initStartChat, redirectInSameWindow) => {
67
+ const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, reconnectId);
66
68
 
67
- if (reconnectAvailabilityResponse && reconnectAvailabilityResponse.redirectURL) {
68
- redirectPage(reconnectAvailabilityResponse.redirectURL);
69
+ if (shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
70
+ await redirectOrStartNewChat(reconnectAvailabilityResponse, chatSDK, dispatch, setAdapter, initStartChat, redirectInSameWindow);
69
71
  } else {
70
- const optionalParams = {
71
- reconnectId: reconnectId
72
- };
72
+ await setReconnectIdAndStartChat(chatSDK, dispatch, setAdapter, reconnectId, initStartChat);
73
+ }
74
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
+
76
+
77
+ exports.handleUnauthenticatedReconnectChat = handleUnauthenticatedReconnectChat;
78
+
79
+ const startUnauthenticatedReconnectChat = async (chatSDK, dispatch, setAdapter, reconnectId, initStartChat) => {
80
+ const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, reconnectId);
81
+
82
+ if (!shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
83
+ await setReconnectIdAndStartChat(chatSDK, dispatch, setAdapter, reconnectId, initStartChat);
84
+ }
85
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
86
+
87
+
88
+ exports.startUnauthenticatedReconnectChat = startUnauthenticatedReconnectChat;
89
+
90
+ const setReconnectIdAndStartChat = async (chatSDK, dispatch, setAdapter, reconnectId, initStartChat) => {
91
+ const startUnauthenticatedReconnectChat = {
92
+ eventName: _TelemetryConstants.BroadcastEvent.StartUnauthenticatedReconnectChat
93
+ };
94
+
95
+ _omnichannelChatComponents.BroadcastService.postMessage(startUnauthenticatedReconnectChat);
96
+
97
+ const optionalParams = {
98
+ reconnectId: reconnectId
99
+ };
100
+ dispatch({
101
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
102
+ payload: reconnectId
103
+ });
104
+ dispatch({
105
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
106
+ payload: _ConversationState.ConversationState.Loading
107
+ });
108
+ await initStartChat(chatSDK, dispatch, setAdapter, optionalParams);
109
+ };
110
+
111
+ const redirectPage = (redirectURL, redirectInSameWindow) => {
112
+ const redirectPageRequest = {
113
+ eventName: _TelemetryConstants.BroadcastEvent.RedirectPageRequest,
114
+ payload: {
115
+ redirectURL: redirectURL
116
+ }
117
+ };
118
+
119
+ _omnichannelChatComponents.BroadcastService.postMessage(redirectPageRequest);
120
+
121
+ if (redirectInSameWindow) {
122
+ window.location.href = redirectURL;
123
+ }
124
+ };
125
+
126
+ const shouldRedirectOrStartNewChat = reconnectAvailabilityResponse => {
127
+ return reconnectAvailabilityResponse && !reconnectAvailabilityResponse.reconnectId;
128
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
129
+
130
+
131
+ const startNewChatEmptyRedirectionUrl = async (chatSDK, dispatch, setAdapter, initStartChat) => {
132
+ const startUnauthenticatedReconnectChat = {
133
+ eventName: _TelemetryConstants.BroadcastEvent.StartUnauthenticatedReconnectChat
134
+ };
135
+
136
+ _omnichannelChatComponents.BroadcastService.postMessage(startUnauthenticatedReconnectChat); // Getting PreChat Survey Context
137
+
138
+
139
+ const parseToJson = false;
140
+ const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
141
+
142
+ if (preChatSurveyResponse) {
143
+ dispatch({
144
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
145
+ payload: preChatSurveyResponse
146
+ });
73
147
  dispatch({
74
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
75
- payload: reconnectId
148
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
149
+ payload: _ConversationState.ConversationState.Prechat
76
150
  });
151
+ } else {
77
152
  dispatch({
78
153
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
79
154
  payload: _ConversationState.ConversationState.Loading
80
155
  });
81
- await initStartChat(optionalParams);
156
+ await initStartChat(chatSDK, dispatch, setAdapter);
82
157
  }
83
- };
158
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
84
159
 
85
- exports.handleUnauthenticatedReconnectChat = handleUnauthenticatedReconnectChat;
86
160
 
87
- const redirectPage = newUrl => {
88
- const data = {
89
- messageName: _Constants.Constants.redirectPageRequest,
90
- newUrl: newUrl
91
- };
92
- window.parent.postMessage(data, "*");
161
+ const handleRedirectUnauthenticatedReconnectChat = async (chatSDK, dispatch, setAdapter, initStartChat, reconnectId, redirectInSameWindow) => {
162
+ const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, reconnectId);
163
+
164
+ if (shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
165
+ await redirectOrStartNewChat(reconnectAvailabilityResponse, chatSDK, dispatch, setAdapter, initStartChat, redirectInSameWindow);
166
+ }
167
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
168
+
169
+
170
+ exports.handleRedirectUnauthenticatedReconnectChat = handleRedirectUnauthenticatedReconnectChat;
171
+
172
+ const redirectOrStartNewChat = async (reconnectAvailabilityResponse, chatSDK, dispatch, setAdapter, initStartChat, redirectInSameWindow) => {
173
+ if (reconnectAvailabilityResponse.redirectURL) {
174
+ redirectPage(reconnectAvailabilityResponse.redirectURL, redirectInSameWindow);
175
+ } else {
176
+ await startNewChatEmptyRedirectionUrl(chatSDK, dispatch, setAdapter, initStartChat);
177
+ }
93
178
  };
@@ -11,10 +11,6 @@ var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidget
11
11
 
12
12
  var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
13
13
 
14
- var _package = require("@microsoft/omnichannel-chat-components/package.json");
15
-
16
- var _package2 = require("@microsoft/omnichannel-chat-sdk/package.json");
17
-
18
14
  var _defaultAriaConfig = require("../../../common/telemetry/defaultConfigs/defaultAriaConfig");
19
15
 
20
16
  var _defaultTelemetryInternalData = require("../../../common/telemetry/defaultConfigs/defaultTelemetryInternalData");
@@ -24,14 +20,6 @@ var _defaultTelemetryConfiguration = require("../../../common/telemetry/defaultC
24
20
  const registerTelemetryLoggers = (props, dispatch) => {
25
21
  var _props$liveChatContex, _props$liveChatContex2;
26
22
 
27
- let widgetPackageInfo;
28
-
29
- try {
30
- widgetPackageInfo = require("@microsoft/omnichannel-chat-widget/package.json");
31
- } catch (error) {
32
- widgetPackageInfo = "0.0.0-0";
33
- }
34
-
35
23
  const telemetryConfig = { ..._defaultTelemetryConfiguration.defaultTelemetryConfiguration,
36
24
  ...props.telemetryConfig
37
25
  };
@@ -53,9 +41,9 @@ const registerTelemetryLoggers = (props, dispatch) => {
53
41
  }
54
42
 
55
43
  telemetryData = _TelemetryHelper.TelemetryHelper.addWidgetDataToTelemetry(telemetryConfig, telemetryData);
56
- telemetryData.OCChatSDKVersion = _package2.version;
57
- telemetryData.chatComponentVersion = _package.version;
58
- telemetryData.chatWidgetVersion = widgetPackageInfo;
44
+ telemetryData.OCChatSDKVersion = telemetryConfig.OCChatSDKVersion ?? "0.0.0-0";
45
+ telemetryData.chatComponentVersion = telemetryConfig.chatComponentVersion ?? "0.0.0-0";
46
+ telemetryData.chatWidgetVersion = telemetryConfig.chatWidgetVersion ?? "0.0.0-0";
59
47
  telemetryData.orgId = (_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;
60
48
  telemetryData.widgetId = (_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;
61
49
  telemetryData.orgUrl = (_props$chatSDK3 = props.chatSDK) === null || _props$chatSDK3 === void 0 ? void 0 : (_props$chatSDK3$omnic = _props$chatSDK3.omnichannelConfig) === null || _props$chatSDK3$omnic === void 0 ? void 0 : _props$chatSDK3$omnic.orgUrl;
@@ -43,10 +43,6 @@ const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, persistedChat)
43
43
 
44
44
 
45
45
  _omnichannelChatComponents.BroadcastService.getMessageByEventName("LoadPostChatSurvey").subscribe(msg => {
46
- dispatch({
47
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
48
- payload: _ConversationState.ConversationState.Loading
49
- });
50
46
  dispatch({
51
47
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
52
48
  payload: _ConversationState.ConversationState.Postchat