@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
@@ -1,17 +1,19 @@
1
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
+ import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
3
4
  import { BroadcastService, decodeComponentString } from "@microsoft/omnichannel-chat-components";
4
5
  import { Stack } from "@fluentui/react";
5
6
  import React, { useEffect, useRef, useState } from "react";
6
- import { createTimer, getLocaleDirection } from "../../../common/utils";
7
- import { getReconnectIdForAuthenticatedChat, handleUnauthenticatedReconnectChat } from "../common/reconnectChatHelper";
8
- import { initStartChat, prepareStartChat } from "../common/startChat";
7
+ import { createTimer, getLocaleDirection, getStateFromCache, getWidgetCacheId, getWidgetEndChatEventName, isUndefinedOrEmpty } from "../../../common/utils";
8
+ import { getReconnectIdForAuthenticatedChat, handleUnauthenticatedReconnectChat, startUnauthenticatedReconnectChat } from "../common/reconnectChatHelper";
9
+ import { initStartChat, prepareStartChat, setPreChatAndInitiateChat } from "../common/startChat";
9
10
  import { shouldShowCallingContainer, shouldShowChatButton, shouldShowConfirmationPane, shouldShowEmailTranscriptPane, shouldShowHeader, shouldShowLoadingPane, shouldShowOutOfOfficeHoursPane, shouldShowPostChatLoadingPane, shouldShowPostChatSurveyPane, shouldShowPreChatSurveyPane, shouldShowProactiveChatPane, shouldShowReconnectChatPane, shouldShowWebChatContainer } from "../../../controller/componentController";
10
11
  import CallingContainerStateful from "../../callingcontainerstateful/CallingContainerStateful";
11
12
  import ChatButtonStateful from "../../chatbuttonstateful/ChatButtonStateful";
12
13
  import { Components } from "botframework-webchat";
13
14
  import ConfirmationPaneStateful from "../../confirmationpanestateful/ConfirmationPaneStateful";
14
15
  import { ConversationState } from "../../../contexts/common/ConversationState";
16
+ import { DataStoreManager } from "../../../common/contextDataStore/DataStoreManager";
15
17
  import { ElementType } from "@microsoft/omnichannel-chat-components";
16
18
  import EmailTranscriptPaneStateful from "../../emailtranscriptpanestateful/EmailTranscriptPaneStateful";
17
19
  import HeaderStateful from "../../headerstateful/HeaderStateful";
@@ -23,12 +25,14 @@ import PostChatSurveyPaneStateful from "../../postchatsurveypanestateful/PostCha
23
25
  import PreChatSurveyPaneStateful from "../../prechatsurveypanestateful/PreChatSurveyPaneStateful";
24
26
  import ProactiveChatPaneStateful from "../../proactivechatpanestateful/ProactiveChatPaneStateful";
25
27
  import ReconnectChatPaneStateful from "../../reconnectchatpanestateful/ReconnectChatPaneStateful";
28
+ import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
26
29
  import { TelemetryTimers } from "../../../common/telemetry/TelemetryManager";
27
30
  import WebChatContainerStateful from "../../webchatcontainerstateful/WebChatContainerStateful";
28
31
  import { createFooter } from "../common/createFooter";
29
32
  import { createInternetConnectionChangeHandler } from "../common/createInternetConnectionChangeHandler";
30
33
  import { defaultWebChatContainerStatefulProps } from "../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps";
31
- import { endChat } from "../common/endChat";
34
+ import { disposeTelemetryLoggers } from "../common/disposeTelemetryLoggers";
35
+ import { endChat, prepareEndChat } from "../common/endChat";
32
36
  import { getGeneralStylesForButton } from "../common/getGeneralStylesForButton";
33
37
  import { initCallingSdk } from "../common/initCallingSdk";
34
38
  import { initConfirmationPropsComposer } from "../common/initConfirmationPropsComposer";
@@ -39,11 +43,8 @@ import { startProactiveChat } from "../common/startProactiveChat";
39
43
  import useChatAdapterStore from "../../../hooks/useChatAdapterStore";
40
44
  import useChatContextStore from "../../../hooks/useChatContextStore";
41
45
  import useChatSDKStore from "../../../hooks/useChatSDKStore";
