@microsoft/omnichannel-chat-widget 0.1.0-main.3d1c026 → 0.1.0-main.3eb9e8c

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 (179) hide show
  1. package/README.md +259 -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 +52 -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 +59 -5
  8. package/lib/cjs/common/telemetry/TelemetryHelper.js +13 -0
  9. package/lib/cjs/common/telemetry/TelemetryManager.js +17 -6
  10. package/lib/cjs/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  11. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  12. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +33 -13
  13. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +6 -5
  14. package/lib/cjs/common/utils.js +76 -2
  15. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  16. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +20 -4
  17. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +7 -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 +11 -2
  21. package/lib/cjs/components/headerstateful/HeaderStateful.js +13 -10
  22. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +3 -4
  23. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +27 -23
  24. package/lib/cjs/components/livechatwidget/common/endChat.js +142 -47
  25. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +5 -0
  26. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +47 -14
  27. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +107 -22
  28. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +11 -5
  29. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +22 -24
  30. package/lib/cjs/components/livechatwidget/common/startChat.js +179 -41
  31. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +3 -3
  32. package/lib/cjs/components/livechatwidget/interfaces/IAuthProps.js +1 -0
  33. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +247 -75
  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 +22 -10
  38. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +27 -5
  39. package/lib/cjs/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  40. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +80 -0
  41. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
  42. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +51 -73
  43. package/lib/cjs/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  44. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +14 -0
  45. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +25 -48
  46. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +3 -1
  47. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +52 -0
  48. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +98 -0
  49. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +117 -0
  50. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  51. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +45 -0
  52. package/lib/cjs/contexts/common/ConversationState.js +4 -2
  53. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +11 -7
  54. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +9 -3
  55. package/lib/cjs/contexts/createReducer.js +29 -10
  56. package/lib/cjs/controller/componentController.js +5 -5
  57. package/lib/cjs/plugins/newMessageEventHandler.js +99 -0
  58. package/lib/esm/assets/Audios.js +1 -0
  59. package/lib/esm/assets/Icons.js +11 -0
  60. package/lib/esm/common/Constants.js +48 -3
  61. package/lib/esm/common/contextDataStore/DataStoreManager.js +5 -0
  62. package/lib/esm/common/interfaces/IContextDataStore.js +1 -0
  63. package/lib/esm/common/telemetry/TelemetryConstants.js +55 -4
  64. package/lib/esm/common/telemetry/TelemetryHelper.js +13 -1
  65. package/lib/esm/common/telemetry/TelemetryManager.js +15 -6
  66. package/lib/esm/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  67. package/lib/esm/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  68. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +36 -14
  69. package/lib/esm/common/telemetry/loggers/consoleLogger.js +6 -5
  70. package/lib/esm/common/utils.js +55 -1
  71. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  72. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +22 -7
  73. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +7 -50
  74. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +2 -2
  75. package/lib/esm/components/footerstateful/FooterStateful.js +4 -5
  76. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +9 -3
  77. package/lib/esm/components/headerstateful/HeaderStateful.js +14 -11
  78. package/lib/esm/components/livechatwidget/common/createMarkdown.js +3 -3
  79. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +25 -24
  80. package/lib/esm/components/livechatwidget/common/endChat.js +139 -46
  81. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +3 -0
  82. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +41 -15
  83. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +98 -23
  84. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +10 -4
  85. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +19 -22
  86. package/lib/esm/components/livechatwidget/common/startChat.js +172 -39
  87. package/lib/esm/components/livechatwidget/common/startProactiveChat.js +5 -5
  88. package/lib/esm/components/livechatwidget/interfaces/IAuthProps.js +1 -0
  89. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +234 -77
  90. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +1 -1
  91. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +6 -0
  92. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +6 -0
  93. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +22 -10
  94. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +26 -6
  95. package/lib/esm/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  96. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +72 -0
  97. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
  98. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -12
  99. package/lib/esm/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  100. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +5 -0
  101. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +23 -46
  102. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
  103. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +41 -0
  104. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +94 -0
  105. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +107 -0
  106. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  107. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +32 -0
  108. package/lib/esm/contexts/common/ConversationState.js +4 -2
  109. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +11 -7
  110. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +9 -3
  111. package/lib/esm/contexts/createReducer.js +29 -9
  112. package/lib/esm/controller/componentController.js +5 -5
  113. package/lib/esm/plugins/newMessageEventHandler.js +82 -0
  114. package/lib/types/assets/Audios.d.ts +1 -0
  115. package/lib/types/assets/Icons.d.ts +11 -0
  116. package/lib/types/common/Constants.d.ts +26 -1
  117. package/lib/types/common/contextDataStore/DataStoreManager.d.ts +4 -0
  118. package/lib/types/common/interfaces/IContextDataStore.d.ts +14 -0
  119. package/lib/types/common/telemetry/TelemetryConstants.d.ts +42 -2
  120. package/lib/types/common/telemetry/TelemetryHelper.d.ts +3 -1
  121. package/lib/types/common/telemetry/definitions/Payload.d.ts +12 -9
  122. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +3 -3
  123. package/lib/types/common/utils.d.ts +6 -0
  124. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +5 -2
  125. package/lib/types/components/footerstateful/audionotificationstateful/interfaces/IAudioNotificationStatefulParams.d.ts +0 -1
  126. package/lib/types/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.d.ts +1 -1
  127. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +4 -1
  128. package/lib/types/components/livechatwidget/common/endChat.d.ts +4 -1
  129. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +6 -2
  130. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +1 -1
  131. package/lib/types/components/livechatwidget/common/startChat.d.ts +4 -2
  132. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +2 -1
  133. package/lib/types/components/livechatwidget/interfaces/IAuthProps.d.ts +4 -0
  134. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetComponentOverrides.d.ts +1 -0
  135. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +4 -0
  136. package/lib/types/components/prechatsurveypanestateful/interfaces/IPreChatSurveyPaneStatefulParams.d.ts +1 -1
  137. package/lib/types/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.d.ts +3 -0
  138. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +1 -1
  139. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  140. package/lib/types/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.d.ts +1 -1
  141. package/lib/types/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.d.ts +4 -0
  142. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +2 -0
  143. package/lib/types/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.d.ts +3 -0
  144. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +1 -2
  145. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.d.ts +1 -1
  146. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.d.ts +2 -0
  147. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.d.ts +1 -0
  148. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +5 -0
  149. package/lib/types/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.d.ts +1 -0
  150. package/lib/types/contexts/common/ConversationState.d.ts +4 -2
  151. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +3 -1
  152. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +12 -8
  153. package/lib/types/plugins/newMessageEventHandler.d.ts +2 -0
  154. package/package.json +9 -11
  155. package/lib/cjs/assets/audios/newMessageNotification.mp3 +0 -0
  156. package/lib/cjs/assets/icons/archiveIcon.svg +0 -3
  157. package/lib/cjs/assets/icons/audioIcon.svg +0 -6
  158. package/lib/cjs/assets/icons/blankIcon.svg +0 -6
  159. package/lib/cjs/assets/icons/excelIcon.svg +0 -6
  160. package/lib/cjs/assets/icons/imageIcon.svg +0 -6
  161. package/lib/cjs/assets/icons/oneNoteIcon.svg +0 -6
  162. package/lib/cjs/assets/icons/pdfIcon.svg +0 -6
  163. package/lib/cjs/assets/icons/powerpointIcon.svg +0 -6
  164. package/lib/cjs/assets/icons/videoIcon.svg +0 -6
  165. package/lib/cjs/assets/icons/visioIcon.svg +0 -6
  166. package/lib/cjs/assets/icons/wordIcon.svg +0 -6
  167. package/lib/esm/assets/assets.d.js +0 -0
  168. package/lib/esm/assets/audios/newMessageNotification.mp3 +0 -0
  169. package/lib/esm/assets/icons/archiveIcon.svg +0 -3
  170. package/lib/esm/assets/icons/audioIcon.svg +0 -6
  171. package/lib/esm/assets/icons/blankIcon.svg +0 -6
  172. package/lib/esm/assets/icons/excelIcon.svg +0 -6
  173. package/lib/esm/assets/icons/imageIcon.svg +0 -6
  174. package/lib/esm/assets/icons/oneNoteIcon.svg +0 -6
  175. package/lib/esm/assets/icons/pdfIcon.svg +0 -6
  176. package/lib/esm/assets/icons/powerpointIcon.svg +0 -6
  177. package/lib/esm/assets/icons/videoIcon.svg +0 -6
  178. package/lib/esm/assets/icons/visioIcon.svg +0 -6
  179. package/lib/esm/assets/icons/wordIcon.svg +0 -6
