@microsoft/omnichannel-chat-widget 0.1.0-main.1a61ea0 → 0.1.0-main.24bd1e6

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 (183) 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 -4
  5. package/lib/cjs/common/contextDataStore/DataStoreManager.js +14 -0
  6. package/lib/cjs/{assets/assets.d.js → common/interfaces/IContextDataStore.js} +0 -0
  7. package/lib/cjs/common/telemetry/TelemetryConstants.js +59 -4
  8. package/lib/cjs/common/telemetry/TelemetryHelper.js +22 -4
  9. package/lib/cjs/common/telemetry/TelemetryManager.js +28 -9
  10. package/lib/cjs/common/telemetry/defaultConfigs/defaultAriaConfig.js +3 -3
  11. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  12. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +48 -15
  13. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +9 -5
  14. package/lib/cjs/common/utils.js +76 -2
  15. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +14 -0
  16. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +20 -4
  17. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +7 -54
  18. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +2 -2
  19. package/lib/cjs/components/footerstateful/FooterStateful.js +4 -5
  20. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +11 -2
  21. package/lib/cjs/components/headerstateful/HeaderStateful.js +11 -8
  22. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +3 -4
  23. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +49 -47
  24. package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +14 -0
  25. package/lib/cjs/components/livechatwidget/common/endChat.js +142 -43
  26. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +5 -0
  27. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +49 -11
  28. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +105 -20
  29. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +11 -7
  30. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +22 -24
  31. package/lib/cjs/components/livechatwidget/common/startChat.js +174 -41
  32. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +3 -3
  33. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +249 -67
  34. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +1 -1
  35. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +8 -0
  36. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +8 -0
  37. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +22 -10
  38. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +27 -5
  39. package/lib/cjs/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  40. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +80 -0
  41. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
  42. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +51 -73
  43. package/lib/cjs/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  44. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +14 -0
  45. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +25 -48
  46. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +3 -1
  47. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +52 -0
  48. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +98 -0
  49. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +117 -0
  50. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  51. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +45 -0
  52. package/lib/cjs/contexts/common/ConversationState.js +4 -2
  53. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +12 -7
  54. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +11 -4
  55. package/lib/cjs/contexts/createReducer.js +36 -10
  56. package/lib/cjs/controller/componentController.js +5 -5
  57. package/lib/cjs/plugins/newMessageEventHandler.js +99 -0
  58. package/lib/esm/assets/Audios.js +1 -0
  59. package/lib/esm/assets/Icons.js +11 -0
  60. package/lib/esm/common/Constants.js +48 -3
  61. package/lib/esm/common/contextDataStore/DataStoreManager.js +5 -0
  62. package/lib/esm/common/interfaces/IContextDataStore.js +1 -0
  63. package/lib/esm/common/telemetry/TelemetryConstants.js +55 -3
  64. package/lib/esm/common/telemetry/TelemetryHelper.js +22 -5
  65. package/lib/esm/common/telemetry/TelemetryManager.js +22 -9
  66. package/lib/esm/common/telemetry/defaultConfigs/defaultAriaConfig.js +3 -3
  67. package/lib/esm/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  68. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +50 -15
  69. package/lib/esm/common/telemetry/loggers/consoleLogger.js +9 -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 +7 -50
  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 +12 -9
  78. package/lib/esm/components/livechatwidget/common/createMarkdown.js +3 -3
  79. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +47 -48
  80. package/lib/esm/components/livechatwidget/common/disposeTelemetryLoggers.js +4 -0
  81. package/lib/esm/components/livechatwidget/common/endChat.js +139 -42
  82. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +3 -0
  83. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +43 -12
  84. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +94 -20
  85. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +10 -3
  86. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +19 -22
  87. package/lib/esm/components/livechatwidget/common/startChat.js +167 -39
  88. package/lib/esm/components/livechatwidget/common/startProactiveChat.js +5 -5
  89. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +235 -71
  90. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +1 -1
  91. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +6 -0
  92. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +6 -0
  93. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +22 -10
  94. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +26 -6
  95. package/lib/esm/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  96. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +72 -0
  97. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +4 -0
  98. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -12
  99. package/lib/esm/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  100. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +5 -0
  101. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +23 -46
  102. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
  103. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +41 -0
  104. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +94 -0
  105. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +107 -0
  106. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +6 -6
  107. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +32 -0
  108. package/lib/esm/contexts/common/ConversationState.js +4 -2
  109. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +12 -7
  110. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +11 -4
  111. package/lib/esm/contexts/createReducer.js +36 -9
  112. package/lib/esm/controller/componentController.js +5 -5
  113. package/lib/esm/plugins/newMessageEventHandler.js +82 -0
  114. package/lib/types/assets/Audios.d.ts +1 -0
  115. package/lib/types/assets/Icons.d.ts +11 -0
  116. package/lib/types/common/Constants.d.ts +26 -1
  117. package/lib/types/common/contextDataStore/DataStoreManager.d.ts +4 -0
  118. package/lib/types/common/interfaces/IContextDataStore.d.ts +14 -0
  119. package/lib/types/common/telemetry/TelemetryConstants.d.ts +43 -2
  120. package/lib/types/common/telemetry/TelemetryHelper.d.ts +3 -1
  121. package/lib/types/common/telemetry/TelemetryManager.d.ts +1 -0
  122. package/lib/types/common/telemetry/definitions/Contracts.d.ts +3 -0
  123. package/lib/types/common/telemetry/definitions/Payload.d.ts +15 -9
  124. package/lib/types/common/telemetry/interfaces/IChatSDKLogger.d.ts +1 -0
  125. package/lib/types/common/telemetry/interfaces/IInternalTelemetryData.d.ts +2 -0
  126. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +12 -0
  127. package/lib/types/common/utils.d.ts +6 -0
  128. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +5 -2
  129. package/lib/types/components/footerstateful/audionotificationstateful/interfaces/IAudioNotificationStatefulParams.d.ts +0 -1
  130. package/lib/types/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.d.ts +1 -1
  131. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +4 -1
  132. package/lib/types/components/livechatwidget/common/disposeTelemetryLoggers.d.ts +1 -0
  133. package/lib/types/components/livechatwidget/common/endChat.d.ts +4 -1
  134. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -2
  135. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +1 -1
  136. package/lib/types/components/livechatwidget/common/startChat.d.ts +3 -2
  137. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +2 -1
  138. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetComponentOverrides.d.ts +1 -0
  139. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +3 -1
  140. package/lib/types/components/prechatsurveypanestateful/interfaces/IPreChatSurveyPaneStatefulParams.d.ts +1 -1
  141. package/lib/types/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.d.ts +3 -0
  142. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +1 -0
  143. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +1 -0
  144. package/lib/types/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.d.ts +1 -1
  145. package/lib/types/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.d.ts +4 -0
  146. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +2 -0
  147. package/lib/types/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.d.ts +3 -0
  148. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +1 -2
  149. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.d.ts +1 -1
  150. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.d.ts +2 -0
  151. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.d.ts +1 -0
  152. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +5 -0
  153. package/lib/types/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.d.ts +1 -0
  154. package/lib/types/contexts/common/ConversationState.d.ts +4 -2
  155. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +4 -1
  156. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +13 -8
  157. package/lib/types/plugins/newMessageEventHandler.d.ts +2 -0
  158. package/package.json +11 -11
  159. package/lib/cjs/assets/audios/newMessageNotification.mp3 +0 -0
  160. package/lib/cjs/assets/icons/archiveIcon.svg +0 -3
  161. package/lib/cjs/assets/icons/audioIcon.svg +0 -6
  162. package/lib/cjs/assets/icons/blankIcon.svg +0 -6
  163. package/lib/cjs/assets/icons/excelIcon.svg +0 -6
  164. package/lib/cjs/assets/icons/imageIcon.svg +0 -6
  165. package/lib/cjs/assets/icons/oneNoteIcon.svg +0 -6
  166. package/lib/cjs/assets/icons/pdfIcon.svg +0 -6
  167. package/lib/cjs/assets/icons/powerpointIcon.svg +0 -6
  168. package/lib/cjs/assets/icons/videoIcon.svg +0 -6
  169. package/lib/cjs/assets/icons/visioIcon.svg +0 -6
  170. package/lib/cjs/assets/icons/wordIcon.svg +0 -6
  171. package/lib/esm/assets/assets.d.js +0 -0
  172. package/lib/esm/assets/audios/newMessageNotification.mp3 +0 -0
  173. package/lib/esm/assets/icons/archiveIcon.svg +0 -3
  174. package/lib/esm/assets/icons/audioIcon.svg +0 -6
  175. package/lib/esm/assets/icons/blankIcon.svg +0 -6
  176. package/lib/esm/assets/icons/excelIcon.svg +0 -6
  177. package/lib/esm/assets/icons/imageIcon.svg +0 -6
  178. package/lib/esm/assets/icons/oneNoteIcon.svg +0 -6
  179. package/lib/esm/assets/icons/pdfIcon.svg +0 -6
  180. package/lib/esm/assets/icons/powerpointIcon.svg +0 -6
  181. package/lib/esm/assets/icons/videoIcon.svg +0 -6
  182. package/lib/esm/assets/icons/visioIcon.svg +0 -6
  183. package/lib/esm/assets/icons/wordIcon.svg +0 -6