42
- import { TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
43
- import { disposeTelemetryLoggers } from "../common/disposeTelemetryLoggers";
44
- import { DataStoreManager } from "../../../common/contextDataStore/DataStoreManager";
45
46
  export const LiveChatWidgetStateful = props => {
46
- var _props$webChatContain, _props$styleProps, _props$controlProps, _props$webChatContain3, _props$webChatContain4, _props$styleProps2, _props$controlProps5, _props$componentOverr, _props$controlProps6, _props$componentOverr2, _props$controlProps7, _props$componentOverr3, _props$controlProps8, _props$componentOverr4, _props$controlProps9, _props$componentOverr5, _props$controlProps10, _props$componentOverr6, _props$controlProps11, _props$controlProps12, _props$controlProps13, _props$componentOverr7, _props$controlProps14, _props$componentOverr8, _props$controlProps15, _props$componentOverr9, _props$componentOverr10, _props$componentOverr11;
47
+ var _props$webChatContain, _props$styleProps, _props$controlProps, _props$webChatContain3, _props$webChatContain4, _props$styleProps2, _props$controlProps5, _props$controlProps6, _props$componentOverr, _props$controlProps7, _props$componentOverr2, _props$controlProps8, _props$componentOverr3, _props$controlProps9, _props$componentOverr4, _props$controlProps10, _props$componentOverr5, _props$controlProps11, _props$componentOverr6, _props$controlProps12, _props$componentOverr7, _props$controlProps13, _props$controlProps14, _props$componentOverr8, _props$controlProps15, _props$componentOverr9, _props$controlProps16, _props$componentOverr10, _props$componentOverr11, _props$componentOverr12;
47
48
 
48
49
  const [state, dispatch] = useChatContextStore(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
49
50
 
@@ -52,7 +53,8 @@ export const LiveChatWidgetStateful = props => {
52
53
  ...((_props$webChatContain = props.webChatContainerProps) === null || _props$webChatContain === void 0 ? void 0 : _props$webChatContain.webChatStyles)
53
54
  }); // eslint-disable-next-line @typescript-eslint/no-explicit-any
54
55
 
55
- const chatSDK = useChatSDKStore();
56
+ const chatSDK = useChatSDKStore(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
57
+
56
58
  const [voiceVideoCallingSDK, setVoiceVideoCallingSDK] = useState(undefined);
57
59
  const {
58
60
  Composer
@@ -65,8 +67,37 @@ export const LiveChatWidgetStateful = props => {
65
67
  TelemetryTimers.LcwLoadToChatButtonTimer = createTimer();
66
68
  const widgetElementId = ((_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.id) || "oc-lcw";
67
69
  const currentMessageCountRef = useRef(0);
70
+ let widgetStateEventName = "";
71
+
72
+ const initiateEndChatOnBrowserUnload = () => {
73
+ var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _DataStoreManager$cli;
74
+
75
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
76
+ Event: TelemetryEvent.BrowserUnloadEventStarted,
77
+ Description: "Browser unload event received."
78
+ });
79
+ 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); // End chat if the chat is still active and browser closed
80
+
81
+ if (persistedState.appStates.conversationState === ConversationState.Active) {
82
+ //Browser close scenario/no room for PCS/so just end chat and notify agent immidiately
83
+ endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, false);
84
+ } // Clean local storage
85
+
86
+
87
+ (_DataStoreManager$cli = DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.removeData(widgetStateEventName, "localStorage"); //Dispose calling instance
88
+
89
+ if (voiceVideoCallingSDK) {
90
+ voiceVideoCallingSDK === null || voiceVideoCallingSDK === void 0 ? void 0 : voiceVideoCallingSDK.close();
91
+ } //Message for clearing window[popouTab]
92
+
93
+
94
+ BroadcastService.postMessage({
95
+ eventName: BroadcastEvent.ClosePopoutWindow
96
+ });
97
+ };
98
+
68
99
  useEffect(() => {
69
- var _props$controlProps2, _props$controlProps3, _props$reconnectChatP, _props$controlProps4, _props$chatConfig, _props$chatConfig$Cha, _state$domainStates;
100
+ var _props$controlProps2, _props$controlProps3, _props$chatConfig, _props$chatConfig$Cha, _props$controlProps4, _props$reconnectChatP, _props$chatConfig2, _props$chatConfig2$Li;
70
101
 
71
102
  registerTelemetryLoggers(props, dispatch);
72
103
  createInternetConnectionChangeHandler();
@@ -79,45 +110,67 @@ export const LiveChatWidgetStateful = props => {
79
110
  type: LiveChatWidgetActionType.SET_SKIP_CHAT_BUTTON_RENDERING,
80
111
  payload: ((_props$controlProps2 = props.controlProps) === null || _props$controlProps2 === void 0 ? void 0 : _props$controlProps2.skipChatButtonRendering) || false
81
112
  });
113
+ dispatch({
114
+ type: LiveChatWidgetActionType.SET_E2VV_ENABLED,
115
+ payload: false
116
+ });
82
117
  initCallingSdk(chatSDK, setVoiceVideoCallingSDK).then(sdkCreated => {
83
118
  sdkCreated && dispatch({
84
119
  type: LiveChatWidgetActionType.SET_E2VV_ENABLED,
85
120
  payload: true
86
121
  });
122
+ }); // Initialize global dir
123
+
124
+ const globalDir = ((_props$controlProps3 = props.controlProps) === null || _props$controlProps3 === void 0 ? void 0 : _props$controlProps3.dir) ?? getLocaleDirection((_props$chatConfig = props.chatConfig) === null || _props$chatConfig === void 0 ? void 0 : (_props$chatConfig$Cha = _props$chatConfig.ChatWidgetLanguage) === null || _props$chatConfig$Cha === void 0 ? void 0 : _props$chatConfig$Cha.msdyn_localeid);
125
+ dispatch({
126
+ type: LiveChatWidgetActionType.SET_GLOBAL_DIR,
127
+ payload: globalDir
87
128
  });
88
129
 
89
- if (!((_props$controlProps3 = props.controlProps) !== null && _props$controlProps3 !== void 0 && _props$controlProps3.skipChatButtonRendering) && (_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
130
+ if (!((_props$controlProps4 = props.controlProps) !== null && _props$controlProps4 !== void 0 && _props$controlProps4.skipChatButtonRendering) && (_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.reconnectId) {
90
131
  var _props$reconnectChatP2;
91
132
 
92
- handleUnauthenticatedReconnectChat(dispatch, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.reconnectId, initStartChat);
93
- } // Initialize global dir
133
+ startUnauthenticatedReconnectChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.reconnectId, initStartChat);
134
+ return;
135
+ } // Check if auth settings enabled, do not connect to existing chat from cache during refresh/re-load
136
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
137
+
138
+
139
+ const isAuthenticationSettingsEnabled = (_props$chatConfig2 = props.chatConfig) !== null && _props$chatConfig2 !== void 0 && (_props$chatConfig2$Li = _props$chatConfig2.LiveChatConfigAuthSettings) !== null && _props$chatConfig2$Li !== void 0 && _props$chatConfig2$Li.msdyn_javascriptclientfunction ? true : false;
140
+
141
+ if (!isAuthenticationSettingsEnabled) {
142
+ var _state$domainStates;
143
+
144
+ if (!isUndefinedOrEmpty((_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : _state$domainStates.liveChatContext) && state.appStates.conversationState === ConversationState.Active) {
145
+ var _state$domainStates2;
146
+
147
+ const optionalParams = {
148
+ liveChatContext: (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.liveChatContext
149
+ };
150
+ initStartChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams);
151
+ return;
152
+ }
153
+ } // All other case should show start chat button, skipChatButtonRendering will take care of it own
94
154
 
95
155
 
96
- const globalDir = ((_props$controlProps4 = props.controlProps) === null || _props$controlProps4 === void 0 ? void 0 : _props$controlProps4.dir) ?? getLocaleDirection((_props$chatConfig = props.chatConfig) === null || _props$chatConfig === void 0 ? void 0 : (_props$chatConfig$Cha = _props$chatConfig.ChatWidgetLanguage) === null || _props$chatConfig$Cha === void 0 ? void 0 : _props$chatConfig$Cha.msdyn_localeid);
97
156
  dispatch({
98
- type: LiveChatWidgetActionType.SET_GLOBAL_DIR,
99
- payload: globalDir
157
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
158
+ payload: ConversationState.Closed
100
159
  });
160
+ }, []); // useEffect for when skip chat button rendering
101
161
 
102
- if ((_state$domainStates = state.domainStates) !== null && _state$domainStates !== void 0 && _state$domainStates.chatToken) {
103
- var _state$domainStates2;
104
-
105
- const optionalParams = {
106
- liveChatContext: {
107
- chatToken: (_state$domainStates2 = state.domainStates) === null || _state$domainStates2 === void 0 ? void 0 : _state$domainStates2.chatToken
108
- }
109
- };
110
- initStartChat(chatSDK, dispatch, setAdapter, optionalParams);
111
- }
112
- }, []);
113
162
  useEffect(() => {
114
163
  if (state.appStates.skipChatButtonRendering) {
115
164
  var _props$reconnectChatP3;
116
165
 
166
+ BroadcastService.postMessage({
167
+ eventName: BroadcastEvent.ChatInitiated
168
+ });
169
+
117
170
  if ((_props$reconnectChatP3 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP3 !== void 0 && _props$reconnectChatP3.reconnectId && !state.appStates.reconnectId) {
118
- var _props$reconnectChatP4;
171
+ var _props$reconnectChatP4, _props$reconnectChatP5;
119
172
 
120
- handleUnauthenticatedReconnectChat(dispatch, (_props$reconnectChatP4 = props.reconnectChatPaneProps) === null || _props$reconnectChatP4 === void 0 ? void 0 : _props$reconnectChatP4.reconnectId, initStartChat);
173
+ handleUnauthenticatedReconnectChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, (_props$reconnectChatP4 = props.reconnectChatPaneProps) === null || _props$reconnectChatP4 === void 0 ? void 0 : _props$reconnectChatP4.reconnectId, initStartChat, (_props$reconnectChatP5 = props.reconnectChatPaneProps) === null || _props$reconnectChatP5 === void 0 ? void 0 : _props$reconnectChatP5.redirectInSameWindow);
121
174
  } else {
122
175
  getReconnectIdForAuthenticatedChat(props, chatSDK).then(authReconnectId => {
123
176
  if (authReconnectId && !state.appStates.reconnectId) {
@@ -130,54 +183,147 @@ export const LiveChatWidgetStateful = props => {
130
183
  payload: ConversationState.ReconnectChat
131
184
  });
132
185
  } else {
133
- dispatch({
134
- type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
135
- payload: ConversationState.Loading
136
- });
137
- initStartChat(chatSDK, dispatch, setAdapter);
186
+ const chatStartedSkippingChatButtonRendering = {
187
+ eventName: BroadcastEvent.StartChatSkippingChatButtonRendering
188
+ };
189
+ BroadcastService.postMessage(chatStartedSkippingChatButtonRendering);
190
+ setPreChatAndInitiateChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter);
138
191
  }
139
192
  });
140
193
  }
141
194
  }
142
- }, [state.appStates.skipChatButtonRendering]);
195
+ }, [state.appStates.skipChatButtonRendering]); // useEffect for when skip chat button rendering
196
+
143
197
  useEffect(() => {
144
- BroadcastService.getMessageByEventName("StartProactiveChat").subscribe(msg => {
198
+ var _chatSDK$omnichannelC7, _chatSDK$omnichannelC8;
199
+
200
+ // Add the custom context on receiving the SetCustomContext event
201
+ BroadcastService.getMessageByEventName(BroadcastEvent.SetCustomContext).subscribe(msg => {
202
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
203
+ Event: TelemetryEvent.CustomContextReceived,
204
+ Description: "CustomContext received."
205
+ });
206
+ dispatch({
207
+ type: LiveChatWidgetActionType.SET_CUSTOM_CONTEXT,
208
+ payload: msg === null || msg === void 0 ? void 0 : msg.payload
209
+ });
210
+ });
211
+ BroadcastService.getMessageByEventName(BroadcastEvent.StartProactiveChat).subscribe(msg => {
212
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
213
+ Event: TelemetryEvent.StartProactiveChatEventReceived,
214
+ Description: "Start proactive chat event received."
215
+ });
216
+
145
217
  if (canStartProactiveChat.current) {
146
218
  var _msg$payload, _msg$payload2, _msg$payload3;
147
219
 
148
- startProactiveChat(dispatch, msg === null || msg === void 0 ? void 0 : (_msg$payload = msg.payload) === null || _msg$payload === void 0 ? void 0 : _msg$payload.bodyTitle, msg === null || msg === void 0 ? void 0 : (_msg$payload2 = msg.payload) === null || _msg$payload2 === void 0 ? void 0 : _msg$payload2.showPrechat, msg === null || msg === void 0 ? void 0 : (_msg$payload3 = msg.payload) === null || _msg$payload3 === void 0 ? void 0 : _msg$payload3.inNewWindow);
220
+ startProactiveChat(dispatch, msg === null || msg === void 0 ? void 0 : (_msg$payload = msg.payload) === null || _msg$payload === void 0 ? void 0 : _msg$payload.notificationConfig, msg === null || msg === void 0 ? void 0 : (_msg$payload2 = msg.payload) === null || _msg$payload2 === void 0 ? void 0 : _msg$payload2.enablePreChat, msg === null || msg === void 0 ? void 0 : (_msg$payload3 = msg.payload) === null || _msg$payload3 === void 0 ? void 0 : _msg$payload3.inNewWindow);
221
+ } else {
222
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
223
+ Event: TelemetryEvent.ChatAlreadyTriggered,
224
+ Description: "Start proactive chat method called, when chat was already triggered."
225
+ });
149
226
  }