@@ -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,10 +41,12 @@ 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
- var _props$reconnectChatP, _props$reconnectChatP2;
47
+ var _props$reconnectChatP, _props$authProps;
46
48
 
47
- if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.isReconnectEnabled && (_props$reconnectChatP2 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP2 !== void 0 && _props$reconnectChatP2.authClientFunction // TODO: Implement this after storage is in place
49
+ if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.isReconnectEnabled && (_props$authProps = props.authProps) !== null && _props$authProps !== void 0 && _props$authProps.authClientFunction // TODO: Implement this after storage is in place
48
50
 
49
51
  /* && !isLoadWithState() */
50
52
  ) {
@@ -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, authProps, 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, authProps, dispatch, setAdapter, initStartChat, redirectInSameWindow);
69
71
  } else {
70
- const optionalParams = {
71
- reconnectId: reconnectId
72
- };
72
+ await setReconnectIdAndStartChat(chatSDK, authProps, 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, authProps, dispatch, setAdapter, reconnectId, initStartChat) => {
80
+ const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, reconnectId);
81
+
82
+ if (!shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
83
+ await setReconnectIdAndStartChat(chatSDK, authProps, 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, authProps, 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, authProps, 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, authProps, 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, authProps, 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, authProps, dispatch, setAdapter, initStartChat, reconnectId, redirectInSameWindow) => {
162
+ const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, reconnectId);
163
+
164
+ if (shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
165
+ await redirectOrStartNewChat(reconnectAvailabilityResponse, chatSDK, authProps, 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, authProps, dispatch, setAdapter, initStartChat, redirectInSameWindow) => {
173
+ if (reconnectAvailabilityResponse.redirectURL) {
174
+ redirectPage(reconnectAvailabilityResponse.redirectURL, redirectInSameWindow);
175
+ } else {
176
+ await startNewChatEmptyRedirectionUrl(chatSDK, authProps, dispatch, setAdapter, initStartChat);
177
+ }
93
178
  };
@@ -5,10 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.registerTelemetryLoggers = void 0;
7
7
 
8
- var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
9
-
10
8
  var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
11
9
 
10
+ var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
11
+
12
12
  var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
13
13
 
14
14
  var _defaultAriaConfig = require("../../../common/telemetry/defaultConfigs/defaultAriaConfig");
@@ -29,6 +29,8 @@ const registerTelemetryLoggers = (props, dispatch) => {
29
29
 
30
30
  _TelemetryManager.TelemetryManager.InternalTelemetryData = (_props$liveChatContex3 = props.liveChatContextFromCache) === null || _props$liveChatContex3 === void 0 ? void 0 : (_props$liveChatContex4 = _props$liveChatContex3.domainStates) === null || _props$liveChatContex4 === void 0 ? void 0 : _props$liveChatContex4.telemetryInternalData;
31
31
  } else {
32
+ var _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic, _props$chatSDK3, _props$chatSDK3$omnic;
33
+
32
34
  let telemetryData = { ..._defaultTelemetryInternalData.defaultInternalTelemetryData,
33
35
  telemetryConfig: Object.assign({}, _defaultTelemetryConfiguration.defaultTelemetryConfiguration, telemetryConfig),
34
36
  ariaConfig: Object.assign({}, _defaultAriaConfig.defaultAriaConfig, telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.ariaConfigurations)
@@ -39,9 +41,13 @@ const registerTelemetryLoggers = (props, dispatch) => {
39
41
  }
40
42
 
41
43
  telemetryData = _TelemetryHelper.TelemetryHelper.addWidgetDataToTelemetry(telemetryConfig, telemetryData);
42
- telemetryData.OCChatSDKVersion = telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.OCChatSDKVersion;
43
- telemetryData.chatComponentVersion = telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.chatComponentVersion;
44
- telemetryData.chatWidgetVersion = telemetryConfig === null || telemetryConfig === void 0 ? void 0 : telemetryConfig.chatWidgetVersion;
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";
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;
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;
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;
50
+ _TelemetryManager.TelemetryManager.InternalTelemetryData = telemetryData;
45
51
  dispatch({
46
52
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_TELEMETRY_DATA,
47
53
  payload: telemetryData
@@ -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,15 @@ 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 => {
48
46
  dispatch({
49
47
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
50
48
  payload: _ConversationState.ConversationState.Postchat
51
49
  });
52
- }
50
+ });
53
51
  };
54
52
 
55
53
  exports.setPostChatContextAndLoadSurvey = setPostChatContextAndLoadSurvey;
@@ -3,12 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.prepareStartChat = exports.initStartChat = void 0;
7
-
8
- var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
6
+ exports.setPreChatAndInitiateChat = exports.prepareStartChat = exports.initStartChat = void 0;
9
7
 
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
14
  var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
@@ -23,20 +23,39 @@ var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
23
23
 
24
24
  var _createAdapter = require("./createAdapter");
25
25
 
26
+ var _newMessageEventHandler = require("../../../plugins/newMessageEventHandler");
27
+
26
28
  var _utils = require("../../../common/utils");
27
29
 
28
30
  var _reconnectChatHelper = require("./reconnectChatHelper");
29
31
 
32
+ var _setPostChatContextAndLoadSurvey = require("./setPostChatContextAndLoadSurvey");
33
+
30
34
  var _updateSessionDataForTelemetry = require("./updateSessionDataForTelemetry");
31
35
 
32
- var _setPostChatContextAndLoadSurvey = require("./setPostChatContextAndLoadSurvey");
36
+ var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
33
37
 
34
38
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
+ let optionalParams = {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
+
35
41
  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
42
+ var _props$reconnectChatP;
43
+
44
+ optionalParams = {}; //Resetting to ensure no stale values
45
+ // Can connect to existing chat session
46
+
47
+ if (await canConnectToExistingChat(props, chatSDK, state, dispatch, setAdapter)) {
48
+ return;
49
+ } // Redirecting if unauthenticated reconnect chat expired
50
+
51
+
52
+ if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
53
+ var _props$reconnectChatP2, _props$reconnectChatP3;
54
+
55
+ await (0, _reconnectChatHelper.handleRedirectUnauthenticatedReconnectChat)(chatSDK, props.authProps, 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);
56
+ return;
57
+ } // Getting reconnectId for authenticated chat
58
+
40
59
 
41
60
  const reconnectId = await (0, _reconnectChatHelper.getReconnectIdForAuthenticatedChat)(props, chatSDK);
42
61
 
@@ -49,7 +68,28 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
49
68
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
50
69
  payload: _ConversationState.ConversationState.ReconnectChat
51
70
  });
52
- } else if (showPrechat) {
71
+ return;
72
+ } // Set custom context params
73
+
74
+
75
+ setCustomContextParams(props, chatSDK); // Setting Proactive chat settings
76
+
77
+ const isProactiveChat = state.appStates.conversationState === _ConversationState.ConversationState.ProactiveChat;
78
+ const isPreChatEnabledInProactiveChat = state.appStates.proactiveChatStates.proactiveChatEnablePrechat; //Setting PreChat and intiate chat
79
+
80
+ setPreChatAndInitiateChat(chatSDK, props.authProps, dispatch, setAdapter, isProactiveChat, isPreChatEnabledInProactiveChat);
81
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
82
+
83
+
84
+ exports.prepareStartChat = prepareStartChat;
85
+
86
+ const setPreChatAndInitiateChat = async (chatSDK, authProps, dispatch, setAdapter, isProactiveChat, proactiveChatEnablePrechatState) => {
87
+ // Getting prechat Survey Context
88
+ const parseToJson = false;
89
+ const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
90
+ const showPrechat = isProactiveChat ? preChatSurveyResponse && proactiveChatEnablePrechatState : preChatSurveyResponse;
91
+
92
+ if (showPrechat) {
53
93
  dispatch({
54
94
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
55
95
  payload: preChatSurveyResponse
@@ -58,57 +98,109 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
58
98
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
59
99
  payload: _ConversationState.ConversationState.Prechat
60
100
  });
61
- } else {
62
- dispatch({
63
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
64
- payload: _ConversationState.ConversationState.Loading
65
- });
66
- await initStartChat(chatSDK, dispatch, setAdapter);
67
- }
101
+ return;
102
+ } //Initiate start chat
103
+
104
+
105
+ dispatch({
106
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
107
+ payload: _ConversationState.ConversationState.Loading
108
+ });
109
+ await initStartChat(chatSDK, authProps, dispatch, setAdapter);
68
110
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
69
111
 
70
112
 
71
- exports.prepareStartChat = prepareStartChat;
113
+ exports.setPreChatAndInitiateChat = setPreChatAndInitiateChat;
72
114
 
73
- const initStartChat = async (chatSDK, dispatch, setAdapter, params) => {
115
+ const initStartChat = async (chatSDK, authProps, dispatch, setAdapter, params, persistedState) => {
74
116
  try {
75
- var _TelemetryTimers$Widg;
117
+ var _newAdapter$activity$, _TelemetryTimers$Widg;
76
118
 
77
- try {
78
- _TelemetryHelper.TelemetryHelper.logConfigDataEvent(_TelemetryConstants.LogLevel.INFO, {
79
- Event: _TelemetryConstants.TelemetryEvent.StartChatSDKCall
119
+ let isStartChatSuccessful = false; //Check if chat retrieved from cache
120
+
121
+ if (persistedState || params !== null && params !== void 0 && params.liveChatContext) {
122
+ var _persistedState$domai, _persistedState$domai2, _persistedState$domai3, _persistedState$domai4, _persistedState$domai5;
123
+
124
+ _omnichannelChatComponents.BroadcastService.postMessage({
125
+ eventName: _TelemetryConstants.BroadcastEvent.ChatRetrievedFromCache,
126
+ payload: {
127
+ chatId: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai = persistedState.domainStates) === null || _persistedState$domai === void 0 ? void 0 : (_persistedState$domai2 = _persistedState$domai.liveChatContext) === null || _persistedState$domai2 === void 0 ? void 0 : (_persistedState$domai3 = _persistedState$domai2.chatToken) === null || _persistedState$domai3 === void 0 ? void 0 : _persistedState$domai3.chatId,
128
+ requestId: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai4 = persistedState.domainStates) === null || _persistedState$domai4 === void 0 ? void 0 : (_persistedState$domai5 = _persistedState$domai4.liveChatContext) === null || _persistedState$domai5 === void 0 ? void 0 : _persistedState$domai5.requestId
129
+ }
80
130
  });
131
+ }
81
132
 
82
- await chatSDK.startChat(params);
133
+ try {
134
+ //Start widget load timer
83
135
  _TelemetryManager.TelemetryTimers.WidgetLoadTimer = (0, _utils.createTimer)();
136
+
137
+ _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
138
+ Event: _TelemetryConstants.TelemetryEvent.StartChatSDKCall
139
+ }); // Set optional params
140
+
141
+
142
+ optionalParams = Object.assign({}, params, optionalParams); // set auth token to chat sdk before start chat
143
+
144
+ if (authProps && authProps.setAuthTokenProviderToChatSdk) {
145
+ await authProps.setAuthTokenProviderToChatSdk(chatSDK, authProps.authClientFunction);
146
+ }
147
+
148
+ await chatSDK.startChat(optionalParams);
149
+ isStartChatSuccessful = true;
84
150
  } catch (error) {
85
- _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.ERROR, {
151
+ _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
86
152
  Event: _TelemetryConstants.TelemetryEvent.StartChatMethodException,
87
153
  ExceptionDetails: {
88
154
  exception: `Failed to setup startChat: ${error}`
89
155
  }
90
156
  });
91
- }
92
157
 
93
- const newAdapter = await (0, _createAdapter.createAdapter)(chatSDK);
94
- setAdapter(newAdapter); // eslint-disable-next-line @typescript-eslint/no-explicit-any
158
+ isStartChatSuccessful = false; // Resetting the widget state to Closed, for recent introduction of OC rate limiting(429 Error)
159
+ // TODO : How to diplay a proper UI message to customer to try after sometime at this point - cool down scenario
95
160
 
96
- if (chatSDK !== null && chatSDK !== void 0 && chatSDK.getVoiceVideoCalling) {
97
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
98
- const chatToken = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatToken());
99
161
  dispatch({
100
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
101
- payload: chatToken
162
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
163
+ payload: _ConversationState.ConversationState.Closed
102
164
  });
103
- }
165
+ return;
166
+ } // New adapter creation
104
167
 
