@microsoft/omnichannel-chat-widget 0.1.0-main.8b6c0d8 → 0.1.0-main.a60f242

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 (183) 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 +49 -47
  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 +49 -11
  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 +22 -24
  31. package/lib/cjs/components/livechatwidget/common/startChat.js +174 -41
  32. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +3 -3
  33. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +249 -67
  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 +13 -7
  54. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +13 -5
  55. package/lib/cjs/contexts/createReducer.js +43 -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 -3
  64. package/lib/esm/common/telemetry/TelemetryHelper.js +22 -5
  65. package/lib/esm/common/telemetry/TelemetryManager.js +22 -9
  66. package/lib/esm/common/telemetry/defaultConfigs/defaultAriaConfig.js +3 -3
  67. package/lib/esm/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  68. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +50 -15
  69. package/lib/esm/common/telemetry/loggers/consoleLogger.js +9 -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 +31 -8
  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 +47 -48
  80. package/lib/esm/components/livechatwidget/common/disposeTelemetryLoggers.js +4 -0
  81. package/lib/esm/components/livechatwidget/common/endChat.js +139 -42
  82. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +3 -0
  83. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +43 -12
  84. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +94 -20
  85. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +10 -3
  86. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +19 -22
  87. package/lib/esm/components/livechatwidget/common/startChat.js +167 -39
  88. package/lib/esm/components/livechatwidget/common/startProactiveChat.js +5 -5
  89. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +235 -71
  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 +13 -7
  110. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +13 -5
  111. package/lib/esm/contexts/createReducer.js +43 -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 +43 -2
  120. package/lib/types/common/telemetry/TelemetryHelper.d.ts +3 -1
  121. package/lib/types/common/telemetry/TelemetryManager.d.ts +1 -0
  122. package/lib/types/common/telemetry/definitions/Contracts.d.ts +3 -0
  123. package/lib/types/common/telemetry/definitions/Payload.d.ts +15 -9
  124. package/lib/types/common/telemetry/interfaces/IChatSDKLogger.d.ts +1 -0
  125. package/lib/types/common/telemetry/interfaces/IInternalTelemetryData.d.ts +2 -0
  126. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +12 -0
  127. package/lib/types/common/utils.d.ts +6 -0
  128. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +5 -2
  129. package/lib/types/components/footerstateful/audionotificationstateful/interfaces/IAudioNotificationStatefulParams.d.ts +0 -1
  130. package/lib/types/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.d.ts +1 -1
  131. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +4 -1
  132. package/lib/types/components/livechatwidget/common/disposeTelemetryLoggers.d.ts +1 -0
  133. package/lib/types/components/livechatwidget/common/endChat.d.ts +4 -1
  134. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -2
  135. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +1 -1
  136. package/lib/types/components/livechatwidget/common/startChat.d.ts +3 -2
  137. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +2 -1
  138. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetComponentOverrides.d.ts +1 -0
  139. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +3 -1
  140. package/lib/types/components/prechatsurveypanestateful/interfaces/IPreChatSurveyPaneStatefulParams.d.ts +1 -1
  141. package/lib/types/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.d.ts +3 -0
  142. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +1 -0
  143. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  144. package/lib/types/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.d.ts +1 -1
  145. package/lib/types/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.d.ts +4 -0
  146. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +2 -0
  147. package/lib/types/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.d.ts +3 -0
  148. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +1 -2
  149. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.d.ts +1 -1
  150. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.d.ts +2 -0
  151. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.d.ts +1 -0
  152. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +5 -0
  153. package/lib/types/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.d.ts +1 -0
  154. package/lib/types/contexts/common/ConversationState.d.ts +4 -2
  155. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +5 -1
  156. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +14 -8
  157. package/lib/types/plugins/newMessageEventHandler.d.ts +2 -0
  158. package/package.json +11 -11
  159. package/lib/cjs/assets/audios/newMessageNotification.mp3 +0 -0
  160. package/lib/cjs/assets/icons/archiveIcon.svg +0 -3
  161. package/lib/cjs/assets/icons/audioIcon.svg +0 -6
  162. package/lib/cjs/assets/icons/blankIcon.svg +0 -6
  163. package/lib/cjs/assets/icons/excelIcon.svg +0 -6
  164. package/lib/cjs/assets/icons/imageIcon.svg +0 -6
  165. package/lib/cjs/assets/icons/oneNoteIcon.svg +0 -6
  166. package/lib/cjs/assets/icons/pdfIcon.svg +0 -6
  167. package/lib/cjs/assets/icons/powerpointIcon.svg +0 -6
  168. package/lib/cjs/assets/icons/videoIcon.svg +0 -6
  169. package/lib/cjs/assets/icons/visioIcon.svg +0 -6
  170. package/lib/cjs/assets/icons/wordIcon.svg +0 -6
  171. package/lib/esm/assets/assets.d.js +0 -0
  172. package/lib/esm/assets/audios/newMessageNotification.mp3 +0 -0
  173. package/lib/esm/assets/icons/archiveIcon.svg +0 -3
  174. package/lib/esm/assets/icons/audioIcon.svg +0 -6
  175. package/lib/esm/assets/icons/blankIcon.svg +0 -6
  176. package/lib/esm/assets/icons/excelIcon.svg +0 -6
  177. package/lib/esm/assets/icons/imageIcon.svg +0 -6
  178. package/lib/esm/assets/icons/oneNoteIcon.svg +0 -6
  179. package/lib/esm/assets/icons/pdfIcon.svg +0 -6
  180. package/lib/esm/assets/icons/powerpointIcon.svg +0 -6
  181. package/lib/esm/assets/icons/videoIcon.svg +0 -6
  182. package/lib/esm/assets/icons/visioIcon.svg +0 -6
  183. 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, 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, 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, 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,104 @@ 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, 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, 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);