150
- });
151
- window.addEventListener("beforeunload", event => {
152
- disposeTelemetryLoggers();
153
- });
227
+ }); // Start chat from SDK Event
154
228
 
155
- if (state.appStates.conversationEndedByAgent) {
156
- endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter);
157
- }
158
- }, []);
159
- useEffect(() => {
160
- canStartProactiveChat.current = state.appStates.conversationState === ConversationState.Closed;
229
+ BroadcastService.getMessageByEventName(BroadcastEvent.StartChat).subscribe(() => {
230
+ var _chatSDK$omnichannelC3, _chatSDK$omnichannelC4;
161
231
 
162
- if (state.appStates.conversationState === ConversationState.Active) {
163
- chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.onNewMessage(() => {
232
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
233
+ Event: TelemetryEvent.StartChatEventRecevied,
234
+ Description: "Start chat event received."
235
+ });
236
+ 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);
237
+
238
+ if (persistedState && (persistedState.appStates.conversationState === ConversationState.Closed || persistedState.appStates.conversationState === ConversationState.InActive || persistedState.appStates.conversationState === ConversationState.Postchat)) {
239
+ // Embedded mode
240
+ BroadcastService.postMessage({
241
+ eventName: BroadcastEvent.ChatInitiated
242
+ });
243
+ prepareStartChat(props, chatSDK, state, dispatch, setAdapter);
244
+ } else {
245
+ var _persistedState$domai, _persistedState$domai2, _persistedState$domai3, _persistedState$domai4;
246
+
247
+ // Minimize to Maximize
248
+ dispatch({
249
+ type: LiveChatWidgetActionType.SET_MINIMIZED,
250
+ payload: false
251
+ });
164
252
  BroadcastService.postMessage({
165
- eventName: "NewMessageNotification"
253
+ eventName: BroadcastEvent.MaximizeChat,
254
+ payload: {
255
+ height: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai = persistedState.domainStates) === null || _persistedState$domai === void 0 ? void 0 : (_persistedState$domai2 = _persistedState$domai.widgetSize) === null || _persistedState$domai2 === void 0 ? void 0 : _persistedState$domai2.height,
256
+ width: persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai3 = persistedState.domainStates) === null || _persistedState$domai3 === void 0 ? void 0 : (_persistedState$domai4 = _persistedState$domai3.widgetSize) === null || _persistedState$domai4 === void 0 ? void 0 : _persistedState$domai4.width
257
+ }
166
258
  });
259
+ }
260
+ }); // End chat
261
+
262
+ BroadcastService.getMessageByEventName(BroadcastEvent.InitiateEndChat).subscribe(async () => {
263
+ if (state.appStates.skipChatButtonRendering !== true) {
264
+ var _chatSDK$omnichannelC5, _chatSDK$omnichannelC6;
265
+
266
+ // This is to ensure to get latest state from cache in multitab
267
+ const persistedState = getStateFromCache(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC5 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC5 === void 0 ? void 0 : _chatSDK$omnichannelC5.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC6 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC6 === void 0 ? void 0 : _chatSDK$omnichannelC6.widgetId);
268
+
269
+ if (persistedState && persistedState.appStates.conversationState === ConversationState.Active) {
270
+ prepareEndChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state);
271
+ } else {
272
+ const skipEndChatSDK = true;
273
+ const skipCloseChat = false;
274
+ endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat);
275
+ }
276
+ }
277
+
278
+ BroadcastService.postMessage({
279
+ eventName: BroadcastEvent.CloseChat
167
280
  });
