@microsoft/omnichannel-chat-widget 0.1.0-main.a72fbb6 → 0.1.0-main.acb91cf

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 (96) hide show
  1. package/lib/cjs/common/Constants.js +2 -0
  2. package/lib/cjs/common/telemetry/TelemetryConstants.js +6 -0
  3. package/lib/cjs/common/utils.js +20 -7
  4. package/lib/cjs/components/footerstateful/FooterStateful.js +1 -8
  5. package/lib/cjs/components/headerstateful/HeaderStateful.js +2 -1
  6. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +44 -0
  7. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +23 -0
  8. package/lib/cjs/components/livechatwidget/{interfaces/IAuthProps.js → common/ActivitySubscriber/IActivitySubscriber.js} +0 -0
  9. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +39 -0
  10. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +70 -0
  11. package/lib/cjs/components/livechatwidget/common/Deferred.js +42 -0
  12. package/lib/cjs/components/livechatwidget/common/authHelper.js +65 -0
  13. package/lib/cjs/components/livechatwidget/common/createAdapter.js +13 -1
  14. package/lib/cjs/components/livechatwidget/common/createFooter.js +7 -16
  15. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +12 -0
  16. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +8 -6
  17. package/lib/cjs/components/livechatwidget/common/endChat.js +3 -3
  18. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +4 -0
  19. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +55 -35
  20. package/lib/cjs/components/livechatwidget/common/shareObservable.js +45 -0
  21. package/lib/cjs/components/livechatwidget/common/startChat.js +55 -27
  22. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +113 -55
  23. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +1 -1
  24. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +11 -0
  25. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +4 -1
  26. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +11 -0
  27. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +2 -0
  28. package/lib/cjs/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  29. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +2 -1
  30. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +1 -0
  31. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +2 -1
  32. package/lib/cjs/contexts/createReducer.js +8 -0
  33. package/lib/esm/common/Constants.js +2 -0
  34. package/lib/esm/common/telemetry/TelemetryConstants.js +6 -0
  35. package/lib/esm/common/utils.js +14 -5
  36. package/lib/esm/components/footerstateful/FooterStateful.js +1 -8
  37. package/lib/esm/components/headerstateful/HeaderStateful.js +2 -1
  38. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +34 -0
  39. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +14 -0
  40. package/lib/esm/components/livechatwidget/{interfaces/IAuthProps.js → common/ActivitySubscriber/IActivitySubscriber.js} +0 -0
  41. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +29 -0
  42. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +59 -0
  43. package/lib/esm/components/livechatwidget/common/Deferred.js +33 -0
  44. package/lib/esm/components/livechatwidget/common/authHelper.js +50 -0
  45. package/lib/esm/components/livechatwidget/common/createAdapter.js +12 -2
  46. package/lib/esm/components/livechatwidget/common/createFooter.js +4 -15
  47. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +8 -0
  48. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +8 -6
  49. package/lib/esm/components/livechatwidget/common/endChat.js +3 -3
  50. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +4 -0
  51. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +55 -37
  52. package/lib/esm/components/livechatwidget/common/shareObservable.js +38 -0
  53. package/lib/esm/components/livechatwidget/common/startChat.js +51 -28
  54. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +112 -57
  55. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +1 -1
  56. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +10 -0
  57. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -1
  58. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +4 -0
  59. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +2 -0
  60. package/lib/esm/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  61. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +2 -1
  62. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +1 -0
  63. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +2 -1
  64. package/lib/esm/contexts/createReducer.js +8 -0
  65. package/lib/types/common/Constants.d.ts +1 -0
  66. package/lib/types/common/telemetry/TelemetryConstants.d.ts +5 -1
  67. package/lib/types/common/telemetry/TelemetryHelper.d.ts +1 -1
  68. package/lib/types/common/utils.d.ts +5 -4
  69. package/lib/types/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.d.ts +1 -1
  70. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +2 -1
  71. package/lib/types/components/livechatwidget/common/ActivityStreamHandler.d.ts +14 -0
  72. package/lib/types/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.d.ts +5 -0
  73. package/lib/types/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.d.ts +6 -0
  74. package/lib/types/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.d.ts +7 -0
  75. package/lib/types/components/livechatwidget/common/ChatAdapterShim.d.ts +7 -0
  76. package/lib/types/components/livechatwidget/common/Deferred.d.ts +9 -0
  77. package/lib/types/components/livechatwidget/common/authHelper.d.ts +5 -0
  78. package/lib/types/components/livechatwidget/common/endChat.d.ts +1 -1
  79. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -5
  80. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +1 -1
  81. package/lib/types/components/livechatwidget/common/shareObservable.d.ts +1 -0
  82. package/lib/types/components/livechatwidget/common/startChat.d.ts +3 -3
  83. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +1 -1
  84. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +1 -0
  85. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +1 -2
  86. package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.d.ts +2 -0
  87. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  88. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +4 -0
  89. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +2 -0
  90. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +1 -1
  91. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
  92. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.d.ts +1 -1
  93. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +1 -0
  94. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +2 -1
  95. package/package.json +4 -3
  96. package/lib/types/components/livechatwidget/interfaces/IAuthProps.d.ts +0 -4
