@microsoft/omnichannel-chat-widget 0.1.0-main.cf54410 → 0.1.0-main.d48dae2

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