@microsoft/omnichannel-chat-widget 0.1.0-main.e170704 → 0.1.0-main.e312ecd

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 (154) hide show
  1. package/README.md +32 -0
  2. package/lib/cjs/common/Constants.js +18 -2
  3. package/lib/cjs/common/storage/default/defaultCacheManager.js +34 -0
  4. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +114 -0
  5. package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +86 -0
  6. package/lib/cjs/common/telemetry/TelemetryConstants.js +34 -3
  7. package/lib/cjs/common/telemetry/TelemetryManager.js +7 -1
  8. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +33 -21
  9. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +6 -5
  10. package/lib/cjs/common/utils.js +76 -2
  11. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  12. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +19 -3
  13. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +0 -1
  14. package/lib/cjs/components/footerstateful/FooterStateful.js +1 -8
  15. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +11 -2
  16. package/lib/cjs/components/headerstateful/HeaderStateful.js +4 -3
  17. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +44 -0
  18. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +23 -0
  19. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  20. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +39 -0
  21. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +70 -0
  22. package/lib/cjs/components/livechatwidget/common/Deferred.js +42 -0
  23. package/lib/cjs/components/livechatwidget/common/authHelper.js +65 -0
  24. package/lib/cjs/components/livechatwidget/common/createAdapter.js +13 -1
  25. package/lib/cjs/components/livechatwidget/common/createFooter.js +7 -16
  26. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +12 -0
  27. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +31 -30
  28. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +29 -17
  29. package/lib/cjs/components/livechatwidget/common/endChat.js +63 -16
  30. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +24 -3
  31. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +55 -35
  32. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +0 -4
  33. package/lib/cjs/components/livechatwidget/common/shareObservable.js +45 -0
  34. package/lib/cjs/components/livechatwidget/common/startChat.js +179 -72
  35. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +273 -91
  36. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +5 -10
  37. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +17 -1
  38. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +96 -2
  39. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +4 -1
  40. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +11 -0
  41. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +2 -0
  42. package/lib/cjs/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  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 +16 -2
  46. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +2 -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/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
  50. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +117 -0
  51. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +1 -0
  52. package/lib/cjs/contexts/common/ConversationState.js +3 -2
  53. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +3 -0
  54. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +13 -5
  55. package/lib/cjs/contexts/createReducer.js +17 -0
  56. package/lib/cjs/controller/componentController.js +3 -3
  57. package/lib/cjs/plugins/newMessageEventHandler.js +10 -13
  58. package/lib/esm/common/Constants.js +18 -2
  59. package/lib/esm/common/storage/default/defaultCacheManager.js +19 -0
  60. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +102 -0
  61. package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +71 -0
  62. package/lib/esm/common/telemetry/TelemetryConstants.js +34 -3
  63. package/lib/esm/common/telemetry/TelemetryManager.js +6 -1
  64. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +30 -12
  65. package/lib/esm/common/telemetry/loggers/consoleLogger.js +6 -5
  66. package/lib/esm/common/utils.js +53 -0
  67. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  68. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +21 -6
  69. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +0 -1
  70. package/lib/esm/components/footerstateful/FooterStateful.js +1 -8
  71. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +9 -3
  72. package/lib/esm/components/headerstateful/HeaderStateful.js +4 -3
  73. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +34 -0
  74. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +14 -0
  75. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  76. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +29 -0
  77. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +59 -0
  78. package/lib/esm/components/livechatwidget/common/Deferred.js +33 -0
  79. package/lib/esm/components/livechatwidget/common/authHelper.js +50 -0
  80. package/lib/esm/components/livechatwidget/common/createAdapter.js +12 -2
  81. package/lib/esm/components/livechatwidget/common/createFooter.js +4 -15
  82. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +8 -0
  83. package/lib/esm/components/livechatwidget/common/createMarkdown.js +31 -30
  84. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +29 -17
  85. package/lib/esm/components/livechatwidget/common/endChat.js +61 -17
  86. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +23 -5
  87. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +56 -37
  88. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +0 -4
  89. package/lib/esm/components/livechatwidget/common/shareObservable.js +38 -0
  90. package/lib/esm/components/livechatwidget/common/startChat.js +174 -75
  91. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +265 -94
  92. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +7 -11
  93. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +17 -1
  94. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +86 -2
  95. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -1
  96. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +4 -0
  97. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +2 -0
  98. package/lib/esm/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  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 +16 -2
  102. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.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/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
  106. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +107 -0
  107. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +1 -0
  108. package/lib/esm/contexts/common/ConversationState.js +3 -2
  109. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +3 -0
  110. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +11 -5
  111. package/lib/esm/contexts/createReducer.js +17 -0
  112. package/lib/esm/controller/componentController.js +3 -3
  113. package/lib/esm/plugins/newMessageEventHandler.js +10 -12
  114. package/lib/types/common/Constants.d.ts +9 -1
  115. package/lib/types/common/interfaces/IContextDataStore.d.ts +1 -1
  116. package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
  117. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
  118. package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
  119. package/lib/types/common/telemetry/TelemetryConstants.d.ts +27 -5
  120. package/lib/types/common/telemetry/TelemetryHelper.d.ts +1 -0
  121. package/lib/types/common/telemetry/definitions/Payload.d.ts +12 -9
  122. package/lib/types/common/utils.d.ts +7 -1
  123. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +2 -1
  124. package/lib/types/components/livechatwidget/common/ActivityStreamHandler.d.ts +14 -0
  125. package/lib/types/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.d.ts +5 -0
  126. package/lib/types/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.d.ts +6 -0
  127. package/lib/types/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.d.ts +7 -0
  128. package/lib/types/components/livechatwidget/common/ChatAdapterShim.d.ts +7 -0
  129. package/lib/types/components/livechatwidget/common/Deferred.d.ts +9 -0
  130. package/lib/types/components/livechatwidget/common/authHelper.d.ts +5 -0
  131. package/lib/types/components/livechatwidget/common/endChat.d.ts +1 -1
  132. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -4
  133. package/lib/types/components/livechatwidget/common/shareObservable.d.ts +1 -0
  134. package/lib/types/components/livechatwidget/common/startChat.d.ts +4 -2
  135. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +1 -0
  136. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +1 -0
  137. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +0 -1
  138. package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.d.ts +2 -0
  139. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  140. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +4 -0
  141. package/lib/types/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.d.ts +4 -0
  142. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +2 -1
  143. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +4 -0
  144. package/lib/types/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.d.ts +3 -0
  145. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.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/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
  149. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +5 -0
  150. package/lib/types/contexts/common/ConversationState.d.ts +3 -2
  151. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +2 -1
  152. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +4 -1
  153. package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
  154. package/package.json +4 -3
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.prepareStartChat = exports.initStartChat = void 0;
6
+ exports.setPreChatAndInitiateChat = exports.prepareStartChat = exports.initStartChat = void 0;
7
7
 
