@microsoft/omnichannel-chat-widget 0.1.0-main.86df755 → 0.1.0-main.886e5cf

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 (186) 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 -4
  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 +76 -2
  15. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  16. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +28 -5
  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 +53 -48
  24. package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +14 -0
  25. package/lib/cjs/components/livechatwidget/common/endChat.js +142 -43
  26. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +5 -0
  27. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +48 -11
  28. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +107 -22
  29. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +11 -7
  30. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +22 -24
  31. package/lib/cjs/components/livechatwidget/common/startChat.js +179 -41
  32. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +3 -3
  33. package/lib/cjs/components/livechatwidget/interfaces/IAuthProps.js +1 -0
  34. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +249 -67
  35. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +1 -1
  36. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +8 -0
  37. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +8 -0
  38. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +22 -10
  39. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +27 -5
  40. package/lib/cjs/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  41. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +80 -0
  42. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
  43. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +51 -73
  44. package/lib/cjs/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  45. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +14 -0
  46. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +25 -48
  47. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +3 -1
  48. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +52 -0
  49. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +98 -0
  50. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +117 -0
  51. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  52. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +45 -0
  53. package/lib/cjs/contexts/common/ConversationState.js +4 -2
  54. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +13 -7
  55. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +13 -5
  56. package/lib/cjs/contexts/createReducer.js +43 -10
  57. package/lib/cjs/controller/componentController.js +5 -5
  58. package/lib/cjs/plugins/newMessageEventHandler.js +99 -0
  59. package/lib/esm/assets/Audios.js +1 -0
  60. package/lib/esm/assets/Icons.js +11 -0
  61. package/lib/esm/common/Constants.js +48 -3
  62. package/lib/esm/common/contextDataStore/DataStoreManager.js +5 -0
  63. package/lib/esm/common/interfaces/IContextDataStore.js +1 -0
  64. package/lib/esm/common/telemetry/TelemetryConstants.js +55 -3
  65. package/lib/esm/common/telemetry/TelemetryHelper.js +22 -5
  66. package/lib/esm/common/telemetry/TelemetryManager.js +22 -9
  67. package/lib/esm/common/telemetry/defaultConfigs/defaultAriaConfig.js +3 -3
  68. package/lib/esm/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  69. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +50 -15
  70. package/lib/esm/common/telemetry/loggers/consoleLogger.js +9 -5
  71. package/lib/esm/common/utils.js +55 -1
  72. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  73. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +31 -8
  74. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +7 -50
  75. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +2 -2
  76. package/lib/esm/components/footerstateful/FooterStateful.js +4 -5
  77. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +9 -3
  78. package/lib/esm/components/headerstateful/HeaderStateful.js +14 -11
  79. package/lib/esm/components/livechatwidget/common/createMarkdown.js +3 -3
  80. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +51 -49
  81. package/lib/esm/components/livechatwidget/common/disposeTelemetryLoggers.js +4 -0
  82. package/lib/esm/components/livechatwidget/common/endChat.js +139 -42
  83. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +3 -0
  84. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +42 -12
  85. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +98 -23
  86. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +10 -3
  87. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +19 -22
  88. package/lib/esm/components/livechatwidget/common/startChat.js +172 -39
  89. package/lib/esm/components/livechatwidget/common/startProactiveChat.js +5 -5
  90. package/lib/esm/components/livechatwidget/interfaces/IAuthProps.js +1 -0
  91. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +235 -71
  92. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +1 -1
  93. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +6 -0
  94. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +6 -0
  95. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +22 -10
  96. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +26 -6
  97. package/lib/esm/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  98. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +72 -0
  99. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
  100. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -12
  101. package/lib/esm/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  102. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +5 -0
  103. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +23 -46
  104. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
  105. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +41 -0
  106. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +94 -0
  107. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +107 -0
  108. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  109. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +32 -0
  110. package/lib/esm/contexts/common/ConversationState.js +4 -2
  111. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +13 -7
  112. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +13 -5
  113. package/lib/esm/contexts/createReducer.js +43 -9
  114. package/lib/esm/controller/componentController.js +5 -5
  115. package/lib/esm/plugins/newMessageEventHandler.js +82 -0
  116. package/lib/types/assets/Audios.d.ts +1 -0
  117. package/lib/types/assets/Icons.d.ts +11 -0
  118. package/lib/types/common/Constants.d.ts +26 -1
  119. package/lib/types/common/contextDataStore/DataStoreManager.d.ts +4 -0
  120. package/lib/types/common/interfaces/IContextDataStore.d.ts +14 -0
  121. package/lib/types/common/telemetry/TelemetryConstants.d.ts +43 -2
  122. package/lib/types/common/telemetry/TelemetryHelper.d.ts +3 -1
  123. package/lib/types/common/telemetry/TelemetryManager.d.ts +1 -0
  124. package/lib/types/common/telemetry/definitions/Contracts.d.ts +3 -0
  125. package/lib/types/common/telemetry/definitions/Payload.d.ts +15 -9
  126. package/lib/types/common/telemetry/interfaces/IChatSDKLogger.d.ts +1 -0
  127. package/lib/types/common/telemetry/interfaces/IInternalTelemetryData.d.ts +2 -0
  128. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +12 -0
  129. package/lib/types/common/utils.d.ts +6 -0
  130. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +5 -2
  131. package/lib/types/components/footerstateful/audionotificationstateful/interfaces/IAudioNotificationStatefulParams.d.ts +0 -1
  132. package/lib/types/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.d.ts +1 -1
  133. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +4 -1
  134. package/lib/types/components/livechatwidget/common/disposeTelemetryLoggers.d.ts +1 -0
  135. package/lib/types/components/livechatwidget/common/endChat.d.ts +4 -1
  136. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +6 -2
  137. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +1 -1
  138. package/lib/types/components/livechatwidget/common/startChat.d.ts +4 -2
  139. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +2 -1
  140. package/lib/types/components/livechatwidget/interfaces/IAuthProps.d.ts +4 -0
  141. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetComponentOverrides.d.ts +1 -0
  142. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +5 -1
  143. package/lib/types/components/prechatsurveypanestateful/interfaces/IPreChatSurveyPaneStatefulParams.d.ts +1 -1
  144. package/lib/types/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.d.ts +3 -0
  145. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +1 -1
  146. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  147. package/lib/types/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.d.ts +1 -1
  148. package/lib/types/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.d.ts +4 -0
  149. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +2 -0
  150. package/lib/types/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.d.ts +3 -0
  151. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +1 -2
  152. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.d.ts +1 -1
  153. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.d.ts +2 -0
  154. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.d.ts +1 -0
  155. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +5 -0
  156. package/lib/types/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.d.ts +1 -0
  157. package/lib/types/contexts/common/ConversationState.d.ts +4 -2
  158. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +5 -1
  159. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +14 -8
  160. package/lib/types/plugins/newMessageEventHandler.d.ts +2 -0
  161. package/package.json +11 -11
  162. package/lib/cjs/assets/audios/newMessageNotification.mp3 +0 -0
  163. package/lib/cjs/assets/icons/archiveIcon.svg +0 -3
  164. package/lib/cjs/assets/icons/audioIcon.svg +0 -6
  165. package/lib/cjs/assets/icons/blankIcon.svg +0 -6
  166. package/lib/cjs/assets/icons/excelIcon.svg +0 -6
  167. package/lib/cjs/assets/icons/imageIcon.svg +0 -6
  168. package/lib/cjs/assets/icons/oneNoteIcon.svg +0 -6
  169. package/lib/cjs/assets/icons/pdfIcon.svg +0 -6
  170. package/lib/cjs/assets/icons/powerpointIcon.svg +0 -6
  171. package/lib/cjs/assets/icons/videoIcon.svg +0 -6
  172. package/lib/cjs/assets/icons/visioIcon.svg +0 -6
  173. package/lib/cjs/assets/icons/wordIcon.svg +0 -6
  174. package/lib/esm/assets/assets.d.js +0 -0
  175. package/lib/esm/assets/audios/newMessageNotification.mp3 +0 -0
  176. package/lib/esm/assets/icons/archiveIcon.svg +0 -3
  177. package/lib/esm/assets/icons/audioIcon.svg +0 -6
  178. package/lib/esm/assets/icons/blankIcon.svg +0 -6
  179. package/lib/esm/assets/icons/excelIcon.svg +0 -6
  180. package/lib/esm/assets/icons/imageIcon.svg +0 -6
  181. package/lib/esm/assets/icons/oneNoteIcon.svg +0 -6
  182. package/lib/esm/assets/icons/pdfIcon.svg +0 -6
  183. package/lib/esm/assets/icons/powerpointIcon.svg +0 -6
  184. package/lib/esm/assets/icons/videoIcon.svg +0 -6
  185. package/lib/esm/assets/icons/visioIcon.svg +0 -6
  186. package/lib/esm/assets/icons/wordIcon.svg +0 -6
@@ -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
  });