@microsoft/omnichannel-chat-widget 0.1.0-main.7338c17 → 0.1.0-main.7375e33

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 (162) hide show
  1. package/README.md +35 -11
  2. package/lib/cjs/assets/Audios.js +8 -0
  3. package/lib/cjs/assets/Icons.js +28 -0
  4. package/lib/cjs/common/Constants.js +52 -6
  5. package/lib/cjs/common/telemetry/TelemetryConstants.js +56 -6
  6. package/lib/cjs/common/telemetry/TelemetryHelper.js +13 -0
  7. package/lib/cjs/common/telemetry/TelemetryManager.js +17 -6
  8. package/lib/cjs/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  9. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  10. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +33 -13
  11. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +6 -5
  12. package/lib/cjs/common/utils.js +76 -2
  13. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  14. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +20 -4
  15. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +6 -40
  16. package/lib/cjs/components/footerstateful/FooterStateful.js +4 -5
  17. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +11 -2
  18. package/lib/cjs/components/headerstateful/HeaderStateful.js +13 -10
  19. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +3 -4
  20. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +27 -23
  21. package/lib/cjs/components/livechatwidget/common/endChat.js +141 -50
  22. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +1 -1
  23. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +47 -9
  24. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +107 -22
  25. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +6 -17
  26. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +6 -9
  27. package/lib/cjs/components/livechatwidget/common/startChat.js +143 -51
  28. package/lib/cjs/{assets/assets.d.js → components/livechatwidget/interfaces/IAuthProps.js} +0 -0
  29. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +235 -79
  30. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +8 -0
  31. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +5 -10
  32. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +19 -3
  33. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +80 -0
  34. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
  35. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +51 -73
  36. package/lib/cjs/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  37. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +14 -0
  38. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +25 -48
  39. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +3 -1
  40. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +52 -0
  41. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +98 -0
  42. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +117 -0
  43. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  44. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +45 -0
  45. package/lib/cjs/contexts/common/ConversationState.js +4 -2
  46. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +9 -7
  47. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +8 -3
  48. package/lib/cjs/contexts/createReducer.js +16 -10
  49. package/lib/cjs/controller/componentController.js +5 -5
  50. package/lib/cjs/plugins/newMessageEventHandler.js +99 -0
  51. package/lib/esm/assets/Audios.js +1 -0
  52. package/lib/esm/assets/Icons.js +11 -0
  53. package/lib/esm/common/Constants.js +48 -5
  54. package/lib/esm/common/telemetry/TelemetryConstants.js +52 -5
  55. package/lib/esm/common/telemetry/TelemetryHelper.js +13 -1
  56. package/lib/esm/common/telemetry/TelemetryManager.js +15 -6
  57. package/lib/esm/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  58. package/lib/esm/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  59. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +36 -14
  60. package/lib/esm/common/telemetry/loggers/consoleLogger.js +6 -5
  61. package/lib/esm/common/utils.js +55 -1
  62. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  63. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +22 -7
  64. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +6 -36
  65. package/lib/esm/components/footerstateful/FooterStateful.js +4 -5
  66. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +9 -3
  67. package/lib/esm/components/headerstateful/HeaderStateful.js +14 -11
  68. package/lib/esm/components/livechatwidget/common/createMarkdown.js +3 -3
  69. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +25 -24
  70. package/lib/esm/components/livechatwidget/common/endChat.js +139 -50
  71. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +1 -1
  72. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +42 -11
  73. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +98 -23
  74. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +5 -14
  75. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +6 -9
  76. package/lib/esm/components/livechatwidget/common/startChat.js +142 -54
  77. package/lib/esm/components/livechatwidget/interfaces/IAuthProps.js +1 -0
  78. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +221 -79
  79. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +6 -0
  80. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +7 -11
  81. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +20 -4
  82. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +72 -0
  83. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
  84. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -12
  85. package/lib/esm/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  86. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +5 -0
  87. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +23 -46
  88. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
  89. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +41 -0
  90. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +94 -0
  91. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +107 -0
  92. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  93. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +32 -0
  94. package/lib/esm/contexts/common/ConversationState.js +4 -2
  95. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +9 -7
  96. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +8 -3
  97. package/lib/esm/contexts/createReducer.js +16 -9
  98. package/lib/esm/controller/componentController.js +5 -5
  99. package/lib/esm/plugins/newMessageEventHandler.js +82 -0
  100. package/lib/types/assets/Audios.d.ts +1 -0
  101. package/lib/types/assets/Icons.d.ts +11 -0
  102. package/lib/types/common/Constants.d.ts +26 -2
  103. package/lib/types/common/interfaces/IContextDataStore.d.ts +2 -2
  104. package/lib/types/common/telemetry/TelemetryConstants.d.ts +40 -4
  105. package/lib/types/common/telemetry/TelemetryHelper.d.ts +3 -1
  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 +6 -0
  109. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +5 -2
  110. package/lib/types/components/footerstateful/audionotificationstateful/interfaces/IAudioNotificationStatefulParams.d.ts +0 -1
  111. package/lib/types/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.d.ts +1 -1
  112. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +4 -1
  113. package/lib/types/components/livechatwidget/common/endChat.d.ts +4 -1
  114. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +6 -2
  115. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +1 -1
  116. package/lib/types/components/livechatwidget/common/startChat.d.ts +4 -2
  117. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +1 -1
  118. package/lib/types/components/livechatwidget/interfaces/IAuthProps.d.ts +4 -0
  119. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetComponentOverrides.d.ts +1 -0
  120. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +3 -1
  121. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +1 -1
  122. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  123. package/lib/types/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.d.ts +1 -1
  124. package/lib/types/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.d.ts +4 -0
  125. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +2 -0
  126. package/lib/types/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.d.ts +3 -0
  127. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +1 -2
  128. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.d.ts +1 -1
  129. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.d.ts +2 -0
  130. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.d.ts +1 -0
  131. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +5 -0
  132. package/lib/types/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.d.ts +1 -0
  133. package/lib/types/contexts/common/ConversationState.d.ts +4 -2
  134. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +2 -1
  135. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +10 -8
  136. package/lib/types/plugins/newMessageEventHandler.d.ts +2 -0
  137. package/package.json +9 -11
  138. package/lib/cjs/assets/audios/newMessageNotification.mp3 +0 -0
  139. package/lib/cjs/assets/icons/archiveIcon.svg +0 -3
  140. package/lib/cjs/assets/icons/audioIcon.svg +0 -6
  141. package/lib/cjs/assets/icons/blankIcon.svg +0 -6
  142. package/lib/cjs/assets/icons/excelIcon.svg +0 -6
  143. package/lib/cjs/assets/icons/imageIcon.svg +0 -6
  144. package/lib/cjs/assets/icons/oneNoteIcon.svg +0 -6
  145. package/lib/cjs/assets/icons/pdfIcon.svg +0 -6
  146. package/lib/cjs/assets/icons/powerpointIcon.svg +0 -6
  147. package/lib/cjs/assets/icons/videoIcon.svg +0 -6
  148. package/lib/cjs/assets/icons/visioIcon.svg +0 -6
  149. package/lib/cjs/assets/icons/wordIcon.svg +0 -6
  150. package/lib/esm/assets/assets.d.js +0 -0
  151. package/lib/esm/assets/audios/newMessageNotification.mp3 +0 -0
  152. package/lib/esm/assets/icons/archiveIcon.svg +0 -3
  153. package/lib/esm/assets/icons/audioIcon.svg +0 -6
  154. package/lib/esm/assets/icons/blankIcon.svg +0 -6
  155. package/lib/esm/assets/icons/excelIcon.svg +0 -6
  156. package/lib/esm/assets/icons/imageIcon.svg +0 -6
  157. package/lib/esm/assets/icons/oneNoteIcon.svg +0 -6
  158. package/lib/esm/assets/icons/pdfIcon.svg +0 -6
  159. package/lib/esm/assets/icons/powerpointIcon.svg +0 -6
  160. package/lib/esm/assets/icons/videoIcon.svg +0 -6
  161. package/lib/esm/assets/icons/visioIcon.svg +0 -6
  162. package/lib/esm/assets/icons/wordIcon.svg +0 -6
