@microsoft/omnichannel-chat-widget 0.1.0-main.edd8c2a → 0.1.0-main.fb426ed

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 (163) hide show
  1. package/README.md +227 -0
  2. package/lib/cjs/assets/Audios.js +8 -0
  3. package/lib/cjs/assets/Icons.js +28 -0
  4. package/lib/cjs/common/Constants.js +38 -4
  5. package/lib/cjs/common/contextDataStore/DataStoreManager.js +14 -0
  6. package/lib/cjs/{assets/assets.d.js → common/interfaces/IContextDataStore.js} +0 -0
  7. package/lib/cjs/common/telemetry/TelemetryConstants.js +42 -3
  8. package/lib/cjs/common/telemetry/TelemetryHelper.js +22 -4
  9. package/lib/cjs/common/telemetry/TelemetryManager.js +28 -9
  10. package/lib/cjs/common/telemetry/defaultConfigs/defaultAriaConfig.js +3 -3
  11. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  12. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +48 -15
  13. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +9 -5
  14. package/lib/cjs/common/utils.js +16 -2
  15. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  16. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +1 -1
  17. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +8 -54
  18. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +2 -2
  19. package/lib/cjs/components/footerstateful/FooterStateful.js +4 -5
  20. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +1 -1
  21. package/lib/cjs/components/headerstateful/HeaderStateful.js +11 -8
  22. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +3 -4
  23. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +18 -22
  24. package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +14 -0
  25. package/lib/cjs/components/livechatwidget/common/endChat.js +103 -50
  26. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +5 -0
  27. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +33 -9
  28. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +105 -20
  29. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +11 -7
  30. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +26 -24
  31. package/lib/cjs/components/livechatwidget/common/startChat.js +128 -54
  32. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +3 -3
  33. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +120 -33
  34. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +1 -1
  35. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +8 -0
  36. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +8 -0
  37. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +25 -10
  38. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +10 -4
  39. package/lib/cjs/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  40. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
  41. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +51 -73
  42. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +9 -46
  43. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +3 -1
  44. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  45. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +45 -0
  46. package/lib/cjs/contexts/common/ConversationState.js +3 -2
  47. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +10 -7
  48. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +10 -3
  49. package/lib/cjs/contexts/createReducer.js +28 -10
  50. package/lib/cjs/controller/componentController.js +2 -2
  51. package/lib/cjs/plugins/newMessageEventHandler.js +99 -0
  52. package/lib/esm/assets/Audios.js +1 -0
  53. package/lib/esm/assets/Icons.js +11 -0
  54. package/lib/esm/common/Constants.js +34 -3
  55. package/lib/esm/common/contextDataStore/DataStoreManager.js +5 -0
  56. package/lib/esm/common/interfaces/IContextDataStore.js +1 -0
  57. package/lib/esm/common/telemetry/TelemetryConstants.js +38 -2
  58. package/lib/esm/common/telemetry/TelemetryHelper.js +22 -5
  59. package/lib/esm/common/telemetry/TelemetryManager.js +22 -9
  60. package/lib/esm/common/telemetry/defaultConfigs/defaultAriaConfig.js +3 -3
  61. package/lib/esm/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  62. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +50 -15
  63. package/lib/esm/common/telemetry/loggers/consoleLogger.js +9 -5
  64. package/lib/esm/common/utils.js +12 -1
  65. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  66. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +1 -1
  67. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +8 -50
  68. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +2 -2
  69. package/lib/esm/components/footerstateful/FooterStateful.js +4 -5
  70. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +1 -1
  71. package/lib/esm/components/headerstateful/HeaderStateful.js +12 -9
  72. package/lib/esm/components/livechatwidget/common/createMarkdown.js +3 -3
  73. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +16 -23
  74. package/lib/esm/components/livechatwidget/common/disposeTelemetryLoggers.js +4 -0
  75. package/lib/esm/components/livechatwidget/common/endChat.js +101 -47
  76. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +3 -0
  77. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +29 -9
  78. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +94 -20
  79. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +10 -3
  80. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +23 -22
  81. package/lib/esm/components/livechatwidget/common/startChat.js +123 -51
  82. package/lib/esm/components/livechatwidget/common/startProactiveChat.js +5 -5
  83. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +111 -34
  84. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +1 -1
  85. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +6 -0
  86. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +6 -0
  87. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +23 -9
  88. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +9 -5
  89. package/lib/esm/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  90. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
  91. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -12
  92. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +7 -44
  93. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
  94. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  95. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +32 -0
  96. package/lib/esm/contexts/common/ConversationState.js +3 -2
  97. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +10 -7
  98. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +10 -3
  99. package/lib/esm/contexts/createReducer.js +28 -9
  100. package/lib/esm/controller/componentController.js +2 -2
  101. package/lib/esm/plugins/newMessageEventHandler.js +82 -0
  102. package/lib/types/assets/Audios.d.ts +1 -0
  103. package/lib/types/assets/Icons.d.ts +11 -0
  104. package/lib/types/common/Constants.d.ts +19 -1
  105. package/lib/types/common/contextDataStore/DataStoreManager.d.ts +4 -0
  106. package/lib/types/common/interfaces/IContextDataStore.d.ts +14 -0
  107. package/lib/types/common/telemetry/TelemetryConstants.d.ts +27 -1
  108. package/lib/types/common/telemetry/TelemetryHelper.d.ts +2 -0
  109. package/lib/types/common/telemetry/TelemetryManager.d.ts +1 -0
  110. package/lib/types/common/telemetry/definitions/Contracts.d.ts +3 -0
  111. package/lib/types/common/telemetry/definitions/Payload.d.ts +15 -9
  112. package/lib/types/common/telemetry/interfaces/IChatSDKLogger.d.ts +1 -0
  113. package/lib/types/common/telemetry/interfaces/IInternalTelemetryData.d.ts +2 -0
  114. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +12 -0
  115. package/lib/types/common/utils.d.ts +1 -0
  116. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +5 -2
  117. package/lib/types/components/footerstateful/audionotificationstateful/interfaces/IAudioNotificationStatefulParams.d.ts +0 -1
  118. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +4 -1
  119. package/lib/types/components/livechatwidget/common/disposeTelemetryLoggers.d.ts +1 -0
  120. package/lib/types/components/livechatwidget/common/endChat.d.ts +4 -1
  121. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -2
  122. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +1 -1
  123. package/lib/types/components/livechatwidget/common/startChat.d.ts +1 -1
  124. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +2 -1
  125. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetComponentOverrides.d.ts +1 -0
  126. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +3 -1
  127. package/lib/types/components/prechatsurveypanestateful/interfaces/IPreChatSurveyPaneStatefulParams.d.ts +1 -1
  128. package/lib/types/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.d.ts +3 -0
  129. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +1 -0
  130. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  131. package/lib/types/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.d.ts +1 -1
  132. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +0 -1
  133. package/lib/types/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.d.ts +1 -0
  134. package/lib/types/contexts/common/ConversationState.d.ts +3 -2
  135. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +3 -0
  136. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +11 -8
  137. package/lib/types/plugins/newMessageEventHandler.d.ts +2 -0
  138. package/package.json +11 -11
  139. package/lib/cjs/assets/audios/newMessageNotification.mp3 +0 -0
  140. package/lib/cjs/assets/icons/archiveIcon.svg +0 -3
  141. package/lib/cjs/assets/icons/audioIcon.svg +0 -6
  142. package/lib/cjs/assets/icons/blankIcon.svg +0 -6
  143. package/lib/cjs/assets/icons/excelIcon.svg +0 -6
  144. package/lib/cjs/assets/icons/imageIcon.svg +0 -6
  145. package/lib/cjs/assets/icons/oneNoteIcon.svg +0 -6
  146. package/lib/cjs/assets/icons/pdfIcon.svg +0 -6
  147. package/lib/cjs/assets/icons/powerpointIcon.svg +0 -6
  148. package/lib/cjs/assets/icons/videoIcon.svg +0 -6
  149. package/lib/cjs/assets/icons/visioIcon.svg +0 -6
  150. package/lib/cjs/assets/icons/wordIcon.svg +0 -6
  151. package/lib/esm/assets/assets.d.js +0 -0
  152. package/lib/esm/assets/audios/newMessageNotification.mp3 +0 -0
  153. package/lib/esm/assets/icons/archiveIcon.svg +0 -3
  154. package/lib/esm/assets/icons/audioIcon.svg +0 -6
  155. package/lib/esm/assets/icons/blankIcon.svg +0 -6
  156. package/lib/esm/assets/icons/excelIcon.svg +0 -6
  157. package/lib/esm/assets/icons/imageIcon.svg +0 -6
  158. package/lib/esm/assets/icons/oneNoteIcon.svg +0 -6
  159. package/lib/esm/assets/icons/pdfIcon.svg +0 -6
  160. package/lib/esm/assets/icons/powerpointIcon.svg +0 -6
  161. package/lib/esm/assets/icons/videoIcon.svg +0 -6
  162. package/lib/esm/assets/icons/visioIcon.svg +0 -6
  163. package/lib/esm/assets/icons/wordIcon.svg +0 -6