@@ -1,5 +1,5 @@
1
- import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
2
1
  import { ChatSDKError } from "../../../common/Constants";
2
+ import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
3
3
  import { ConversationState } from "../../../contexts/common/ConversationState";
4
4
  import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
5
5
  import { NotificationHandler } from "../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler";
@@ -7,16 +7,33 @@ import { NotificationScenarios } from "../../webchatcontainerstateful/webchatcon
7
7
  import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
8
8
  import { TelemetryTimers } from "../../../common/telemetry/TelemetryManager";
9
9
  import { createAdapter } from "./createAdapter";
10
- import { createTimer } from "../../../common/utils";
11
- import { getReconnectIdForAuthenticatedChat } from "./reconnectChatHelper";
10
+ import { createOnNewAdapterActivityHandler } from "../../../plugins/newMessageEventHandler";
11
+ import { createTimer, getStateFromCache, isUndefinedOrEmpty } from "../../../common/utils";
12
+ import { getReconnectIdForAuthenticatedChat, handleRedirectUnauthenticatedReconnectChat } from "./reconnectChatHelper";
13
+ import { setPostChatContextAndLoadSurvey } from "./setPostChatContextAndLoadSurvey";
12
14
  import { updateSessionDataForTelemetry } from "./updateSessionDataForTelemetry";