8
8
  var _Constants = require("../../../common/Constants");
9
9
 
@@ -11,8 +11,6 @@ var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants"
11
11
 
12
12
  var _ConversationState = require("../../../contexts/common/ConversationState");
13
13
 
14
- var _DataStoreManager = require("../../../common/contextDataStore/DataStoreManager");
15
-
16
14
  var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
17
15
 
18
16
  var _NotificationHandler = require("../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler");
@@ -35,9 +33,23 @@ var _setPostChatContextAndLoadSurvey = require("./setPostChatContextAndLoadSurve
35
33
 
36
34
  var _updateSessionDataForTelemetry = require("./updateSessionDataForTelemetry");
37
35
 
36
+ var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
37
+
38
+ var _ActivityStreamHandler = require("./ActivityStreamHandler");
39
+
40
+ var _authHelper = require("./authHelper");
41
+
38
42
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
+ let optionalParams = {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
+
45
+ let widgetInstanceId; // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
+
39
47
  const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) => {
40
- var _props$reconnectChatP;
48
+ var _props$controlProps, _props$reconnectChatP;
49
+
50
+ optionalParams = {}; //Resetting to ensure no stale values
51
+
52
+ widgetInstanceId = props === null || props === void 0 ? void 0 : (_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.widgetInstanceId; // Can connect to existing chat session
41
53
 
42
54
  if (await canConnectToExistingChat(props, chatSDK, state, dispatch, setAdapter)) {
43
55
  return;
@@ -45,60 +57,108 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
45
57
 
46
58
 
47
59
  if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
48
- var _props$reconnectChatP2, _props$reconnectChatP3;
60
+ var _props$reconnectChatP2, _props$reconnectChatP3, _props$reconnectChatP4;
49
61
 
50
- 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);
51
- } else {
52
- // Getting PreChat Survey Context
53
- const parseToJson = false;
54
- const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
55
- const showPrechat = state.appStates.conversationState === _ConversationState.ConversationState.ProactiveChat ? preChatSurveyResponse && state.appStates.proactiveChatStates.proactiveChatEnablePrechat : preChatSurveyResponse; // Getting reconnectId for authenticated chat
62
+ await (0, _reconnectChatHelper.handleRedirectUnauthenticatedReconnectChat)(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, initStartChat, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.isReconnectEnabled, (_props$reconnectChatP3 = props.reconnectChatPaneProps) === null || _props$reconnectChatP3 === void 0 ? void 0 : _props$reconnectChatP3.reconnectId, (_props$reconnectChatP4 = props.reconnectChatPaneProps) === null || _props$reconnectChatP4 === void 0 ? void 0 : _props$reconnectChatP4.redirectInSameWindow);
63
+ return;
64
+ } // Getting reconnectId for authenticated chat
56
65
 
57
- const reconnectId = await (0, _reconnectChatHelper.getReconnectIdForAuthenticatedChat)(props, chatSDK);
58
66
 
59
- if (reconnectId) {
60
- dispatch({
61
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
62
- payload: reconnectId
63
- });
64
- dispatch({
65
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
66
- payload: _ConversationState.ConversationState.ReconnectChat
67
- });
68
- } else if (showPrechat) {
69
- dispatch({
70
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
71
- payload: preChatSurveyResponse
72
- });
73
- dispatch({
74
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
75
- payload: _ConversationState.ConversationState.Prechat
76
- });
77
- } else {
78
- dispatch({
79
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
80
- payload: _ConversationState.ConversationState.Loading
81
- });
82
- await initStartChat(chatSDK, dispatch, setAdapter);
83
- }
84
- }
67
+ const reconnectId = await (0, _reconnectChatHelper.getReconnectIdForAuthenticatedChat)(props, chatSDK);
68
+
69
+ if (reconnectId) {
70
+ dispatch({
71
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
72
+ payload: reconnectId
73
+ });
74
+ dispatch({
75
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
76
+ payload: _ConversationState.ConversationState.ReconnectChat
77
+ });
78
+ return;
79
+ } // Setting Proactive chat settings
80
+
81
+
82
+ const isProactiveChat = state.appStates.conversationState === _ConversationState.ConversationState.ProactiveChat;
83
+ const isPreChatEnabledInProactiveChat = state.appStates.proactiveChatStates.proactiveChatEnablePrechat; //Setting PreChat and intiate chat
84
+
85
+ setPreChatAndInitiateChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, isProactiveChat, isPreChatEnabledInProactiveChat);
85
86
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
86
87
 