@@ -7,27 +7,31 @@ exports.setPostChatContextAndLoadSurvey = void 0;
7
7
 
8
8
  var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
9
9
 
10
+ var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
11
+
12
+ var _ConversationState = require("../../../contexts/common/ConversationState");
13
+
10
14
  var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
11
15
 
12
16
  var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
13
17
 
14
- var _ConversationState = require("../../../contexts/common/ConversationState");
15
-
16
18
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
- const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, loadSurvey) => {
19
+ const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, persistedChat) => {
18
20
  try {
19
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
- const context = await chatSDK.getPostChatSurveyContext();
21
-
22
- _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
23
- Event: _TelemetryConstants.TelemetryEvent.PostChatContextCallSucceed,
24
- Description: "Postchat context call succeed."
25
- });
26
-
27
- dispatch({
28
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_POST_CHAT_CONTEXT,
29
- payload: context
30
- });
21
+ if (!persistedChat) {
22
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
+ const context = await chatSDK.getPostChatSurveyContext();
24
+
25
+ _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
26
+ Event: _TelemetryConstants.TelemetryEvent.PostChatContextCallSucceed,
27
+ Description: "Postchat context call succeed."
28
+ });
29
+
30
+ dispatch({
31
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_POST_CHAT_CONTEXT,
32
+ payload: context
33
+ });
34
+ }
31
35
  } catch (ex) {
32
36
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
33
37
  Event: _TelemetryConstants.TelemetryEvent.PostChatContextCallFailed,
@@ -35,21 +39,19 @@ const setPostChatContextAndLoadSurvey = async (chatSDK, dispatch, loadSurvey) =>
35
39
  exception: ex
36
40
  }