13
- import { setPostChatContextAndLoadSurvey } from "./setPostChatContextAndLoadSurvey"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
+ import { BroadcastService } from "@microsoft/omnichannel-chat-components"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+
17
+ let optionalParams = {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
18
 
15
19
  const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) => {
16
- // Getting PreChat Survey Context
17
- const parseToJson = false;
18
- const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
19
- const showPrechat = state.appStates.conversationState === ConversationState.ProactiveChat ? preChatSurveyResponse && state.appStates.proactiveChatStates.proactiveChatEnablePrechat : preChatSurveyResponse; // Getting reconnectId for authenticated chat
20
+ var _props$reconnectChatP;
21
+
22
+ optionalParams = {}; //Resetting to ensure no stale values
23
+ // Can connect to existing chat session
24
+
25
+ if (await canConnectToExistingChat(props, chatSDK, state, dispatch, setAdapter)) {
26
+ return;
27
+ } // Redirecting if unauthenticated reconnect chat expired
28
+
29
+
30
+ if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
31
+ var _props$reconnectChatP2, _props$reconnectChatP3;
32
+
33
+ await handleRedirectUnauthenticatedReconnectChat(chatSDK, 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);
34
+ return;
35
+ } // Getting reconnectId for authenticated chat
36
+
20
37
 