87
88
 
88
89
  exports.prepareStartChat = prepareStartChat;
89
90
 
90
- const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedState) => {
91
+ const setPreChatAndInitiateChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, isProactiveChat, proactiveChatEnablePrechatState) => {
92
+ // Getting prechat Survey Context
93
+ const parseToJson = false;
94
+ const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
95
+ const showPrechat = isProactiveChat ? preChatSurveyResponse && proactiveChatEnablePrechatState : preChatSurveyResponse;
96
+
97
+ if (showPrechat) {
98
+ dispatch({
99
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
100
+ payload: preChatSurveyResponse
101
+ });
102
+ dispatch({
103
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
104
+ payload: _ConversationState.ConversationState.Prechat
105
+ });
106
+ return;
107
+ } //Initiate start chat
108
+
109
+
110
+ dispatch({
111
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
112
+ payload: _ConversationState.ConversationState.Loading
113
+ });
114
+ await initStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter);
115
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
116
+
117
+
118
+ exports.setPreChatAndInitiateChat = setPreChatAndInitiateChat;
119
+
120
+ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, params, persistedState) => {
91
121
  try {
92
122
  var _newAdapter$activity$, _TelemetryTimers$Widg;
93
123
 
124
+ const authClientFunction = (0, _authHelper.getAuthClientFunction)(chatConfig);
125
+
126
+ if (getAuthToken && authClientFunction) {
127
+ // set auth token to chat sdk before start chat
128
+ const authSuccess = await (0, _authHelper.handleAuthentication)(chatSDK, chatConfig, getAuthToken);
129
+
130
+ if (!authSuccess) {
131
+ return;
132
+ }
133
+ }
134
+
135
+ let isStartChatSuccessful = false; //Check if chat retrieved from cache
136
+
137
+ if (persistedState || params !== null && params !== void 0 && params.liveChatContext) {
138
+ var _persistedState$domai, _persistedState$domai2, _persistedState$domai3, _persistedState$domai4, _persistedState$domai5;
139
+
140
+ _omnichannelChatComponents.BroadcastService.postMessage({
141
+ eventName: _TelemetryConstants.BroadcastEvent.ChatRetrievedFromCache,
142
+ payload: {
143
+ 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,
144
+ 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
145
+ }
146
+ });
147
+ }
148
+
94
149
  try {
150
+ //Start widget load timer
95
151
  _TelemetryManager.TelemetryTimers.WidgetLoadTimer = (0, _utils.createTimer)();
96
152
 
97
153
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
98
154
  Event: _TelemetryConstants.TelemetryEvent.StartChatSDKCall
99
- });
155
+ }); // Set custom context params
100
156
 