@@ -17,24 +17,34 @@ var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidget
17
17
 
18
18
  var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
19
19
 
20
+ var _authHelper = require("./authHelper");
21
+
20
22
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
- const getChatReconnectContext = async (chatSDK, reconnectId) => {
22
- try {
23
- if (reconnectId) {
24
- const chatReconnectOptionalParams = {
25
- reconnectId: reconnectId
26
- };
27
- return await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatReconnectContext(chatReconnectOptionalParams));
28
- } else {
29
- return await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatReconnectContext());
30
- }
31
- } catch (ex) {
32
- _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
33
- Event: _TelemetryConstants.TelemetryEvent.GetChatReconnectContextSDKCallFailed,
34
- ExceptionDetails: {
35
- exception: ex
23
+ const getChatReconnectContext = async (chatSDK, chatConfig, getAuthToken, isReconnectEnabled, reconnectId) => {
24
+ if (isReconnectEnabled) {
25
+ try {
26
+ if (reconnectId) {
27
+ const chatReconnectOptionalParams = {
28
+ reconnectId: reconnectId
29
+ };
30
+ return await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatReconnectContext(chatReconnectOptionalParams));
31
+ } else {
32
+ // set auth token to chat sdk to get reconnectId for auth chat
33
+ await (0, _authHelper.handleAuthentication)(chatSDK, chatConfig, getAuthToken);
34
+ const reconnectChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatReconnectContext()); // remove auth token after reconnectId is fetched
35
+ // this will be reset later at start chat
36
+
37
+ (0, _authHelper.removeAuthTokenProvider)(chatSDK);
38
+ return reconnectChatContext;
36
39
  }
37
- });
40
+ } catch (ex) {
41
+ _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
42
+ Event: _TelemetryConstants.TelemetryEvent.GetChatReconnectContextSDKCallFailed,
43
+ ExceptionDetails: {
44
+ exception: ex
45
+ }
46
+ });
47
+ }
38
48
  }
39
49
 
40
50
  return null;