@@ -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");
@@ -25,6 +23,8 @@ var _TelemetryManager = require("../../../common/telemetry/TelemetryManager");
25
23
 
26
24
  var _createAdapter = require("./createAdapter");
27
25
 
26
+ var _newMessageEventHandler = require("../../../plugins/newMessageEventHandler");
27
+
28
28
  var _utils = require("../../../common/utils");
29
29
 
30
30
  var _reconnectChatHelper = require("./reconnectChatHelper");
@@ -33,16 +33,29 @@ var _setPostChatContextAndLoadSurvey = require("./setPostChatContextAndLoadSurve
33
33
 
34
34
  var _updateSessionDataForTelemetry = require("./updateSessionDataForTelemetry");
35
35
 
36
+ var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
37
+
36
38
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
+ let optionalParams = {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
+
37
41
  const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) => {
42
+ var _props$reconnectChatP;
43
+
44
+ optionalParams = {}; //Resetting to ensure no stale values
45
+ // Can connect to existing chat session
46
+
38
47
  if (await canConnectToExistingChat(props, chatSDK, state, dispatch, setAdapter)) {
39
48
  return;
40
- } // Getting PreChat Survey Context
49
+ } // Redirecting if unauthenticated reconnect chat expired
41
50
 
42
51
 
43
- const parseToJson = false;
44
- const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
45
- const showPrechat = state.appStates.conversationState === _ConversationState.ConversationState.ProactiveChat ? preChatSurveyResponse && state.appStates.proactiveChatStates.proactiveChatEnablePrechat : preChatSurveyResponse; // Getting reconnectId for authenticated chat
52
+ if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
53
+ var _props$reconnectChatP2, _props$reconnectChatP3;
54
+
55
+ await (0, _reconnectChatHelper.handleRedirectUnauthenticatedReconnectChat)(chatSDK, 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);
56
+ return;
57
+ } // Getting reconnectId for authenticated chat
58
+
46
59
 
