@microsoft/omnichannel-chat-widget 0.1.0-main.3bd7d37 → 0.1.0-main.3c8dc3b

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