@@ -44,13 +54,23 @@ const getChatReconnectContext = async (chatSDK, reconnectId) => {
44
54
  exports.getChatReconnectContext = getChatReconnectContext;
45
55
 
46
56
  const getReconnectIdForAuthenticatedChat = async (props, chatSDK) => {
47
- var _props$reconnectChatP, _props$authProps;
57
+ var _props$chatConfig, _props$reconnectChatP;
58
+
59
+ let authClientFunction = undefined;
48
60
 
49
- if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.isReconnectEnabled && (_props$authProps = props.authProps) !== null && _props$authProps !== void 0 && _props$authProps.authClientFunction // TODO: Implement this after storage is in place
61
+ if ((_props$chatConfig = props.chatConfig) !== null && _props$chatConfig !== void 0 && _props$chatConfig.LiveChatConfigAuthSettings) {
62
+ var _props$chatConfig2, _props$chatConfig2$Li;
63
+
64
+ authClientFunction = ((_props$chatConfig2 = props.chatConfig) === null || _props$chatConfig2 === void 0 ? void 0 : (_props$chatConfig2$Li = _props$chatConfig2.LiveChatConfigAuthSettings) === null || _props$chatConfig2$Li === void 0 ? void 0 : _props$chatConfig2$Li.msdyn_javascriptclientfunction) ?? undefined;
65
+ }
66
+
67
+ if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.isReconnectEnabled && authClientFunction // TODO: Implement this after storage is in place
50
68
 
51
69
  /* && !isLoadWithState() */
52
70
  ) {
53
- const previousActiveSessionResponse = await getChatReconnectContext(chatSDK);
71
+ var _props$reconnectChatP2;
72
+
73
+ const previousActiveSessionResponse = await getChatReconnectContext(chatSDK, props.chatConfig, props.getAuthToken, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.isReconnectEnabled);
54
74
 
55
75
  if (previousActiveSessionResponse && previousActiveSessionResponse.reconnectId) {
56
76
  return previousActiveSessionResponse.reconnectId;
@@ -63,31 +83,31 @@ const getReconnectIdForAuthenticatedChat = async (props, chatSDK) => {
63
83
 
64
84
  exports.getReconnectIdForAuthenticatedChat = getReconnectIdForAuthenticatedChat;
65
85
 
66
- const handleUnauthenticatedReconnectChat = async (chatSDK, authProps, dispatch, setAdapter, reconnectId, initStartChat, redirectInSameWindow) => {
67
- const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, reconnectId);
86
+ const handleUnauthenticatedReconnectChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, isReconnectEnabled, reconnectId, initStartChat, redirectInSameWindow) => {
87
+ const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, chatConfig, getAuthToken, isReconnectEnabled, reconnectId);
68
88
 
69
89
  if (shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
70
- await redirectOrStartNewChat(reconnectAvailabilityResponse, chatSDK, authProps, dispatch, setAdapter, initStartChat, redirectInSameWindow);
90
+ await redirectOrStartNewChat(reconnectAvailabilityResponse, chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat, redirectInSameWindow);
71
91
  } else {
72
- await setReconnectIdAndStartChat(chatSDK, authProps, dispatch, setAdapter, reconnectId, initStartChat);
92
+ await setReconnectIdAndStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, reconnectId, initStartChat);
73
93
  }
74
94
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
95
 
76
96
 
77
97
  exports.handleUnauthenticatedReconnectChat = handleUnauthenticatedReconnectChat;
78
98
 
79
- const startUnauthenticatedReconnectChat = async (chatSDK, authProps, dispatch, setAdapter, reconnectId, initStartChat) => {
80
- const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, reconnectId);
99
+ const startUnauthenticatedReconnectChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, isReconnectEnabled, reconnectId, initStartChat) => {
100
+ const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, chatConfig, getAuthToken, isReconnectEnabled, reconnectId);
81
101
 
82
102
  if (!shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
83
- await setReconnectIdAndStartChat(chatSDK, authProps, dispatch, setAdapter, reconnectId, initStartChat);
103
+ await setReconnectIdAndStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, reconnectId, initStartChat);
84
104
  }
85
105
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
86
106
 
87
107
 
88
108
  exports.startUnauthenticatedReconnectChat = startUnauthenticatedReconnectChat;
89
109
 
90
- const setReconnectIdAndStartChat = async (chatSDK, authProps, dispatch, setAdapter, reconnectId, initStartChat) => {
110
+ const setReconnectIdAndStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, reconnectId, initStartChat) => {
91
111
  const startUnauthenticatedReconnectChat = {
92
112
  eventName: _TelemetryConstants.BroadcastEvent.StartUnauthenticatedReconnectChat
93
113
  };
@@ -105,7 +125,7 @@ const setReconnectIdAndStartChat = async (chatSDK, authProps, dispatch, setAdapt
105
125
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
106
126
  payload: _ConversationState.ConversationState.Loading
107
127
  });
108
- await initStartChat(chatSDK, authProps, dispatch, setAdapter, optionalParams);
128
+ await initStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, optionalParams);
109
129
  };
110
130
 