101
- await chatSDK.startChat(params);
157
+
158
+ setCustomContextParams(chatSDK);
159
+ optionalParams = Object.assign({}, params, optionalParams);
160
+ await chatSDK.startChat(optionalParams);
161
+ isStartChatSuccessful = true;
102
162
  } catch (error) {
103
163
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
104
164
  Event: _TelemetryConstants.TelemetryEvent.StartChatMethodException,
@@ -106,43 +166,54 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedSta
106
166
  exception: `Failed to setup startChat: ${error}`
107
167
  }
108
168
  });
109
- }
169
+
170
+ isStartChatSuccessful = false; // Resetting the widget state to Closed, for recent introduction of OC rate limiting(429 Error)
171
+ // TODO : How to diplay a proper UI message to customer to try after sometime at this point - cool down scenario
172
+
173
+ dispatch({
174
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
175
+ payload: _ConversationState.ConversationState.Closed
176
+ });
177
+ return;
178
+ } // New adapter creation
179
+
110
180
 
111
181
  const newAdapter = await (0, _createAdapter.createAdapter)(chatSDK);
112
182
  setAdapter(newAdapter);
113
183
  const chatToken = await chatSDK.getChatToken();
184
+ dispatch({
185
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
186
+ payload: chatToken
187
+ });
114
188
  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));
115
189
 
116
- if (!persistedState) {
117
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
118
- if (chatSDK !== null && chatSDK !== void 0 && chatSDK.getVoiceVideoCalling) {
119
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
120
- const chatToken = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatToken());
121
- dispatch({
122
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
123
- payload: chatToken
124
- });
125
- } // eslint-disable-next-line @typescript-eslint/no-explicit-any
126
-
127
-
128
- const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
190
+ if (persistedState) {
129
191
  dispatch({
130
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
131
- payload: liveChatContext
192
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_WIDGET_STATE,
193
+ payload: persistedState
132
194
  });
133
- await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch);
134
- await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch); // Set app state to Active
195
+ await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, true);
196
+ return;
197
+ } // eslint-disable-next-line @typescript-eslint/no-explicit-any
198
+
199
+
200
+ const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
201
+ dispatch({
202
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
203
+ payload: liveChatContext
204
+ }); // Set post chat context in state, no survey load
205
+
206
+ await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch); // Updating chat session detail for telemetry
207
+
208
+ await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch); // Set app state to Active
209
+
210
+ if (isStartChatSuccessful) {
211
+ _ActivityStreamHandler.ActivityStreamHandler.uncork();
135
212
 
136
213
  dispatch({
137
214
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
138
215
  payload: _ConversationState.ConversationState.Active
139
216
  });
140
- } else {
141
- dispatch({
142
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_WIDGET_STATE,
143
- payload: persistedState
144
- });
145
- await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, true);
146
217
  }