47
60
  const reconnectId = await (0, _reconnectChatHelper.getReconnectIdForAuthenticatedChat)(props, chatSDK);
48
61
 
@@ -55,7 +68,28 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
55
68
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
56
69
  payload: _ConversationState.ConversationState.ReconnectChat
57
70
  });
58
- } else if (showPrechat) {
71
+ return;
72
+ } // Set custom context params
73
+
74
+
75
+ setCustomContextParams(props, chatSDK); // Setting Proactive chat settings
76
+
77
+ const isProactiveChat = state.appStates.conversationState === _ConversationState.ConversationState.ProactiveChat;
78
+ const isPreChatEnabledInProactiveChat = state.appStates.proactiveChatStates.proactiveChatEnablePrechat; //Setting PreChat and intiate chat
79
+
80
+ setPreChatAndInitiateChat(chatSDK, props.authProps, dispatch, setAdapter, isProactiveChat, isPreChatEnabledInProactiveChat);
81
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
82
+
83
+
84
+ exports.prepareStartChat = prepareStartChat;
85
+
86
+ const setPreChatAndInitiateChat = async (chatSDK, authProps, dispatch, setAdapter, isProactiveChat, proactiveChatEnablePrechatState) => {
87
+ // Getting prechat Survey Context
88
+ const parseToJson = false;
89
+ const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
90
+ const showPrechat = isProactiveChat ? preChatSurveyResponse && proactiveChatEnablePrechatState : preChatSurveyResponse;
91
+
92
+ if (showPrechat) {
59
93
  dispatch({
60
94
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
61
95
  payload: preChatSurveyResponse
@@ -64,30 +98,55 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
64
98
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
65
99
  payload: _ConversationState.ConversationState.Prechat
66
100
  });
67
- } else {
68
- dispatch({
69
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
70
- payload: _ConversationState.ConversationState.Loading
71
- });
72
- await initStartChat(chatSDK, dispatch, setAdapter);
73
- }
101
+ return;
102
+ } //Initiate start chat
103
+
104
+
105
+ dispatch({
106
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
107
+ payload: _ConversationState.ConversationState.Loading
108
+ });
109
+ await initStartChat(chatSDK, authProps, dispatch, setAdapter);
74
110
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
111
 
