@microsoft/omnichannel-chat-widget 0.1.0-main.47ede4d → 0.1.0-main.5063558

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