168
- } // Track the message count
281
+ }); // End chat on browser unload
282
+
283
+ BroadcastService.getMessageByEventName(BroadcastEvent.InitiateEndChatOnBrowserUnload).subscribe(() => {
284
+ initiateEndChatOnBrowserUnload();
285
+ }); // Listen to end chat event from other tabs
169
286
 
287
+ const endChatEventName = getWidgetEndChatEventName(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC7 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC7 === void 0 ? void 0 : _chatSDK$omnichannelC7.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC8 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC8 === void 0 ? void 0 : _chatSDK$omnichannelC8.widgetId);
288
+ BroadcastService.getMessageByEventName(endChatEventName).subscribe(async () => {
289
+ endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, false);
290
+ }); // When conversation ended by agent
170
291
 
292
+ if (state.appStates.conversationEndedByAgent) {
293
+ endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter);
294
+ } //Listen to WidgetSize, used for minimize to maximize
295
+
296
+
297
+ BroadcastService.getMessageByEventName("WidgetSize").subscribe(msg => {
298
+ dispatch({
299
+ type: LiveChatWidgetActionType.SET_WIDGET_SIZE,
300
+ payload: msg === null || msg === void 0 ? void 0 : msg.payload
301
+ });
302
+ });
303
+ return () => {
304
+ disposeTelemetryLoggers();
305
+ };
306
+ }, []);
307
+ useEffect(() => {
308
+ // On new message
171
309
  if (state.appStates.conversationState === ConversationState.Active) {
172
310
  chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.onNewMessage(() => {
311
+ // Track the message count
173
312
  currentMessageCountRef.current++;
174
313
  dispatch({
175
314
  type: LiveChatWidgetActionType.SET_UNREAD_MESSAGE_COUNT,
176
315
  payload: currentMessageCountRef.current + 1
316
+ }); // New message notification
317
+
318
+ BroadcastService.postMessage({
319
+ eventName: BroadcastEvent.NewMessageNotification
177
320
  });
178
321
  });
179
322
  }
180
- }, [state.appStates.conversationState]); // Reset the UnreadMessageCount when minimized is toggled and broadcast it.
323
+ }, [state.appStates.conversationState]);
324
+ useEffect(() => {
325
+ canStartProactiveChat.current = state.appStates.conversationState === ConversationState.Closed && !state.appStates.proactiveChatStates.proactiveChatInNewWindow;
326
+ }, [state.appStates.conversationState, state.appStates.proactiveChatStates.proactiveChatInNewWindow]); // Reset the UnreadMessageCount when minimized is toggled and broadcast it.
181
327
 
182
328
  useEffect(() => {
183
329
  currentMessageCountRef.current = -1;
@@ -187,17 +333,17 @@ export const LiveChatWidgetStateful = props => {
187
333
  });
188
334
  const customEvent = {
189
335
  elementType: ElementType.Custom,
190
- eventName: "UnreadMessageCount",
336
+ eventName: BroadcastEvent.UnreadMessageCount,
191
337
  payload: 0
192
338
  };
193
339
  BroadcastService.postMessage(customEvent);
194
340
  }, [state.appStates.isMinimized]); // Broadcast the UnreadMessageCount state on any change.
195
341
 