21
38
  const reconnectId = await getReconnectIdForAuthenticatedChat(props, chatSDK);
22
39
 
@@ -29,7 +46,26 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
29
46
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
30
47
  payload: ConversationState.ReconnectChat
31
48
  });
32
- } else if (showPrechat) {
49
+ return;
50
+ } // Set custom context params
51
+
52
+
53
+ setCustomContextParams(props, chatSDK); // Setting Proactive chat settings
54
+
55
+ const isProactiveChat = state.appStates.conversationState === ConversationState.ProactiveChat;
56
+ const isPreChatEnabledInProactiveChat = state.appStates.proactiveChatStates.proactiveChatEnablePrechat; //Setting PreChat and intiate chat
57
+
58
+ setPreChatAndInitiateChat(chatSDK, dispatch, setAdapter, isProactiveChat, isPreChatEnabledInProactiveChat);
59
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
+
61
+
62
+ const setPreChatAndInitiateChat = async (chatSDK, dispatch, setAdapter, isProactiveChat, proactiveChatEnablePrechatState) => {
63
+ // Getting prechat Survey Context
64
+ const parseToJson = false;
65
+ const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
66
+ const showPrechat = isProactiveChat ? preChatSurveyResponse && proactiveChatEnablePrechatState : preChatSurveyResponse;
67
+
68
+ if (showPrechat) {
33
69
  dispatch({
34
70
  type: LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
35
71
  payload: preChatSurveyResponse
@@ -38,54 +74,100 @@ const prepareStartChat = async (props, chatSDK, state, dispatch, setAdapter) =>
38
74
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
39
75
  payload: ConversationState.Prechat
40
76
  });
41
- } else {
42
- dispatch({
43
- type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
44
- payload: ConversationState.Loading
45
- });
46
- await initStartChat(chatSDK, dispatch, setAdapter);
47
- }
77
+ return;
78
+ } //Initiate start chat
79
+
80
+
81
+ dispatch({
82
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
83
+ payload: ConversationState.Loading
84
+ });
85
+ await initStartChat(chatSDK, dispatch, setAdapter);
48
86
  }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
49
87
 
50
88
 