76
112
 
77
- exports.prepareStartChat = prepareStartChat;
113
+ exports.setPreChatAndInitiateChat = setPreChatAndInitiateChat;
78
114
 
79
- const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedState) => {
115
+ const initStartChat = async (chatSDK, authProps, dispatch, setAdapter, params, persistedState) => {
80
116
  try {
81
- var _TelemetryTimers$Widg;
117
+ var _newAdapter$activity$, _TelemetryTimers$Widg;
118
+
119
+ let isStartChatSuccessful = false; //Check if chat retrieved from cache
120
+
121
+ if (persistedState || params !== null && params !== void 0 && params.liveChatContext) {
122
+ var _persistedState$domai, _persistedState$domai2, _persistedState$domai3, _persistedState$domai4, _persistedState$domai5;
123
+
124
+ _omnichannelChatComponents.BroadcastService.postMessage({
125
+ eventName: _TelemetryConstants.BroadcastEvent.ChatRetrievedFromCache,
126
+ payload: {
127
+ chatId: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai = persistedState.domainStates) === null || _persistedState$domai === void 0 ? void 0 : (_persistedState$domai2 = _persistedState$domai.liveChatContext) === null || _persistedState$domai2 === void 0 ? void 0 : (_persistedState$domai3 = _persistedState$domai2.chatToken) === null || _persistedState$domai3 === void 0 ? void 0 : _persistedState$domai3.chatId,
128
+ requestId: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai4 = persistedState.domainStates) === null || _persistedState$domai4 === void 0 ? void 0 : (_persistedState$domai5 = _persistedState$domai4.liveChatContext) === null || _persistedState$domai5 === void 0 ? void 0 : _persistedState$domai5.requestId
129
+ }
130
+ });
131
+ }
82
132
 
83
133
  try {
134
+ //Start widget load timer
84
135
  _TelemetryManager.TelemetryTimers.WidgetLoadTimer = (0, _utils.createTimer)();
85
136
 
86
137
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.INFO, {
87
138
  Event: _TelemetryConstants.TelemetryEvent.StartChatSDKCall
88
- });
139
+ }); // Set optional params
140
+
141
+
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
+ }
89
147
 
90
- await chatSDK.startChat(params);
148
+ await chatSDK.startChat(optionalParams);
149
+ isStartChatSuccessful = true;
91
150
  } catch (error) {
92
151
  _TelemetryHelper.TelemetryHelper.logSDKEvent(_TelemetryConstants.LogLevel.ERROR, {
93
152
  Event: _TelemetryConstants.TelemetryEvent.StartChatMethodException,
@@ -95,41 +154,52 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedSta
95
154
  exception: `Failed to setup startChat: ${error}`
96
155
  }
97
156
  });
98
- }
99
157
 
100
- const newAdapter = await (0, _createAdapter.createAdapter)(chatSDK);
101
- setAdapter(newAdapter);
158
+ isStartChatSuccessful = false; // Resetting the widget state to Closed, for recent introduction of OC rate limiting(429 Error)
159
+ // TODO : How to diplay a proper UI message to customer to try after sometime at this point - cool down scenario
160
+
161
+ dispatch({
162
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
163
+ payload: _ConversationState.ConversationState.Closed
164
+ });
165
+ return;
166
+ } // New adapter creation
102
167
 
103
- if (!persistedState) {
104
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
105
- if (chatSDK !== null && chatSDK !== void 0 && chatSDK.getVoiceVideoCalling) {
106
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
107
- const chatToken = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatToken());
108
- dispatch({
109
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
110
- payload: chatToken
111
- });
112
- } // eslint-disable-next-line @typescript-eslint/no-explicit-any
113
168
 