196
342
  useEffect(() => {
197
- if (state.appStates.isMinimized && state.appStates.unreadMessageCount > 0) {
343
+ if (state.appStates.isMinimized === true && state.appStates.unreadMessageCount > 0) {
198
344
  const customEvent = {
199
345
  elementType: ElementType.Custom,
200
- eventName: "UnreadMessageCount",
346
+ eventName: BroadcastEvent.UnreadMessageCount,
201
347
  payload: `${state.appStates.unreadMessageCount}`
202
348
  };
203
349
  BroadcastService.postMessage(customEvent);
@@ -209,28 +355,35 @@ export const LiveChatWidgetStateful = props => {
209
355
  setWebChatStyles({ ...webChatStyles,
210
356
  ...((_props$webChatContain2 = props.webChatContainerProps) === null || _props$webChatContain2 === void 0 ? void 0 : _props$webChatContain2.webChatStyles)
211
357
  });
212
- }, [(_props$webChatContain3 = props.webChatContainerProps) === null || _props$webChatContain3 === void 0 ? void 0 : _props$webChatContain3.webChatStyles]);
213
- const webChatProps = initWebChatComposer(props, chatSDK, state, dispatch, setWebChatStyles);
214
-
215
- const setPostChatContextRelay = () => setPostChatContextAndLoadSurvey(chatSDK, dispatch);
216
-
217
- const endChatRelay = () => endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter);
218
-
219
- const prepareStartChatRelay = () => prepareStartChat(props, chatSDK, state, dispatch, setAdapter); // eslint-disable-next-line @typescript-eslint/no-explicit-any
220
-
221
-
222
- const initStartChatRelay = (optionalParams, persistedState) => initStartChat(chatSDK, dispatch, setAdapter, optionalParams, persistedState);
223
-
224
- const confirmationPaneProps = initConfirmationPropsComposer(props); // publish chat widget state
358
+ }, [(_props$webChatContain3 = props.webChatContainerProps) === null || _props$webChatContain3 === void 0 ? void 0 : _props$webChatContain3.webChatStyles]); // Publish chat widget state
225
359
 
226
360
  useEffect(() => {
361
+ var _props$chatSDK, _props$chatSDK$omnich, _props$chatSDK2, _props$chatSDK2$omnic;
362
+
363
+ widgetStateEventName = getWidgetCacheId(props === null || props === void 0 ? void 0 : (_props$chatSDK = props.chatSDK) === null || _props$chatSDK === void 0 ? void 0 : (_props$chatSDK$omnich = _props$chatSDK.omnichannelConfig) === null || _props$chatSDK$omnich === void 0 ? void 0 : _props$chatSDK$omnich.orgId, props === null || props === void 0 ? void 0 : (_props$chatSDK2 = props.chatSDK) === null || _props$chatSDK2 === void 0 ? void 0 : (_props$chatSDK2$omnic = _props$chatSDK2.omnichannelConfig) === null || _props$chatSDK2$omnic === void 0 ? void 0 : _props$chatSDK2$omnic.widgetId);
227
364
  const chatWidgetStateChangeEvent = {
228
- eventName: TelemetryEvent.ChatWidgetStateChanged,
365
+ eventName: widgetStateEventName,
229
366
  payload: { ...state
230
367
  }
231
368
  };
232
369
  BroadcastService.postMessage(chatWidgetStateChangeEvent);
233
370
  }, [state]);