37
41
  });
38
- }
39
- /* -true: setPostChatContextAndLoadSurvey is called after passing all checks from ConfirmationPane and endChatMiddleware in usual scenario.
40
- -false: Below if condition is needed for multi-tab scenarios. So when agent ends a chat and customer has opened chat in multiple tabs,
41
- all tabs should show post chat survey as per existing functionality. But when an agent end a conversation, Omnichannel SDK
42
- getPostChatSurveyContext returns as invalid conversation. To avoid that, caching the survey url is needed after chat starts and
43
- in this case loadSurvey is false
44
- */
42
+ } // eslint-disable-next-line @typescript-eslint/no-unused-vars
45
43
 
46
44
 
47
- if (loadSurvey) {
45
+ _omnichannelChatComponents.BroadcastService.getMessageByEventName("LoadPostChatSurvey").subscribe(msg => {
46
+ dispatch({
47
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
48
+ payload: _ConversationState.ConversationState.Loading
49
+ });
48
50
  dispatch({
49
51
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
50
52
  payload: _ConversationState.ConversationState.Postchat
51
53
  });
52
- }
54
+ });
53
55
  };
54
56
 
55
57
  exports.setPostChatContextAndLoadSurvey = setPostChatContextAndLoadSurvey;
@@ -5,12 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.prepareStartChat = exports.initStartChat = void 0;
7
7
 