105
- await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, false);
106
- await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch); // Set app state to Active
107
168
 
169
+ const newAdapter = await (0, _createAdapter.createAdapter)(chatSDK);
170
+ setAdapter(newAdapter);
171
+ const chatToken = await chatSDK.getChatToken();
108
172
  dispatch({
109
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
110
- payload: _ConversationState.ConversationState.Active
173
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
174
+ payload: chatToken
111
175
  });
176
+ 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));
177
+
178
+ if (persistedState) {
179
+ dispatch({
180
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_WIDGET_STATE,
181
+ payload: persistedState
182
+ });
183
+ await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, true);
184
+ return;
185
+ } // eslint-disable-next-line @typescript-eslint/no-explicit-any
186
+
187
+
188
+ const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
189
+ dispatch({
190
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
191
+ payload: liveChatContext
192
+ }); // Set post chat context in state, no survey load
193
+
194
+ await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch); // Updating chat session detail for telemetry
195
+
196
+ await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch); // Set app state to Active
197
+
198
+ if (isStartChatSuccessful) {
199
+ dispatch({
200
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
201
+ payload: _ConversationState.ConversationState.Active
202
+ });
203
+ }
112
204
 
113
205
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
114
206
  Event: _TelemetryConstants.TelemetryEvent.WidgetLoadComplete,