111
131
  const redirectPage = (redirectURL, redirectInSameWindow) => {
@@ -128,7 +148,7 @@ const shouldRedirectOrStartNewChat = reconnectAvailabilityResponse => {
128
148
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
129
149
 
130
150
 
131
- const startNewChatEmptyRedirectionUrl = async (chatSDK, authProps, dispatch, setAdapter, initStartChat) => {
151
+ const startNewChatEmptyRedirectionUrl = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat) => {
132
152
  const startUnauthenticatedReconnectChat = {
133
153
  eventName: _TelemetryConstants.BroadcastEvent.StartUnauthenticatedReconnectChat
134
154
  };
@@ -153,26 +173,26 @@ const startNewChatEmptyRedirectionUrl = async (chatSDK, authProps, dispatch, set
153
173
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
154
174
  payload: _ConversationState.ConversationState.Loading
155
175
  });
156
- await initStartChat(chatSDK, authProps, dispatch, setAdapter);
176
+ await initStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter);
157
177
  }
158
178
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
159
179
 
160
180
 
161
- const handleRedirectUnauthenticatedReconnectChat = async (chatSDK, authProps, dispatch, setAdapter, initStartChat, reconnectId, redirectInSameWindow) => {
162
- const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, reconnectId);
181
+ const handleRedirectUnauthenticatedReconnectChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat, isReconnectEnabled, reconnectId, redirectInSameWindow) => {
182
+ const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, chatConfig, getAuthToken, isReconnectEnabled, reconnectId);
163
183
 
164
184
  if (shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
165
- await redirectOrStartNewChat(reconnectAvailabilityResponse, chatSDK, authProps, dispatch, setAdapter, initStartChat, redirectInSameWindow);
185
+ await redirectOrStartNewChat(reconnectAvailabilityResponse, chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat, redirectInSameWindow);
166
186
  }
167
187
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
168
188
 
169
189
 
170
190
  exports.handleRedirectUnauthenticatedReconnectChat = handleRedirectUnauthenticatedReconnectChat;
171
191
 
172
- const redirectOrStartNewChat = async (reconnectAvailabilityResponse, chatSDK, authProps, dispatch, setAdapter, initStartChat, redirectInSameWindow) => {
192
+ const redirectOrStartNewChat = async (reconnectAvailabilityResponse, chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat, redirectInSameWindow) => {
173
193
  if (reconnectAvailabilityResponse.redirectURL) {
174
194
  redirectPage(reconnectAvailabilityResponse.redirectURL, redirectInSameWindow);
175
195
  } else {
176
- await startNewChatEmptyRedirectionUrl(chatSDK, authProps, dispatch, setAdapter, initStartChat);
196
+ await startNewChatEmptyRedirectionUrl(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat);
177
197
  }
178
198
  };
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.shareObservable = shareObservable;
7
+
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
+ function shareObservable(observable) {
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ let observers = []; // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
+
13
+ let subscription; // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
+
15
+ return new window.Observable(observer => {
16
+ if (!subscription) {
17
+ subscription = observable.subscribe({
18
+ complete() {
19
+ observers.forEach(observer => observer.complete());
20
+ },
21
+
22
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
+ error(err) {
24
+ observers.forEach(observer => observer.error(err));
25
+ },
26
+
27
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
+ next(value) {
29
+ observers.forEach(observer => observer.next(value));
30
+ }
31
+
32
+ });
33
+ }
34
+
35
+ observers.push(observer);
36
+ return () => {
37
+ observers = observers.filter(o => o !== observer);
38
+
39
+ if (!observers.length) {
40
+ subscription.unsubscribe();
41
+ subscription = null;
42
+ }
43
+ };
44
+ });
45
+ }
@@ -35,14 +35,21 @@ var _updateSessionDataForTelemetry = require("./updateSessionDataForTelemetry");
35
35
 
36
36
  var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
37
37
 
38
+ var _ActivityStreamHandler = require("./ActivityStreamHandler");
39
+
40
+ var _authHelper = require("./authHelper");
41
+
38
42
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
43
  let optionalParams = {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
44
 
45
+ let widgetInstanceId; // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
+
41
47
  const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) => {
42
- var _props$reconnectChatP;
48
+ var _props$controlProps, _props$reconnectChatP;
43
49
 
44
50
  optionalParams = {}; //Resetting to ensure no stale values
45
- // Can connect to existing chat session
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
46
53
 
47
54
  if (await canConnectToExistingChat(props, chatSDK, state, dispatch, setAdapter)) {
48
55
  return;
@@ -50,9 +57,9 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
50
57
 
51
58
 
52
59
  if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
53
- var _props$reconnectChatP2, _props$reconnectChatP3;
60
+ var _props$reconnectChatP2, _props$reconnectChatP3, _props$reconnectChatP4;
54
61
 
55
- await (0, _reconnectChatHelper.handleRedirectUnauthenticatedReconnectChat)(chatSDK, props.authProps, dispatch, setAdapter, initStartChat, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.reconnectId, (_props$reconnectChatP3 = props.reconnectChatPaneProps) === null || _props$reconnectChatP3 === void 0 ? void 0 : _props$reconnectChatP3.redirectInSameWindow);
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);
56
63
  return;
57
64
  } // Getting reconnectId for authenticated chat
58
65
 
@@ -69,21 +76,19 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
69
76
  payload: _ConversationState.ConversationState.ReconnectChat
70
77
  });