8
- var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
9
-
10
8
  var _Constants = require("../../../common/Constants");
11
9
 
10
+ var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
11
+
12
12
  var _ConversationState = require("../../../contexts/common/ConversationState");
13
13
 
14
+ var _DataStoreManager = require("../../../common/contextDataStore/DataStoreManager");
15
+
14
16
  var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
15
17
 
16
18
  var _NotificationHandler = require("../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler");
@@ -23,66 +25,86 @@ var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
23
25
 
24
26
  var _createAdapter = require("./createAdapter");
25
27
 
28
+ var _newMessageEventHandler = require("../../../plugins/newMessageEventHandler");
29
+
26
30
  var _utils = require("../../../common/utils");
27
31
 
28
32
  var _reconnectChatHelper = require("./reconnectChatHelper");
29
33
 
34
+ var _setPostChatContextAndLoadSurvey = require("./setPostChatContextAndLoadSurvey");
35
+
30
36
  var _updateSessionDataForTelemetry = require("./updateSessionDataForTelemetry");
31
37
 
32
- var _setPostChatContextAndLoadSurvey = require("./setPostChatContextAndLoadSurvey");
38
+ let optionalParams = {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
39
 
34
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
40
  const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) => {
36
- // Getting PreChat Survey Context
37
- const parseToJson = false;
38
- const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
39
- const showPrechat = state.appStates.conversationState === _ConversationState.ConversationState.ProactiveChat ? preChatSurveyResponse && state.appStates.proactiveChatStates.proactiveChatEnablePrechat : preChatSurveyResponse; // Getting reconnectId for authenticated chat
41
+ var _props$reconnectChatP;
40
42
 
41
- const reconnectId = await (0, _reconnectChatHelper.getReconnectIdForAuthenticatedChat)(props, chatSDK);
43
+ if (await canConnectToExistingChat(props, chatSDK, state, dispatch, setAdapter)) {
44
+ return;
45
+ } // Redirecting if unauthenticated reconnect chat expired
42
46
 
43
- if (reconnectId) {
44
- dispatch({
45
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
46
- payload: reconnectId
47
- });
48
- dispatch({
49
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
50
- payload: _ConversationState.ConversationState.ReconnectChat
51
- });
52
- } else if (showPrechat) {
53
- dispatch({
54
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
55
- payload: preChatSurveyResponse
56
- });
57
- dispatch({
58
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
59
- payload: _ConversationState.ConversationState.Prechat
60
- });
47
+
48
+ if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
49
+ var _props$reconnectChatP2, _props$reconnectChatP3;
50
+
51
+ await (0, _reconnectChatHelper.handleRedirectUnauthenticatedReconnectChat)(chatSDK, dispatch, setAdapter, initStartChat, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.reconnectId, (_props$reconnectChatP3 = props.reconnectChatPaneProps) === null || _props$reconnectChatP3 === void 0 ? void 0 : _props$reconnectChatP3.redirectInSameWindow);
61
52
  } else {
62
- dispatch({
63
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
64
- payload: _ConversationState.ConversationState.Loading
65
- });
66
- await initStartChat(chatSDK, dispatch, setAdapter);
53
+ // Getting PreChat Survey Context
54
+ const parseToJson = false;
55
+ const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
56
+ const showPrechat = state.appStates.conversationState === _ConversationState.ConversationState.ProactiveChat ? preChatSurveyResponse && state.appStates.proactiveChatStates.proactiveChatEnablePrechat : preChatSurveyResponse; // Getting reconnectId for authenticated chat
57
+
58
+ const reconnectId = await (0, _reconnectChatHelper.getReconnectIdForAuthenticatedChat)(props, chatSDK);
59
+
60
+ if (reconnectId) {
61
+ dispatch({
62
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
63
+ payload: reconnectId
64
+ });
65
+ dispatch({
66
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
67
+ payload: _ConversationState.ConversationState.ReconnectChat
68
+ });
69
+ } else if (showPrechat) {
70
+ dispatch({
71
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
72
+ payload: preChatSurveyResponse
73
+ });
74
+ dispatch({
75
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
76
+ payload: _ConversationState.ConversationState.Prechat
77
+ });
78
+ setCustomContextParams(props, state);
79
+ } else {
80
+ dispatch({
81
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
82
+ payload: _ConversationState.ConversationState.Loading
83
+ });
84
+ setCustomContextParams(props, state);
85
+ await initStartChat(chatSDK, dispatch, setAdapter);
86
+ }
67
87
  }
68
88
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
69
89
 
70
90
 
71
91
  exports.prepareStartChat = prepareStartChat;
72
92
 
73
- const initStartChat = async (chatSDK, dispatch, setAdapter, params) => {
93
+ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedState) => {
74
94
  try {
75
- var _TelemetryTimers$Widg;
95
+ var _newAdapter$activity$, _TelemetryTimers$Widg;
76
96
 
77
97
  try {
78
- _TelemetryHelper.TelemetryHelper.logConfigDataEvent(_TelemetryConstants.LogLevel.INFO, {
98
+ _TelemetryManager.TelemetryTimers.WidgetLoadTimer = (0, _utils.createTimer)();
99
+
100
+ _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
79
101
  Event: _TelemetryConstants.TelemetryEvent.StartChatSDKCall
80
102
  });
81
103
 
82
- await chatSDK.startChat(params);
83
- _TelemetryManager.TelemetryTimers.WidgetLoadTimer = (0, _utils.createTimer)();
104
+ optionalParams = Object.assign({}, params, optionalParams);
105
+ await chatSDK.startChat(optionalParams);
84
106
  } catch (error) {
85
- _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.ERROR, {
107
+ _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
86
108
  Event: _TelemetryConstants.TelemetryEvent.StartChatMethodException,
87
109
  ExceptionDetails: {
88
110
  exception: `Failed to setup startChat: ${error}`
@@ -91,24 +113,41 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params) => {
91
113
  }
92
114
 
93
115
  const newAdapter = await (0, _createAdapter.createAdapter)(chatSDK);
94
- setAdapter(newAdapter); // eslint-disable-next-line @typescript-eslint/no-explicit-any
116
+ setAdapter(newAdapter);
117
+ const chatToken = await chatSDK.getChatToken();
118
+ newAdapter === null || newAdapter === void 0 ? void 0 : (_newAdapter$activity$ = newAdapter.activity$) === null || _newAdapter$activity$ === void 0 ? void 0 : _newAdapter$activity$.subscribe((0, _newMessageEventHandler.createOnNewAdapterActivityHandler)(chatToken === null || chatToken === void 0 ? void 0 : chatToken.chatId, chatToken === null || chatToken === void 0 ? void 0 : chatToken.visitorId));
95
119
 
96
- if (chatSDK !== null && chatSDK !== void 0 && chatSDK.getVoiceVideoCalling) {
120
+ if (!persistedState) {
97
121
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
98
- const chatToken = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatToken());
122
+ if (chatSDK !== null && chatSDK !== void 0 && chatSDK.getVoiceVideoCalling) {
123
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
124
+ const chatToken = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatToken());
125
+ dispatch({
126
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
127
+ payload: chatToken
128
+ });
129
+ } // eslint-disable-next-line @typescript-eslint/no-explicit-any
130
+
131
+
132
+ const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
99
133
  dispatch({
100
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
101
- payload: chatToken
134
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
135
+ payload: liveChatContext
102
136
  });
103
- }
104
-
105
- await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, false);
106
- await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch); // Set app state to Active
137
+ await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch);
138
+ await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch); // Set app state to Active
107
139
 