143
+ await chatSDK.startChat(optionalParams);
144
+ isStartChatSuccessful = true;
84
145
  } catch (error) {
85
- _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.ERROR, {
146
+ _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
86
147
  Event: _TelemetryConstants.TelemetryEvent.StartChatMethodException,
87
148
  ExceptionDetails: {
88
149
  exception: `Failed to setup startChat: ${error}`
89
150
  }
90
151
  });
91
- }
92
152
 
93
- const newAdapter = await (0, _createAdapter.createAdapter)(chatSDK);
94
- setAdapter(newAdapter); // eslint-disable-next-line @typescript-eslint/no-explicit-any
153
+ isStartChatSuccessful = false; // Resetting the widget state to Closed, for recent introduction of OC rate limiting(429 Error)
154
+ // TODO : How to diplay a proper UI message to customer to try after sometime at this point - cool down scenario
95
155
 
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
156
  dispatch({
100
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
101
- payload: chatToken
157
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
158
+ payload: _ConversationState.ConversationState.Closed
102
159
  });
103
- }
160
+ return;
161
+ } // New adapter creation
104
162
 
105
- await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, false);
106
- await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch); // Set app state to Active
107
163
 
164
+ const newAdapter = await (0, _createAdapter.createAdapter)(chatSDK);
165
+ setAdapter(newAdapter);
166
+ const chatToken = await chatSDK.getChatToken();
108
167
  dispatch({
109
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
110
- payload: _ConversationState.ConversationState.Active
168
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
169
+ payload: chatToken
111
170
  });
171
+ 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));
172
+
173
+ if (persistedState) {
174
+ dispatch({
175
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_WIDGET_STATE,
176
+ payload: persistedState
177
+ });
178
+ await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, true);
179
+ return;
180
+ } // eslint-disable-next-line @typescript-eslint/no-explicit-any
181
+
182
+
183
+ const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
184
+ dispatch({
185
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
186
+ payload: liveChatContext
187
+ }); // Set post chat context in state, no survey load
188
+
189
+ await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch); // Updating chat session detail for telemetry
190
+
191
+ await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch); // Set app state to Active
192
+
193
+ if (isStartChatSuccessful) {
194
+ dispatch({
195
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
196
+ payload: _ConversationState.ConversationState.Active
197
+ });
198
+ }
112
199
 
113
200
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
114
201
  Event: _TelemetryConstants.TelemetryEvent.WidgetLoadComplete,
@@ -117,9 +204,9 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params) => {
117
204
  });
118
205
  } catch (ex) {
119
206
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.ERROR, {
120
- Event: _TelemetryConstants.TelemetryEvent.StartChatFailed,
207
+ Event: _TelemetryConstants.TelemetryEvent.WidgetLoadFailed,
121
208
  ExceptionDetails: {
122
- Exception: `Start Chat Failed: ${ex}`
209
+ Exception: `Widget load Failed: ${ex}`
123
210
  }
124
211
  });
125
212
 
@@ -136,7 +223,53 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params) => {
136
223
  payload: _ConversationState.ConversationState.OutOfOffice
137
224
  });
138
225
  }
226
+ } finally {
227
+ optionalParams = {};
228
+ }
229
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
230
+
231
+
232
+ exports.initStartChat = initStartChat;
233
+
234
+ const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdapter) => {
235
+ var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _persistedState$domai6, _persistedState$appSt;
236
+
237
+ // By pass this function in case of popout chat
238
+ if (state.appStates.skipChatButtonRendering === true) {
239
+ return false;
139
240
  }
140
- };
141
241
 
142
- exports.initStartChat = initStartChat;
242
+ 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
243
+
244
+ 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) {
245
+ var _persistedState$domai7;
246
+
247
+ dispatch({
248
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
249
+ payload: _ConversationState.ConversationState.Loading
250
+ });
251
+ const optionalParams = {
252
+ liveChatContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai7 = persistedState.domainStates) === null || _persistedState$domai7 === void 0 ? void 0 : _persistedState$domai7.liveChatContext
253
+ };
254
+ await initStartChat(chatSDK, dispatch, setAdapter, optionalParams, persistedState);
255
+ return true;
256
+ } else {
257
+ return false;
258
+ }
259
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
260
+
261
+
262
+ const setCustomContextParams = (props, chatSDK) => {
263
+ var _chatSDK$omnichannelC3, _chatSDK$omnichannelC4, _props$chatConfig, _persistedState$domai8;
264
+
265
+ // Add custom context only for unauthenticated chat
266
+ 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);
267
+
268
+ 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)) {
269
+ var _persistedState$domai9;
270
+
271
+ optionalParams = Object.assign({}, optionalParams, {
272
+ customContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai9 = persistedState.domainStates) === null || _persistedState$domai9 === void 0 ? void 0 : _persistedState$domai9.customContext
273
+ });
274
+ }
275
+ };
@@ -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
  });