71
78
  return;
72
- } // Set custom context params
73
-
79
+ } // Setting Proactive chat settings
74
80
 
75
- setCustomContextParams(props, chatSDK); // Setting Proactive chat settings
76
81
 
77
82
  const isProactiveChat = state.appStates.conversationState === _ConversationState.ConversationState.ProactiveChat;
78
83
  const isPreChatEnabledInProactiveChat = state.appStates.proactiveChatStates.proactiveChatEnablePrechat; //Setting PreChat and intiate chat
79
84
 
80
- setPreChatAndInitiateChat(chatSDK, props.authProps, dispatch, setAdapter, isProactiveChat, isPreChatEnabledInProactiveChat);
85
+ setPreChatAndInitiateChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, isProactiveChat, isPreChatEnabledInProactiveChat);
81
86
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
82
87
 
83
88
 
84
89
  exports.prepareStartChat = prepareStartChat;
85
90
 
86
- const setPreChatAndInitiateChat = async (chatSDK, authProps, dispatch, setAdapter, isProactiveChat, proactiveChatEnablePrechatState) => {
91
+ const setPreChatAndInitiateChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, isProactiveChat, proactiveChatEnablePrechatState) => {
87
92
  // Getting prechat Survey Context
88
93
  const parseToJson = false;
89
94
  const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
@@ -106,16 +111,27 @@ const setPreChatAndInitiateChat = async (chatSDK, authProps, dispatch, setAdapte
106
111
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
107
112
  payload: _ConversationState.ConversationState.Loading
108
113
  });
109
- await initStartChat(chatSDK, authProps, dispatch, setAdapter);
114
+ await initStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter);
110
115
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
111
116
 
112
117
 
113
118
  exports.setPreChatAndInitiateChat = setPreChatAndInitiateChat;
114
119
 
115
- const initStartChat = async (chatSDK, authProps, dispatch, setAdapter, params, persistedState) => {
120
+ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, params, persistedState) => {
116
121
  try {
117
122
  var _newAdapter$activity$, _TelemetryTimers$Widg;
118
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
+
119
135
  let isStartChatSuccessful = false; //Check if chat retrieved from cache
120
136
 
121
137
  if (persistedState || params !== null && params !== void 0 && params.liveChatContext) {
@@ -136,15 +152,11 @@ const initStartChat = async (chatSDK, authProps, dispatch, setAdapter, params, p
136
152
 
137
153
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
138
154
  Event: _TelemetryConstants.TelemetryEvent.StartChatSDKCall
139
- }); // Set optional params
140
-
155
+ }); // Set custom context params
141
156
 
142
- optionalParams = Object.assign({}, params, optionalParams); // set auth token to chat sdk before start chat
143
-
144
- if (authProps && authProps.setAuthTokenProviderToChatSdk) {
145
- await authProps.setAuthTokenProviderToChatSdk(chatSDK, authProps.authClientFunction);
146
- }
147
157
 