108
- dispatch({
109
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
110
- payload: _ConversationState.ConversationState.Active
111
- });
140
+ dispatch({
141
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
142
+ payload: _ConversationState.ConversationState.Active
143
+ });
144
+ } else {
145
+ dispatch({
146
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_WIDGET_STATE,
147
+ payload: persistedState
148
+ });
149
+ await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, true);
150
+ }
112
151
 
113
152
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
114
153
  Event: _TelemetryConstants.TelemetryEvent.WidgetLoadComplete,
@@ -117,9 +156,9 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params) => {
117
156
  });
118
157
  } catch (ex) {
119
158
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.ERROR, {
120
- Event: _TelemetryConstants.TelemetryEvent.StartChatFailed,
159
+ Event: _TelemetryConstants.TelemetryEvent.WidgetLoadFailed,
121
160
  ExceptionDetails: {
122
- Exception: `Start Chat Failed: ${ex}`
161
+ Exception: `Widget load Failed: ${ex}`
123
162
  }
124
163
  });
125
164
 
@@ -137,6 +176,41 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params) => {
137
176
  });
138
177
  }
139
178
  }
179
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
180
+
181
+
182
+ exports.initStartChat = initStartChat;
183
+
184
+ const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdapter) => {
185
+ var _DataStoreManager$cli, _persistedState$domai;
186
+
187
+ const widgetStateFromCache = (_DataStoreManager$cli = _DataStoreManager.DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.getData(_Constants.Constants.widgetStateDataKey, "localStorage");
188
+ const persistedState = widgetStateFromCache ? JSON.parse(widgetStateFromCache) : undefined;
189
+
190
+ if (persistedState !== null && persistedState !== void 0 && (_persistedState$domai = persistedState.domainStates) !== null && _persistedState$domai !== void 0 && _persistedState$domai.liveChatContext) {
191
+ var _persistedState$domai2;
192
+
193
+ dispatch({
194
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
195
+ payload: _ConversationState.ConversationState.Loading
196
+ });
197
+ const optionalParams = {
198
+ liveChatContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai2 = persistedState.domainStates) === null || _persistedState$domai2 === void 0 ? void 0 : _persistedState$domai2.liveChatContext
199
+ };
200
+ await initStartChat(chatSDK, dispatch, setAdapter, optionalParams, persistedState);
201
+ return true;
202
+ } else {
203
+ return false;
204
+ }
140
205
  };