51
- const initStartChat = async (chatSDK, dispatch, setAdapter, params) => {
89
+ const initStartChat = async (chatSDK, dispatch, setAdapter, params, persistedState) => {
52
90
  try {
53
- var _TelemetryTimers$Widg;
91
+ var _newAdapter$activity$, _TelemetryTimers$Widg;
54
92
 
55
- try {
56
- TelemetryHelper.logConfigDataEvent(LogLevel.INFO, {
57
- Event: TelemetryEvent.StartChatSDKCall
93
+ let isStartChatSuccessful = false; //Check if chat retrieved from cache
94
+
95
+ if (persistedState || params !== null && params !== void 0 && params.liveChatContext) {
96
+ var _persistedState$domai, _persistedState$domai2, _persistedState$domai3, _persistedState$domai4, _persistedState$domai5;
97
+
98
+ BroadcastService.postMessage({
99
+ eventName: BroadcastEvent.ChatRetrievedFromCache,
100
+ payload: {
101
+ 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,
102
+ 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
103
+ }
58
104
  });
59
- await chatSDK.startChat(params);
105
+ }
106
+
107
+ try {
108
+ //Start widget load timer
60
109
  TelemetryTimers.WidgetLoadTimer = createTimer();
110
+ TelemetryHelper.logSDKEvent(LogLevel.INFO, {
111
+ Event: TelemetryEvent.StartChatSDKCall
112
+ }); // Set optional params
113
+
114
+ optionalParams = Object.assign({}, params, optionalParams);
115
+ await chatSDK.startChat(optionalParams);
116
+ isStartChatSuccessful = true;
61
117
  } catch (error) {
62
- TelemetryHelper.logLoadingEvent(LogLevel.ERROR, {
118
+ TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
63
119
  Event: TelemetryEvent.StartChatMethodException,
64
120
  ExceptionDetails: {
65
121
  exception: `Failed to setup startChat: ${error}`
66
122
  }
67
123
  });
68
- }
124
+ isStartChatSuccessful = false; // Resetting the widget state to Closed, for recent introduction of OC rate limiting(429 Error)
125
+ // TODO : How to diplay a proper UI message to customer to try after sometime at this point - cool down scenario
126
+
127
+ dispatch({
128
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
129
+ payload: ConversationState.Closed
130
+ });
131
+ return;
132
+ } // New adapter creation
133
+
69
134
 
70
135
  const newAdapter = await createAdapter(chatSDK);
71
- setAdapter(newAdapter); // eslint-disable-next-line @typescript-eslint/no-explicit-any
136
+ setAdapter(newAdapter);
137
+ const chatToken = await chatSDK.getChatToken();
138
+ dispatch({
139
+ type: LiveChatWidgetActionType.SET_CHAT_TOKEN,
140
+ payload: chatToken
141
+ });
142
+ newAdapter === null || newAdapter === void 0 ? void 0 : (_newAdapter$activity$ = newAdapter.activity$) === null || _newAdapter$activity$ === void 0 ? void 0 : _newAdapter$activity$.subscribe(createOnNewAdapterActivityHandler(chatToken === null || chatToken === void 0 ? void 0 : chatToken.chatId, chatToken === null || chatToken === void 0 ? void 0 : chatToken.visitorId));
72
143
 
73
- if (chatSDK !== null && chatSDK !== void 0 && chatSDK.getVoiceVideoCalling) {
74
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
- const chatToken = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatToken());
144
+ if (persistedState) {
76
145
  dispatch({
77
- type: LiveChatWidgetActionType.SET_CHAT_TOKEN,
78
- payload: chatToken
146
+ type: LiveChatWidgetActionType.SET_WIDGET_STATE,
147
+ payload: persistedState
79
148
  });
80
- }
149
+ await setPostChatContextAndLoadSurvey(chatSDK, dispatch, true);
150
+ return;
151
+ } // eslint-disable-next-line @typescript-eslint/no-explicit-any
81
152
 
82
- await setPostChatContextAndLoadSurvey(chatSDK, dispatch, false);
83
- await updateSessionDataForTelemetry(chatSDK, dispatch); // Set app state to Active
84
153
 
154
+ const liveChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
85
155
  dispatch({
86
- type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
87
- payload: ConversationState.Active
88
- });
156
+ type: LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
157
+ payload: liveChatContext
158
+ }); // Set post chat context in state, no survey load
159
+
160
+ await setPostChatContextAndLoadSurvey(chatSDK, dispatch); // Updating chat session detail for telemetry
161
+
162
+ await updateSessionDataForTelemetry(chatSDK, dispatch); // Set app state to Active
163
+
164
+ if (isStartChatSuccessful) {
165
+ dispatch({
166
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
167
+ payload: ConversationState.Active
168
+ });
169
+ }
170
+
89
171
  TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
90
172
  Event: TelemetryEvent.WidgetLoadComplete,
91
173
  Description: "Widget load complete",
@@ -93,9 +175,9 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params) => {
93
175
  });