371
+ const webChatProps = initWebChatComposer(props, chatSDK, state, dispatch, setWebChatStyles);
372
+
373
+ const setPostChatContextRelay = () => setPostChatContextAndLoadSurvey(chatSDK, dispatch); // eslint-disable-next-line @typescript-eslint/no-explicit-any
374
+
375
+
376
+ const endChatRelay = (adapter, skipEndChatSDK, skipCloseChat) => endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat); // eslint-disable-next-line @typescript-eslint/no-explicit-any
377
+
378
+
379
+ const prepareEndChatRelay = (adapter, state) => prepareEndChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state);
380
+
381
+ const prepareStartChatRelay = () => prepareStartChat(props, chatSDK, state, dispatch, setAdapter); // eslint-disable-next-line @typescript-eslint/no-explicit-any
382
+
383
+
384
+ const initStartChatRelay = (optionalParams, persistedState) => initStartChat(chatSDK, props.chatConfig, props.getAuthToken, dispatch, setAdapter, optionalParams, persistedState);
385
+
386
+ const confirmationPaneProps = initConfirmationPropsComposer(props);
234
387
  return /*#__PURE__*/React.createElement(Composer, _extends({}, webChatProps, {
235
388
  styleOptions: webChatStyles,
236
389
  directLine: ((_props$webChatContain4 = props.webChatContainerProps) === null || _props$webChatContain4 === void 0 ? void 0 : _props$webChatContain4.directLine) ?? adapter ?? defaultWebChatContainerStatefulProps.directLine
@@ -238,28 +391,28 @@ export const LiveChatWidgetStateful = props => {
238
391
  id: widgetElementId,
239
392
  styles: generalStyles,
240
393
  className: (_props$styleProps2 = props.styleProps) === null || _props$styleProps2 === void 0 ? void 0 : _props$styleProps2.className
241
- }, !((_props$controlProps5 = props.controlProps) !== null && _props$controlProps5 !== void 0 && _props$controlProps5.hideChatButton) && shouldShowChatButton(state) && (decodeComponentString((_props$componentOverr = props.componentOverrides) === null || _props$componentOverr === void 0 ? void 0 : _props$componentOverr.chatButton) || /*#__PURE__*/React.createElement(ChatButtonStateful, {
394
+ }, !((_props$controlProps5 = props.controlProps) !== null && _props$controlProps5 !== void 0 && _props$controlProps5.hideChatButton) && !((_props$controlProps6 = props.controlProps) !== null && _props$controlProps6 !== void 0 && _props$controlProps6.skipChatButtonRendering) && shouldShowChatButton(state) && (decodeComponentString((_props$componentOverr = props.componentOverrides) === null || _props$componentOverr === void 0 ? void 0 : _props$componentOverr.chatButton) || /*#__PURE__*/React.createElement(ChatButtonStateful, {
242
395
  buttonProps: props.chatButtonProps,
243
396
  outOfOfficeButtonProps: props.outOfOfficeChatButtonProps,
244
397
  startChat: prepareStartChatRelay
245
- })), !((_props$controlProps6 = props.controlProps) !== null && _props$controlProps6 !== void 0 && _props$controlProps6.hideProactiveChatPane) && shouldShowProactiveChatPane(state) && (decodeComponentString((_props$componentOverr2 = props.componentOverrides) === null || _props$componentOverr2 === void 0 ? void 0 : _props$componentOverr2.proactiveChatPane) || /*#__PURE__*/React.createElement(ProactiveChatPaneStateful, {
398
+ })), !((_props$controlProps7 = props.controlProps) !== null && _props$controlProps7 !== void 0 && _props$controlProps7.hideProactiveChatPane) && shouldShowProactiveChatPane(state) && (decodeComponentString((_props$componentOverr2 = props.componentOverrides) === null || _props$componentOverr2 === void 0 ? void 0 : _props$componentOverr2.proactiveChatPane) || /*#__PURE__*/React.createElement(ProactiveChatPaneStateful, {
246
399
  proactiveChatProps: props.proactiveChatPaneProps,
247
400
  startChat: prepareStartChatRelay
248
- })), !((_props$controlProps7 = props.controlProps) !== null && _props$controlProps7 !== void 0 && _props$controlProps7.hideHeader) && shouldShowHeader(state) && (decodeComponentString((_props$componentOverr3 = props.componentOverrides) === null || _props$componentOverr3 === void 0 ? void 0 : _props$componentOverr3.header) || /*#__PURE__*/React.createElement(HeaderStateful, {
401
+ })), !((_props$controlProps8 = props.controlProps) !== null && _props$controlProps8 !== void 0 && _props$controlProps8.hideHeader) && shouldShowHeader(state) && (decodeComponentString((_props$componentOverr3 = props.componentOverrides) === null || _props$componentOverr3 === void 0 ? void 0 : _props$componentOverr3.header) || /*#__PURE__*/React.createElement(HeaderStateful, {
249
402
  headerProps: props.headerProps,
250
403
  outOfOfficeHeaderProps: props.outOfOfficeHeaderProps,
251
404
  endChat: endChatRelay
252
- })), !((_props$controlProps8 = props.controlProps) !== null && _props$controlProps8 !== void 0 && _props$controlProps8.hideLoadingPane) && shouldShowLoadingPane(state) && (decodeComponentString((_props$componentOverr4 = props.componentOverrides) === null || _props$componentOverr4 === void 0 ? void 0 : _props$componentOverr4.loadingPane) || /*#__PURE__*/React.createElement(LoadingPaneStateful, props.loadingPaneProps)), !((_props$controlProps9 = props.controlProps) !== null && _props$controlProps9 !== void 0 && _props$controlProps9.hideOutOfOfficeHoursPane) && shouldShowOutOfOfficeHoursPane(state) && (decodeComponentString((_props$componentOverr5 = props.componentOverrides) === null || _props$componentOverr5 === void 0 ? void 0 : _props$componentOverr5.outOfOfficeHoursPane) || /*#__PURE__*/React.createElement(OutOfOfficeHoursPaneStateful, props.outOfOfficeHoursPaneProps)), !((_props$controlProps10 = props.controlProps) !== null && _props$controlProps10 !== void 0 && _props$controlProps10.hideReconnectChatPane) && shouldShowReconnectChatPane(state) && (decodeComponentString((_props$componentOverr6 = props.componentOverrides) === null || _props$componentOverr6 === void 0 ? void 0 : _props$componentOverr6.reconnectChatPane) || /*#__PURE__*/React.createElement(ReconnectChatPaneStateful, {
405
+ })), !((_props$controlProps9 = props.controlProps) !== null && _props$controlProps9 !== void 0 && _props$controlProps9.hideLoadingPane) && shouldShowLoadingPane(state) && (decodeComponentString((_props$componentOverr4 = props.componentOverrides) === null || _props$componentOverr4 === void 0 ? void 0 : _props$componentOverr4.loadingPane) || /*#__PURE__*/React.createElement(LoadingPaneStateful, props.loadingPaneProps)), !((_props$controlProps10 = props.controlProps) !== null && _props$controlProps10 !== void 0 && _props$controlProps10.hideOutOfOfficeHoursPane) && shouldShowOutOfOfficeHoursPane(state) && (decodeComponentString((_props$componentOverr5 = props.componentOverrides) === null || _props$componentOverr5 === void 0 ? void 0 : _props$componentOverr5.outOfOfficeHoursPane) || /*#__PURE__*/React.createElement(OutOfOfficeHoursPaneStateful, props.outOfOfficeHoursPaneProps)), !((_props$controlProps11 = props.controlProps) !== null && _props$controlProps11 !== void 0 && _props$controlProps11.hideReconnectChatPane) && shouldShowReconnectChatPane(state) && (decodeComponentString((_props$componentOverr6 = props.componentOverrides) === null || _props$componentOverr6 === void 0 ? void 0 : _props$componentOverr6.reconnectChatPane) || /*#__PURE__*/React.createElement(ReconnectChatPaneStateful, {
253
406
  reconnectChatProps: props.reconnectChatPaneProps,
254
407
  initStartChat: initStartChatRelay
255
- })), !((_props$controlProps11 = props.controlProps) !== null && _props$controlProps11 !== void 0 && _props$controlProps11.hidePreChatSurveyPane) && shouldShowPreChatSurveyPane(state) && /*#__PURE__*/React.createElement(PreChatSurveyPaneStateful, {
408
+ })), !((_props$controlProps12 = props.controlProps) !== null && _props$controlProps12 !== void 0 && _props$controlProps12.hidePreChatSurveyPane) && shouldShowPreChatSurveyPane(state) && (decodeComponentString((_props$componentOverr7 = props.componentOverrides) === null || _props$componentOverr7 === void 0 ? void 0 : _props$componentOverr7.preChatSurveyPane) || /*#__PURE__*/React.createElement(PreChatSurveyPaneStateful, {
256
409
  surveyProps: props.preChatSurveyPaneProps,
257
410
  initStartChat: initStartChatRelay
258
- }), !((_props$controlProps12 = props.controlProps) !== null && _props$controlProps12 !== void 0 && _props$controlProps12.hideCallingContainer) && shouldShowCallingContainer(state) && /*#__PURE__*/React.createElement(CallingContainerStateful, _extends({
411
+ })), !((_props$controlProps13 = props.controlProps) !== null && _props$controlProps13 !== void 0 && _props$controlProps13.hideCallingContainer) && shouldShowCallingContainer(state) && /*#__PURE__*/React.createElement(CallingContainerStateful, _extends({
259
412
  voiceVideoCallingSdk: voiceVideoCallingSDK
260
- }, props.callingContainerProps)), !((_props$controlProps13 = props.controlProps) !== null && _props$controlProps13 !== void 0 && _props$controlProps13.hideWebChatContainer) && shouldShowWebChatContainer(state) && (decodeComponentString((_props$componentOverr7 = props.componentOverrides) === null || _props$componentOverr7 === void 0 ? void 0 : _props$componentOverr7.webChatContainer) || /*#__PURE__*/React.createElement(WebChatContainerStateful, props.webChatContainerProps)), !((_props$controlProps14 = props.controlProps) !== null && _props$controlProps14 !== void 0 && _props$controlProps14.hideConfirmationPane) && shouldShowConfirmationPane(state) && (decodeComponentString((_props$componentOverr8 = props.componentOverrides) === null || _props$componentOverr8 === void 0 ? void 0 : _props$componentOverr8.confirmationPane) || /*#__PURE__*/React.createElement(ConfirmationPaneStateful, _extends({}, confirmationPaneProps, {
413
+ }, props.callingContainerProps)), !((_props$controlProps14 = props.controlProps) !== null && _props$controlProps14 !== void 0 && _props$controlProps14.hideWebChatContainer) && shouldShowWebChatContainer(state) && (decodeComponentString((_props$componentOverr8 = props.componentOverrides) === null || _props$componentOverr8 === void 0 ? void 0 : _props$componentOverr8.webChatContainer) || /*#__PURE__*/React.createElement(WebChatContainerStateful, props.webChatContainerProps)), !((_props$controlProps15 = props.controlProps) !== null && _props$controlProps15 !== void 0 && _props$controlProps15.hideConfirmationPane) && shouldShowConfirmationPane(state) && (decodeComponentString((_props$componentOverr9 = props.componentOverrides) === null || _props$componentOverr9 === void 0 ? void 0 : _props$componentOverr9.confirmationPane) || /*#__PURE__*/React.createElement(ConfirmationPaneStateful, _extends({}, confirmationPaneProps, {
261
414
  setPostChatContext: setPostChatContextRelay,
262
- endChat: endChatRelay
263
- }))), !((_props$controlProps15 = props.controlProps) !== null && _props$controlProps15 !== void 0 && _props$controlProps15.hidePostChatLoadingPane) && shouldShowPostChatLoadingPane(state) && (decodeComponentString((_props$componentOverr9 = props.componentOverrides) === null || _props$componentOverr9 === void 0 ? void 0 : _props$componentOverr9.postChatLoadingPane) || /*#__PURE__*/React.createElement(PostChatLoadingPaneStateful, props.postChatLoadingPaneProps)), shouldShowPostChatSurveyPane(state) && (decodeComponentString((_props$componentOverr10 = props.componentOverrides) === null || _props$componentOverr10 === void 0 ? void 0 : _props$componentOverr10.postChatSurveyPane) || /*#__PURE__*/React.createElement(PostChatSurveyPaneStateful, _extends({}, props.postChatSurveyPaneProps, props.chatSDK))), createFooter(props, state), shouldShowEmailTranscriptPane(state) && (decodeComponentString((_props$componentOverr11 = props.componentOverrides) === null || _props$componentOverr11 === void 0 ? void 0 : _props$componentOverr11.emailTranscriptPane) || /*#__PURE__*/React.createElement(EmailTranscriptPaneStateful, props.emailTranscriptPane))));
415
+ prepareEndChat: prepareEndChatRelay
416
+ }))), !((_props$controlProps16 = props.controlProps) !== null && _props$controlProps16 !== void 0 && _props$controlProps16.hidePostChatLoadingPane) && shouldShowPostChatLoadingPane(state) && (decodeComponentString((_props$componentOverr10 = props.componentOverrides) === null || _props$componentOverr10 === void 0 ? void 0 : _props$componentOverr10.postChatLoadingPane) || /*#__PURE__*/React.createElement(PostChatLoadingPaneStateful, props.postChatLoadingPaneProps)), shouldShowPostChatSurveyPane(state) && (decodeComponentString((_props$componentOverr11 = props.componentOverrides) === null || _props$componentOverr11 === void 0 ? void 0 : _props$componentOverr11.postChatSurveyPane) || /*#__PURE__*/React.createElement(PostChatSurveyPaneStateful, _extends({}, props.postChatSurveyPaneProps, props.chatSDK))), createFooter(props, state), shouldShowEmailTranscriptPane(state) && (decodeComponentString((_props$componentOverr12 = props.componentOverrides) === null || _props$componentOverr12 === void 0 ? void 0 : _props$componentOverr12.emailTranscriptPane) || /*#__PURE__*/React.createElement(EmailTranscriptPaneStateful, props.emailTranscriptPane))));
264
417
  };