169
+ const newAdapter = await (0, _createAdapter.createAdapter)(chatSDK);
170
+ setAdapter(newAdapter);
171
+ const chatToken = await chatSDK.getChatToken();
172
+ dispatch({
173
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
174
+ payload: chatToken
175
+ });
176
+ 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));
114
177
 
115
- const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
178
+ if (persistedState) {
116
179
  dispatch({
117
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
118
- payload: liveChatContext
180
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_WIDGET_STATE,
181
+ payload: persistedState
119
182
  });
120
- await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch);
121
- await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch); // Set app state to Active
183
+ await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, true);
184
+ return;
185
+ } // eslint-disable-next-line @typescript-eslint/no-explicit-any
186
+
122
187
 
188
+ const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
189
+ dispatch({
190
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
191
+ payload: liveChatContext
192
+ }); // Set post chat context in state, no survey load
193
+
194
+ await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch); // Updating chat session detail for telemetry
195
+
196
+ await (0, _updateSessionDataForTelemetry.updateSessionDataForTelemetry)(chatSDK, dispatch); // Set app state to Active
197
+
198
+ if (isStartChatSuccessful) {
123
199
  dispatch({
124
200
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
125
201
  payload: _ConversationState.ConversationState.Active
126
202
  });
127
- } else {
128
- dispatch({
129
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_WIDGET_STATE,
130
- payload: persistedState
131
- });
132
- await (0, _setPostChatContextAndLoadSurvey.setPostChatContextAndLoadSurvey)(chatSDK, dispatch, true);
133
203
  }
134
204
 
135
205
  _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
@@ -158,6 +228,8 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedSta
158
228
  payload: _ConversationState.ConversationState.OutOfOffice
159
229
  });
160
230
  }
231
+ } finally {
232
+ optionalParams = {};
161
233
  }
162
234
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
163
235
 
@@ -165,24 +237,44 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedSta
165
237
  exports.initStartChat = initStartChat;
166
238
 
167
239
  const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdapter) => {
168
- var _DataStoreManager$cli, _persistedState$domai;
240
+ var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _persistedState$domai6, _persistedState$appSt;
241
+
242
+ // By pass this function in case of popout chat
243
+ if (state.appStates.skipChatButtonRendering === true) {
244
+ return false;
245
+ }
169
246
 
170
- const widgetStateFromCache = (_DataStoreManager$cli = _DataStoreManager.DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.getData(_Constants.Constants.widgetStateDataKey, "localStorage");
171
- const persistedState = widgetStateFromCache ? JSON.parse(widgetStateFromCache) : undefined;
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
172
248
 
173
- if (persistedState !== null && persistedState !== void 0 && (_persistedState$domai = persistedState.domainStates) !== null && _persistedState$domai !== void 0 && _persistedState$domai.liveChatContext) {
174
- var _persistedState$domai2;
249
+ 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
+ var _persistedState$domai7;
175
251
 
176
252
  dispatch({
177
253
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
178
254
  payload: _ConversationState.ConversationState.Loading
179
255
  });
180
256
  const optionalParams = {
181
- liveChatContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai2 = persistedState.domainStates) === null || _persistedState$domai2 === void 0 ? void 0 : _persistedState$domai2.liveChatContext
257
+ liveChatContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai7 = persistedState.domainStates) === null || _persistedState$domai7 === void 0 ? void 0 : _persistedState$domai7.liveChatContext
182
258
  };
183
- await initStartChat(chatSDK, dispatch, setAdapter, optionalParams, persistedState);
259
+ await initStartChat(chatSDK, props.authProps, dispatch, setAdapter, optionalParams, persistedState);
184
260
  return true;
185
261
  } else {
186
262
  return false;
187
263
  }
264
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
265
+
266
+
267
+ const setCustomContextParams = (props, chatSDK) => {
268
+ var _chatSDK$omnichannelC3, _chatSDK$omnichannelC4, _props$chatConfig, _persistedState$domai8;
269
+
270
+ // 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);
272
+
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;
275
+
276
+ 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
278
+ });
279
+ }
188
280
  };