94
176
  } catch (ex) {
95
177
  TelemetryHelper.logLoadingEvent(LogLevel.ERROR, {
96
- Event: TelemetryEvent.StartChatFailed,
178
+ Event: TelemetryEvent.WidgetLoadFailed,
97
179
  ExceptionDetails: {
98
- Exception: `Start Chat Failed: ${ex}`
180
+ Exception: `Widget load Failed: ${ex}`
99
181
  }
100
182
  });
101
183
  NotificationHandler.notifyError(NotificationScenarios.Connection, "Start Chat Failed: " + ex); // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -110,7 +192,53 @@ const initStartChat = async (chatSDK, dispatch, setAdapter, params) => {
110
192
  payload: ConversationState.OutOfOffice
111
193
  });
112
194
  }
195
+ } finally {
196
+ optionalParams = {};
197
+ }
198
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
199
+
200
+
201
+ const canConnectToExistingChat = async (props, chatSDK, state, dispatch, setAdapter) => {
202
+ var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _persistedState$domai6, _persistedState$appSt;
203
+
204
+ // By pass this function in case of popout chat
205
+ if (state.appStates.skipChatButtonRendering === true) {
206
+ return false;
207
+ }
208
+
209
+ const persistedState = 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
210
+
211
+ if (persistedState && !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.Active) {
212
+ var _persistedState$domai7;
213
+
214
+ dispatch({
215
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
216
+ payload: ConversationState.Loading
217
+ });
218
+ const optionalParams = {
219
+ liveChatContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai7 = persistedState.domainStates) === null || _persistedState$domai7 === void 0 ? void 0 : _persistedState$domai7.liveChatContext
220
+ };
221
+ await initStartChat(chatSDK, dispatch, setAdapter, optionalParams, persistedState);
222
+ return true;
223
+ } else {
224
+ return false;
225
+ }
226
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
227
+
228
+
229
+ const setCustomContextParams = (props, chatSDK) => {
230
+ var _chatSDK$omnichannelC3, _chatSDK$omnichannelC4, _props$chatConfig, _persistedState$domai8;
231
+
232
+ // Add custom context only for unauthenticated chat
233
+ const persistedState = 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);
234
+
235
+ if (!((_props$chatConfig = props.chatConfig) !== null && _props$chatConfig !== void 0 && _props$chatConfig.LiveChatConfigAuthSettings) && !isUndefinedOrEmpty(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai8 = persistedState.domainStates) === null || _persistedState$domai8 === void 0 ? void 0 : _persistedState$domai8.customContext)) {
236
+ var _persistedState$domai9;
237
+
238
+ optionalParams = Object.assign({}, optionalParams, {
239
+ customContext: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai9 = persistedState.domainStates) === null || _persistedState$domai9 === void 0 ? void 0 : _persistedState$domai9.customContext
240
+ });
113
241
  }
114
242
  };
115
243
 
116
- export { prepareStartChat, initStartChat };
244
+ export { prepareStartChat, initStartChat, setPreChatAndInitiateChat };
@@ -2,14 +2,14 @@ import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryCon
2
2
  import { ConversationState } from "../../../contexts/common/ConversationState";
3
3
  import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
4
4
  import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
5
- import { TelemetryTimers } from "../../../common/telemetry/TelemetryManager"; // Defines startProactiveChat callback
6
-
7
- export const startProactiveChat = (dispatch, bodyTitle, showPrechat, inNewWindow) => {
5
+ import { TelemetryTimers } from "../../../common/telemetry/TelemetryManager";
6
+ // Defines startProactiveChat callback
7
+ export const startProactiveChat = (dispatch, notificationConfig, enablePreChat, inNewWindow) => {
8
8
  dispatch({
9
9
  type: LiveChatWidgetActionType.SET_PROACTIVE_CHAT_PARAMS,
10
10
  payload: {
11
- proactiveChatBodyTitle: bodyTitle ?? "",
12
- proactiveChatEnablePrechat: showPrechat ?? false,
11
+ proactiveChatBodyTitle: notificationConfig && notificationConfig.message ? notificationConfig.message : "",
12
+ proactiveChatEnablePrechat: enablePreChat ?? false,
13
13
  proactiveChatInNewWindow: inNewWindow ?? false
14
14
  }
15
15
  });