@@ -117,9 +209,9 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params) => {
117
209
  });
118
210
  } catch (ex) {
119
211
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.ERROR, {
120
- Event: _TelemetryConstants.TelemetryEvent.StartChatFailed,
212
+ Event: _TelemetryConstants.TelemetryEvent.WidgetLoadFailed,
121
213
  ExceptionDetails: {
122
- Exception: `Start Chat Failed: ${ex}`
214
+ Exception: `Widget load Failed: ${ex}`
123
215
  }
124
216
  });
125
217
 
@@ -136,7 +228,53 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params) => {
136
228
  payload: _ConversationState.ConversationState.OutOfOffice
137
229
  });
138
230
  }
231
+ } finally {
232
+ optionalParams = {};
233
+ }
234
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
235
+
236
+
237
+ exports.initStartChat = initStartChat;
238
+
239
+ const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdapter) => {
240
+ var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _persistedState$domai6, _persistedState$appSt;
241
+
242
+ // By pass this function in case of popout chat
243
+ if (state.appStates.skipChatButtonRendering === true) {
244
+ return false;
139
245
  }
140
- };
141
246
 
142
- exports.initStartChat = initStartChat;
247
+ const persistedState = (0, _utils.getStateFromCache)(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); //Connect to only active chat session
248
+
249
+ if (persistedState && !(0, _utils.isUndefinedOrEmpty)(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai6 = persistedState.domainStates) === null || _persistedState$domai6 === void 0 ? void 0 : _persistedState$domai6.liveChatContext) && (persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$appSt = persistedState.appStates) === null || _persistedState$appSt === void 0 ? void 0 : _persistedState$appSt.conversationState) === _ConversationState.ConversationState.Active) {
250
+ var _persistedState$domai7;
251
+
252
+ dispatch({
253
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
254
+ payload: _ConversationState.ConversationState.Loading
255
+ });
256
+ const optionalParams = {
257
+ liveChatContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai7 = persistedState.domainStates) === null || _persistedState$domai7 === void 0 ? void 0 : _persistedState$domai7.liveChatContext
258
+ };
259
+ await initStartChat(chatSDK, props.authProps, dispatch, setAdapter, optionalParams, persistedState);
260
+ return true;
261
+ } else {
262
+ return false;
263
+ }
264
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
265
+
266
+
267
+ const setCustomContextParams = (props, chatSDK) => {
268
+ var _chatSDK$omnichannelC3, _chatSDK$omnichannelC4, _props$chatConfig, _persistedState$domai8;
269
+
270
+ // Add custom context only for unauthenticated chat
271
+ const persistedState = (0, _utils.getStateFromCache)(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC3 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC3 === void 0 ? void 0 : _chatSDK$omnichannelC3.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC4 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC4 === void 0 ? void 0 : _chatSDK$omnichannelC4.widgetId);
272
+
273
+ if (!((_props$chatConfig = props.chatConfig) !== null && _props$chatConfig !== void 0 && _props$chatConfig.LiveChatConfigAuthSettings) && !(0, _utils.isUndefinedOrEmpty)(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai8 = persistedState.domainStates) === null || _persistedState$domai8 === void 0 ? void 0 : _persistedState$domai8.customContext)) {
274
+ var _persistedState$domai9;
275
+
276
+ optionalParams = Object.assign({}, optionalParams, {
277
+ customContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai9 = persistedState.domainStates) === null || _persistedState$domai9 === void 0 ? void 0 : _persistedState$domai9.customContext
278
+ });
279
+ }
280
+ };
@@ -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
  });