265
418
  export default LiveChatWidgetStateful;
@@ -26,7 +26,7 @@ export const LoadingPaneStateful = props => {
26
26
  firstElement[0].focus();
27
27
  }
28
28
 
29
- TelemetryHelper.logActionEvent(LogLevel.INFO, {
29
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
30
30
  Event: TelemetryEvent.LoadingPaneLoaded,
31
31
  Description: "Loading pane loaded."
32
32
  });
@@ -1,5 +1,7 @@
1
+ import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
1
2
  import React, { useEffect } from "react";
2
3
  import { OutOfOfficeHoursPane } from "@microsoft/omnichannel-chat-components";
4
+ import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
3
5
  import { defaultGeneralStyleProps } from "./common/defaultStyleProps/defaultgeneralOOOHPaneStyleProps";
4
6
  import { findAllFocusableElement } from "../../common/utils";
5
7
  import useChatContextStore from "../../hooks/useChatContextStore";
@@ -23,6 +25,10 @@ export const OutOfOfficeHoursPaneStateful = props => {
23
25
  if (firstElement && firstElement[0]) {
24
26
  firstElement[0].focus();
25
27
  }
28
+
29
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
30
+ Event: TelemetryEvent.OutOfOfficePaneLoaded
31
+ });
26
32
  }, []);