158
+ setCustomContextParams(chatSDK);
159
+ optionalParams = Object.assign({}, params, optionalParams);
148
160
  await chatSDK.startChat(optionalParams);
149
161
  isStartChatSuccessful = true;
150
162
  } catch (error) {
@@ -196,6 +208,8 @@ const initStartChat = async (chatSDK, authProps, dispatch, setAdapter, params, p
196
208
  await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch); // Set app state to Active
197
209
 
198
210
  if (isStartChatSuccessful) {
211
+ _ActivityStreamHandler.ActivityStreamHandler.uncork();
212
+
199
213
  dispatch({
200
214
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
201
215
  payload: _ConversationState.ConversationState.Active
@@ -230,6 +244,7 @@ const initStartChat = async (chatSDK, authProps, dispatch, setAdapter, params, p
230
244
  }
231
245
  } finally {
232
246
  optionalParams = {};
247
+ widgetInstanceId = "";
233
248
  }
234
249
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
235
250
 
@@ -237,14 +252,14 @@ const initStartChat = async (chatSDK, authProps, dispatch, setAdapter, params, p
237
252
  exports.initStartChat = initStartChat;
238
253
 
239
254
  const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdapter) => {
240
- var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _persistedState$domai6, _persistedState$appSt;
255
+ var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _props$controlProps2, _persistedState$domai6, _persistedState$appSt;
241
256
 
242
257
  // By pass this function in case of popout chat
243
258
  if (state.appStates.skipChatButtonRendering === true) {
244
259
  return false;
245
260
  }
246
261
 
247
- const persistedState = (0, _utils.getStateFromCache)(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC === void 0 ? void 0 : _chatSDK$omnichannelC.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.widgetId); //Connect to only active chat session
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
248
263
 
249
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) {
250
265
  var _persistedState$domai7;
@@ -256,7 +271,7 @@ const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdap
256
271
  const optionalParams = {
257
272
  liveChatContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai7 = persistedState.domainStates) === null || _persistedState$domai7 === void 0 ? void 0 : _persistedState$domai7.liveChatContext
258
273
  };
259
- await initStartChat(chatSDK, props.authProps, dispatch, setAdapter, optionalParams, persistedState);
274
+ await initStartChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams, persistedState);
260
275
  return true;
261
276
  } else {
262
277
  return false;
@@ -264,17 +279,30 @@ const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdap
264
279
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
265
280
 
266
281
 
267
- const setCustomContextParams = (props, chatSDK) => {
268
- var _chatSDK$omnichannelC3, _chatSDK$omnichannelC4, _props$chatConfig, _persistedState$domai8;
282
+ const setCustomContextParams = chatSDK => {
283
+ var _chatSDK$omnichannelC3, _chatSDK$omnichannelC4, _persistedState$domai8;
269
284
 
270
285
  // Add custom context only for unauthenticated chat
271
- const persistedState = (0, _utils.getStateFromCache)(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC3 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC3 === void 0 ? void 0 : _chatSDK$omnichannelC3.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC4 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC4 === void 0 ? void 0 : _chatSDK$omnichannelC4.widgetId);
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 ?? "");
272
287
 
273
- if (!((_props$chatConfig = props.chatConfig) !== null && _props$chatConfig !== void 0 && _props$chatConfig.LiveChatConfigAuthSettings) && !(0, _utils.isUndefinedOrEmpty)(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai8 = persistedState.domainStates) === null || _persistedState$domai8 === void 0 ? void 0 : _persistedState$domai8.customContext)) {
274
- var _persistedState$domai9;
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
+ }
275
303
 
276
304
  optionalParams = Object.assign({}, optionalParams, {
277
- customContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai9 = persistedState.domainStates) === null || _persistedState$domai9 === void 0 ? void 0 : _persistedState$domai9.customContext
305
+ customContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai10 = persistedState.domainStates) === null || _persistedState$domai10 === void 0 ? void 0 : _persistedState$domai10.customContext
278
306
  });
279
307
  }
280
308
  };