141
206
 
142
- exports.initStartChat = initStartChat;
207
+ const setCustomContextParams = (props, state) => {
208
+ var _props$chatConfig, _state$domainStates;
209
+
210
+ // Add custom context if any only for unauthenticated chat
211
+ if (!((_props$chatConfig = props.chatConfig) !== null && _props$chatConfig !== void 0 && _props$chatConfig.LiveChatConfigAuthSettings) && (_state$domainStates = state.domainStates) !== null && _state$domainStates !== void 0 && _state$domainStates.customContext) {
212
+ optionalParams = Object.assign({}, optionalParams, {
213
+ customContext: state.domainStates.customContext
214
+ });
215
+ }
216
+ };
@@ -16,12 +16,12 @@ var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
16
16
  var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
17
17
 
18
18
  // Defines startProactiveChat callback
19
- const startProactiveChat = (dispatch, bodyTitle, showPrechat, inNewWindow) => {
19
+ const startProactiveChat = (dispatch, notificationConfig, enablePreChat, inNewWindow) => {
20
20
  dispatch({
21
21
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PROACTIVE_CHAT_PARAMS,
22
22
  payload: {
23
- proactiveChatBodyTitle: bodyTitle ?? "",
24
- proactiveChatEnablePrechat: showPrechat ?? false,
23
+ proactiveChatBodyTitle: notificationConfig && notificationConfig.message ? notificationConfig.message : "",
24
+ proactiveChatEnablePrechat: enablePreChat ?? false,
25
25
  proactiveChatInNewWindow: inNewWindow ?? false
26
26
  }
27
27
  });