27
33
  return /*#__PURE__*/React.createElement(OutOfOfficeHoursPane, {
28
34
  componentOverrides: props.componentOverrides,
@@ -3,6 +3,8 @@ import { LoadingPane } from "@microsoft/omnichannel-chat-components";
3
3
  import { defaultGeneralPostChatLoadingPaneStyleProps } from "./common/defaultgeneralPostChatLoadingPaneStyleProps";
4
4
  import { findAllFocusableElement } from "../../common/utils";
5
5
  import useChatContextStore from "../../hooks/useChatContextStore";
6
+ import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
7
+ import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
6
8
  export const PostChatLoadingPaneStateful = props => {
7
9
  var _props$styleProps;
8
10
 
@@ -28,6 +30,10 @@ export const PostChatLoadingPaneStateful = props => {
28
30
  if (firstElement && firstElement[0]) {
29
31
  firstElement[0].focus();
30
32
  }
33
+
34
+ TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
35
+ Event: TelemetryEvent.PostChatSurveyLoadingPaneLoaded
36
+ });
31
37
  }, []);
32
38
  return /*#__PURE__*/React.createElement(LoadingPane, {
33
39
  componentOverrides: props.componentOverrides,
@@ -1,15 +1,14 @@
1
+ import { HtmlAttributeNames, Regex } from "../../common/Constants";
1
2
  import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
3
  import React, { useEffect } from "react";
3
- import { extractPreChatSurveyResponseValues, findAllFocusableElement, parseAdaptiveCardPayload } from "../../common/utils";
4
+ import { extractPreChatSurveyResponseValues, findAllFocusableElement, getStateFromCache, isUndefinedOrEmpty, parseAdaptiveCardPayload } from "../../common/utils";
4
5
  import { ConversationState } from "../../contexts/common/ConversationState";
5
6
  import { LiveChatWidgetActionType } from "../../contexts/common/LiveChatWidgetActionType";
6
7
  import { PreChatSurveyPane } from "@microsoft/omnichannel-chat-components";
7
- import { Constants, HtmlAttributeNames, Regex } from "../../common/Constants";
8
8
  import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
9
9
  import { defaultGeneralPreChatSurveyPaneStyleProps } from "./common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps";
10
10
  import { defaultPreChatSurveyLocalizedTexts } from "./common/defaultProps/defaultPreChatSurveyLocalizedTexts";
11
- import useChatContextStore from "../../hooks/useChatContextStore";
12
- import { DataStoreManager } from "../../common/contextDataStore/DataStoreManager"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ import useChatContextStore from "../../hooks/useChatContextStore"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
12
 
14
13
  export const PreChatSurveyPaneStateful = props => {
15
14
  var _surveyProps$stylePro, _props$surveyProps, _props$surveyProps$co;
@@ -40,7 +39,7 @@ export const PreChatSurveyPaneStateful = props => {
40
39
  try {
41
40
  return parseAdaptiveCardPayload(payload, requiredFieldMissingMessage);
42
41
  } catch (ex) {
43
- TelemetryHelper.logLoadingEvent(LogLevel.ERROR, {
42
+ TelemetryHelper.logConfigDataEvent(LogLevel.ERROR, {
44
43
  Event: TelemetryEvent.ParseAdaptiveCardFailed,
45
44
  Description: "Adaptive Card JSON Parse Failed.",
46
45
  ExceptionDetails: {
@@ -67,13 +66,12 @@ export const PreChatSurveyPaneStateful = props => {
67
66
  });
68
67
 
69
68
  try {
70
- var _DataStoreManager$cli, _persistedState$domai;
69
+ var _state$domainStates, _state$domainStates$t, _state$domainStates$t2, _persistedState$domai, _persistedState$appSt;
71
70
 
72
- const widgetStateFromCache = (_DataStoreManager$cli = DataStoreManager.clientDataStore) === null || _DataStoreManager$cli === void 0 ? void 0 : _DataStoreManager$cli.getData(Constants.widgetStateDataKey, "localStorage");
73
- const persistedState = widgetStateFromCache ? JSON.parse(widgetStateFromCache) : undefined;
74
- let optionalParams = {};
71
+ const persistedState = getStateFromCache(((_state$domainStates = state.domainStates) === null || _state$domainStates === void 0 ? void 0 : (_state$domainStates$t = _state$domainStates.telemetryInternalData) === null || _state$domainStates$t === void 0 ? void 0 : _state$domainStates$t.orgId) ?? "", ((_state$domainStates$t2 = state.domainStates.telemetryInternalData) === null || _state$domainStates$t2 === void 0 ? void 0 : _state$domainStates$t2.widgetId) ?? "");
72
+ let optionalParams = {}; //Connect to Active chats and chat is not popout
75
73
 
76
- if (persistedState !== null && persistedState !== void 0 && (_persistedState$domai = persistedState.domainStates) !== null && _persistedState$domai !== void 0 && _persistedState$domai.liveChatContext) {
74
+ if (persistedState && !isUndefinedOrEmpty(persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$domai = persistedState.domainStates) === null || _persistedState$domai === void 0 ? void 0 : _persistedState$domai.liveChatContext) && (persistedState === null || persistedState === void 0 ? void 0 : (_persistedState$appSt = persistedState.appStates) === null || _persistedState$appSt === void 0 ? void 0 : _persistedState$appSt.conversationState) === ConversationState.Active && !state.appStates.skipChatButtonRendering) {
77
75
  var _persistedState$domai2;
78
76
 
79
77
  optionalParams = {
@@ -83,9 +81,7 @@ export const PreChatSurveyPaneStateful = props => {
83
81
  } else {
84
82
  const prechatResponseValues = extractPreChatSurveyResponseValues(state.domainStates.preChatSurveyResponse, values);
85
83
  optionalParams = {
86
- initContext: {
87
- preChatResponse: prechatResponseValues
88
- }
84
+ preChatResponse: prechatResponseValues
89
85
  };
90
86
  setPreChatResponseEmail(values);
91
87
  await initStartChat(optionalParams);