147
218
 
148
219
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
@@ -171,6 +242,9 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedSta
171
242
  payload: _ConversationState.ConversationState.OutOfOffice
172
243
  });
173
244
  }
245
+ } finally {
246
+ optionalParams = {};
247
+ widgetInstanceId = "";
174
248
  }
175
249
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
176
250
 
@@ -178,24 +252,57 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedSta
178
252
  exports.initStartChat = initStartChat;
179
253
 
180
254
  const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdapter) => {
181
- var _DataStoreManager$cli, _persistedState$domai;
255
+ var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _props$controlProps2, _persistedState$domai6, _persistedState$appSt;
182
256
 
183
- const widgetStateFromCache = (_DataStoreManager$cli = _DataStoreManager.DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.getData(_Constants.Constants.widgetStateDataKey, "localStorage");
184
- const persistedState = widgetStateFromCache ? JSON.parse(widgetStateFromCache) : undefined;
257
+ // By pass this function in case of popout chat
258
+ if (state.appStates.skipChatButtonRendering === true) {
259
+ return false;
260
+ }
261
+
262
+ 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, (props === null || props === void 0 ? void 0 : (_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.widgetInstanceId) ?? ""); //Connect to only active chat session
185
263
 
186
- if (persistedState !== null && persistedState !== void 0 && (_persistedState$domai = persistedState.domainStates) !== null && _persistedState$domai !== void 0 && _persistedState$domai.liveChatContext) {
187
- var _persistedState$domai2;
264
+ 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) {
265
+ var _persistedState$domai7;
188
266
 
189
267
  dispatch({
190
268
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
191
269
  payload: _ConversationState.ConversationState.Loading
192
270
  });
193
271
  const optionalParams = {
194
- liveChatContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai2 = persistedState.domainStates) === null || _persistedState$domai2 === void 0 ? void 0 : _persistedState$domai2.liveChatContext
272
+ liveChatContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai7 = persistedState.domainStates) === null || _persistedState$domai7 === void 0 ? void 0 : _persistedState$domai7.liveChatContext
195
273
  };
196
- await initStartChat(chatSDK, dispatch, setAdapter, optionalParams, persistedState);
274
+ await initStartChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams, persistedState);
197
275
  return true;
198
276
  } else {
199
277
  return false;
200
278
  }
279
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
280
+
281
+
282
+ const setCustomContextParams = chatSDK => {
283
+ var _chatSDK$omnichannelC3, _chatSDK$omnichannelC4, _persistedState$domai8;
284
+
285
+ // Add custom context only for unauthenticated chat
286
+ 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, widgetInstanceId ?? "");
287
+
288
+ if (!(0, _utils.isUndefinedOrEmpty)(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai8 = persistedState.domainStates) === null || _persistedState$domai8 === void 0 ? void 0 : _persistedState$domai8.customContext)) {
289
+ var _persistedState$domai9, _persistedState$domai10;
290
+
291
+ if (persistedState !== null && persistedState !== void 0 && (_persistedState$domai9 = persistedState.domainStates.liveChatConfig) !== null && _persistedState$domai9 !== void 0 && _persistedState$domai9.LiveChatConfigAuthSettings) {
292
+ const errorMessage = "Use of custom context with authenticated chat is deprecated. The chat would not go through.";
293
+
294
+ _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.WARN, {
295
+ Event: _TelemetryConstants.TelemetryEvent.StartChatMethodException,
296
+ ExceptionDetails: {
297
+ exception: errorMessage
298
+ }
299
+ });
300
+
301
+ throw new Error(errorMessage);
302
+ }
303
+
304
+ optionalParams = Object.assign({}, optionalParams, {
305
+ customContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai10 = persistedState.domainStates) === null || _persistedState$domai10 === void 0 ? void 0 : _persistedState$domai10.customContext
306
+ });
307
+ }
201
308
  };