@microsoft/omnichannel-chat-widget 0.1.0-main.3d1c026 → 0.1.0-main.4151518

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 (388) hide show
  1. package/README.md +232 -0
  2. package/lib/cjs/assets/Audios.js +8 -0
  3. package/lib/cjs/assets/Icons.js +30 -0
  4. package/lib/cjs/common/Constants.js +61 -151
  5. package/lib/cjs/common/KeyCodes.js +3 -4
  6. package/lib/cjs/common/contextDataStore/DataStoreManager.js +12 -0
  7. package/lib/cjs/common/storage/default/defaultCacheManager.js +26 -0
  8. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +111 -0
  9. package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +78 -0
  10. package/lib/cjs/common/telemetry/TelemetryConstants.js +118 -26
  11. package/lib/cjs/common/telemetry/TelemetryHelper.js +31 -56
  12. package/lib/cjs/common/telemetry/TelemetryManager.js +17 -35
  13. package/lib/cjs/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  14. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -3
  15. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +49 -35
  16. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +6 -14
  17. package/lib/cjs/common/utils.js +101 -80
  18. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +21 -45
  19. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +20 -26
  20. package/lib/cjs/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  21. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +21 -99
  22. package/lib/cjs/components/dimlayer/DimLayer.js +0 -4
  23. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +11 -39
  24. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -8
  25. package/lib/cjs/components/footerstateful/FooterStateful.js +14 -46
  26. package/lib/cjs/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +0 -6
  27. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +15 -44
  28. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -8
  29. package/lib/cjs/components/headerstateful/HeaderStateful.js +27 -35
  30. package/lib/cjs/components/livechatwidget/LiveChatWidget.js +2 -14
  31. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +39 -0
  32. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +139 -0
  33. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +20 -0
  34. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  35. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +34 -0
  36. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +64 -0
  37. package/lib/cjs/components/livechatwidget/common/Deferred.js +37 -0
  38. package/lib/cjs/components/livechatwidget/common/agentEndConversationHelper.js +36 -0
  39. package/lib/cjs/components/livechatwidget/common/authHelper.js +50 -0
  40. package/lib/cjs/components/livechatwidget/common/createAdapter.js +12 -9
  41. package/lib/cjs/components/livechatwidget/common/createFooter.js +4 -23
  42. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -10
  43. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +36 -44
  44. package/lib/cjs/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +14 -0
  45. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +151 -68
  46. package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +0 -3
  47. package/lib/cjs/components/livechatwidget/common/endChat.js +151 -61
  48. package/lib/cjs/components/livechatwidget/common/getGeneralStylesForButton.js +0 -6
  49. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +10 -14
  50. package/lib/cjs/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -8
  51. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +34 -74
  52. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +102 -66
  53. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +13 -20
  54. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +271 -29
  55. package/lib/cjs/components/livechatwidget/common/shareObservable.js +41 -0
  56. package/lib/cjs/components/livechatwidget/common/startChat.js +281 -67
  57. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +3 -11
  58. package/lib/cjs/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -11
  59. package/lib/cjs/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  60. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +413 -165
  61. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +38 -26
  62. package/lib/cjs/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +57 -0
  63. package/lib/cjs/components/loadingpanestateful/interfaces/IStartChatErrorPaneControlProps.js +1 -0
  64. package/lib/cjs/components/loadingpanestateful/interfaces/IStartChatErrorPaneProps.js +1 -0
  65. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +9 -14
  66. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +9 -14
  67. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +35 -24
  68. package/lib/cjs/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  69. package/lib/cjs/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +13 -0
  70. package/lib/cjs/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  71. package/lib/cjs/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  72. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +27 -43
  73. package/lib/cjs/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +1 -1
  74. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +27 -35
  75. package/lib/cjs/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  76. package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +8 -24
  77. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +94 -19
  78. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -7
  79. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -6
  80. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +11 -0
  81. package/lib/cjs/components/webchatcontainerstateful/common/mockadapter.js +12 -27
  82. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +9 -16
  83. package/lib/cjs/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -24
  84. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +56 -88
  85. package/lib/cjs/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -8
  86. package/lib/cjs/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  87. package/lib/cjs/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  88. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +12 -0
  89. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -5
  90. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  91. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  92. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  93. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  94. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  95. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  96. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  97. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  98. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +0 -7
  99. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -5
  100. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +33 -80
  101. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +10 -22
  102. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +27 -61
  103. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +7 -15
  104. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +41 -0
  105. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +82 -0
  106. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
  107. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +10 -0
  108. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -3
  109. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -3
  110. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +10 -0
  111. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -9
  112. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +89 -0
  113. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +7 -18
  114. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +8 -42
  115. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +4 -22
  116. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +20 -33
  117. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +3 -9
  118. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +81 -45
  119. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +1 -10
  120. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +7 -18
  121. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -19
  122. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +1 -9
  123. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -9
  124. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -34
  125. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +1 -10
  126. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +7 -11
  127. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +5 -14
  128. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -21
  129. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +33 -0
  130. package/lib/cjs/contexts/ChatAdapterStore.js +0 -2
  131. package/lib/cjs/contexts/ChatContextStore.js +0 -2
  132. package/lib/cjs/contexts/ChatSDKStore.js +0 -2
  133. package/lib/cjs/contexts/common/ConversationEndEntity.js +12 -0
  134. package/lib/cjs/contexts/common/ConversationState.js +4 -3
  135. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +34 -24
  136. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +24 -12
  137. package/lib/cjs/contexts/createReducer.js +213 -106
  138. package/lib/cjs/controller/componentController.js +5 -34
  139. package/lib/cjs/hooks/useChatAdapterStore.js +0 -6
  140. package/lib/cjs/hooks/useChatContextStore.js +0 -6
  141. package/lib/cjs/hooks/useChatSDKStore.js +0 -6
  142. package/lib/cjs/hooks/useDebounce.js +28 -0
  143. package/lib/cjs/hooks/useWindowDimensions.js +30 -0
  144. package/lib/cjs/index.js +0 -5
  145. package/lib/cjs/plugins/newMessageEventHandler.js +92 -0
  146. package/lib/esm/assets/Audios.js +1 -0
  147. package/lib/esm/assets/Icons.js +12 -0
  148. package/lib/esm/common/Constants.js +55 -139
  149. package/lib/esm/common/KeyCodes.js +3 -3
  150. package/lib/esm/common/contextDataStore/DataStoreManager.js +5 -0
  151. package/lib/esm/common/interfaces/IContextDataStore.js +1 -0
  152. package/lib/esm/common/storage/default/defaultCacheManager.js +18 -0
  153. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +104 -0
  154. package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +70 -0
  155. package/lib/esm/common/telemetry/TelemetryConstants.js +117 -21
  156. package/lib/esm/common/telemetry/TelemetryHelper.js +32 -46
  157. package/lib/esm/common/telemetry/TelemetryManager.js +17 -24
  158. package/lib/esm/common/telemetry/defaultConfigs/defaultAriaConfig.js +1 -1
  159. package/lib/esm/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +4 -1
  160. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +49 -23
  161. package/lib/esm/common/telemetry/loggers/consoleLogger.js +6 -10
  162. package/lib/esm/common/utils.js +92 -44
  163. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +21 -16
  164. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +23 -13
  165. package/lib/esm/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  166. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +22 -75
  167. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +11 -18
  168. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -6
  169. package/lib/esm/components/footerstateful/FooterStateful.js +15 -26
  170. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +15 -37
  171. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -6
  172. package/lib/esm/components/headerstateful/HeaderStateful.js +28 -21
  173. package/lib/esm/components/livechatwidget/LiveChatWidget.js +2 -2
  174. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +32 -0
  175. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +134 -0
  176. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +13 -0
  177. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.js +1 -0
  178. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +27 -0
  179. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +57 -0
  180. package/lib/esm/components/livechatwidget/common/Deferred.js +30 -0
  181. package/lib/esm/components/livechatwidget/common/agentEndConversationHelper.js +30 -0
  182. package/lib/esm/components/livechatwidget/common/authHelper.js +42 -0
  183. package/lib/esm/components/livechatwidget/common/createAdapter.js +14 -4
  184. package/lib/esm/components/livechatwidget/common/createFooter.js +4 -16
  185. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -5
  186. package/lib/esm/components/livechatwidget/common/createMarkdown.js +38 -37
  187. package/lib/esm/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +7 -0
  188. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +152 -57
  189. package/lib/esm/components/livechatwidget/common/endChat.js +152 -47
  190. package/lib/esm/components/livechatwidget/common/getGeneralStylesForButton.js +0 -2
  191. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +12 -11
  192. package/lib/esm/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -5
  193. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +35 -45
  194. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +102 -58
  195. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +13 -12
  196. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +272 -22
  197. package/lib/esm/components/livechatwidget/common/shareObservable.js +35 -0
  198. package/lib/esm/components/livechatwidget/common/startChat.js +284 -52
  199. package/lib/esm/components/livechatwidget/common/startProactiveChat.js +5 -5
  200. package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +4 -2
  201. package/lib/esm/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  202. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +415 -117
  203. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +39 -14
  204. package/lib/esm/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +50 -0
  205. package/lib/esm/components/loadingpanestateful/interfaces/IStartChatErrorPaneControlProps.js +1 -0
  206. package/lib/esm/components/loadingpanestateful/interfaces/IStartChatErrorPaneProps.js +1 -0
  207. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +9 -4
  208. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +9 -4
  209. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +35 -12
  210. package/lib/esm/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  211. package/lib/esm/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +6 -0
  212. package/lib/esm/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  213. package/lib/esm/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  214. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +30 -28
  215. package/lib/esm/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +1 -1
  216. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +30 -14
  217. package/lib/esm/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.js +1 -0
  218. package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +8 -6
  219. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +94 -4
  220. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -1
  221. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -2
  222. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +4 -0
  223. package/lib/esm/components/webchatcontainerstateful/common/mockadapter.js +12 -19
  224. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +9 -12
  225. package/lib/esm/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -16
  226. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +7 -17
  227. package/lib/esm/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -6
  228. package/lib/esm/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  229. package/lib/esm/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.js +1 -0
  230. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +5 -0
  231. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -3
  232. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  233. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  234. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  235. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  236. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  237. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  238. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  239. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  240. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +2 -5
  241. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -4
  242. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +34 -66
  243. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +12 -14
  244. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +27 -40
  245. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +9 -8
  246. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +34 -0
  247. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +80 -0
  248. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
  249. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +3 -0
  250. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -1
  251. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -1
  252. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +3 -0
  253. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -7
  254. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +83 -0
  255. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +8 -9
  256. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +9 -28
  257. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +5 -14
  258. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +20 -22
  259. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +5 -8
  260. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +81 -40
  261. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +3 -7
  262. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +9 -14
  263. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -14
  264. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +3 -7
  265. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -7
  266. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +15 -27
  267. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +3 -5
  268. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +9 -9
  269. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +7 -9
  270. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -13
  271. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +27 -0
  272. package/lib/esm/contexts/ChatAdapterStore.js +2 -1
  273. package/lib/esm/contexts/ChatContextStore.js +2 -1
  274. package/lib/esm/contexts/ChatSDKStore.js +2 -1
  275. package/lib/esm/contexts/common/ConversationEndEntity.js +5 -0
  276. package/lib/esm/contexts/common/ConversationState.js +4 -3
  277. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +34 -24
  278. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +24 -8
  279. package/lib/esm/contexts/createReducer.js +213 -102
  280. package/lib/esm/controller/componentController.js +6 -5
  281. package/lib/esm/hooks/useChatAdapterStore.js +0 -4
  282. package/lib/esm/hooks/useChatContextStore.js +0 -4
  283. package/lib/esm/hooks/useChatSDKStore.js +0 -4
  284. package/lib/esm/hooks/useDebounce.js +22 -0
  285. package/lib/esm/hooks/useWindowDimensions.js +23 -0
  286. package/lib/esm/plugins/newMessageEventHandler.js +85 -0
  287. package/lib/types/assets/Audios.d.ts +1 -0
  288. package/lib/types/assets/Icons.d.ts +12 -0
  289. package/lib/types/common/Constants.d.ts +48 -1
  290. package/lib/types/common/contextDataStore/DataStoreManager.d.ts +4 -0
  291. package/lib/types/common/interfaces/IContextDataStore.d.ts +14 -0
  292. package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
  293. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
  294. package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
  295. package/lib/types/common/telemetry/TelemetryConstants.d.ts +85 -7
  296. package/lib/types/common/telemetry/TelemetryHelper.d.ts +2 -0
  297. package/lib/types/common/telemetry/definitions/Contracts.d.ts +4 -4
  298. package/lib/types/common/telemetry/definitions/Payload.d.ts +13 -9
  299. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +7 -3
  300. package/lib/types/common/utils.d.ts +9 -1
  301. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +0 -4
  302. package/lib/types/components/footerstateful/audionotificationstateful/interfaces/IAudioNotificationStatefulParams.d.ts +0 -1
  303. package/lib/types/components/headerstateful/interfaces/IHeaderStatefulParams.d.ts +5 -1
  304. package/lib/types/components/livechatwidget/common/ActivityStreamHandler.d.ts +14 -0
  305. package/lib/types/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.d.ts +9 -0
  306. package/lib/types/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.d.ts +5 -0
  307. package/lib/types/components/livechatwidget/common/ActivitySubscriber/IActivitySubscriber.d.ts +6 -0
  308. package/lib/types/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.d.ts +7 -0
  309. package/lib/types/components/livechatwidget/common/ChatAdapterShim.d.ts +7 -0
  310. package/lib/types/components/livechatwidget/common/Deferred.d.ts +9 -0
  311. package/lib/types/components/livechatwidget/common/agentEndConversationHelper.d.ts +6 -0
  312. package/lib/types/components/livechatwidget/common/authHelper.d.ts +5 -0
  313. package/lib/types/components/livechatwidget/common/defaultProps/defaultScrollBarProps.d.ts +2 -0
  314. package/lib/types/components/livechatwidget/common/endChat.d.ts +4 -1
  315. package/lib/types/components/livechatwidget/common/initWebChatComposer.d.ts +1 -1
  316. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +6 -4
  317. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +6 -1
  318. package/lib/types/components/livechatwidget/common/shareObservable.d.ts +1 -0
  319. package/lib/types/components/livechatwidget/common/startChat.d.ts +5 -2
  320. package/lib/types/components/livechatwidget/common/startProactiveChat.d.ts +2 -1
  321. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetComponentOverrides.d.ts +1 -0
  322. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +4 -1
  323. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +9 -2
  324. package/lib/types/components/livechatwidget/interfaces/IScrollBarProps.d.ts +22 -0
  325. package/lib/types/components/loadingpanestateful/LoadingPaneStateful.d.ts +1 -2
  326. package/lib/types/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.d.ts +2 -0
  327. package/lib/types/components/loadingpanestateful/interfaces/IStartChatErrorPaneControlProps.d.ts +4 -0
  328. package/lib/types/components/loadingpanestateful/interfaces/IStartChatErrorPaneProps.d.ts +4 -0
  329. package/lib/types/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.d.ts +2 -2
  330. package/lib/types/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.d.ts +5 -0
  331. package/lib/types/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.d.ts +4 -0
  332. package/lib/types/components/prechatsurveypanestateful/interfaces/IPreChatSurveyPaneStatefulParams.d.ts +1 -1
  333. package/lib/types/components/proactivechatpanestateful/interfaces/IProactiveChatNotificationConfig.d.ts +3 -0
  334. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +1 -2
  335. package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.d.ts +2 -0
  336. package/lib/types/components/webchatcontainerstateful/common/mockchatsdk.d.ts +2 -0
  337. package/lib/types/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.d.ts +1 -1
  338. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +4 -0
  339. package/lib/types/components/webchatcontainerstateful/interfaces/IBotMagicCodeConfig.d.ts +4 -0
  340. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +4 -1
  341. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +4 -0
  342. package/lib/types/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.d.ts +3 -0
  343. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.d.ts +0 -1
  344. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
  345. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.d.ts +2 -0
  346. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.d.ts +1 -0
  347. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
  348. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.d.ts +3 -0
  349. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.d.ts +3 -0
  350. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.d.ts +5 -0
  351. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.d.ts +1 -1
  352. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.d.ts +1 -1
  353. package/lib/types/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.d.ts +1 -0
  354. package/lib/types/contexts/common/ConversationEndEntity.d.ts +4 -0
  355. package/lib/types/contexts/common/ConversationState.d.ts +4 -2
  356. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +13 -4
  357. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +34 -23
  358. package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
  359. package/lib/types/hooks/useDebounce.d.ts +3 -0
  360. package/lib/types/hooks/useWindowDimensions.d.ts +4 -0
  361. package/lib/types/plugins/newMessageEventHandler.d.ts +2 -0
  362. package/package.json +12 -13
  363. package/lib/cjs/assets/audios/newMessageNotification.mp3 +0 -0
  364. package/lib/cjs/assets/icons/archiveIcon.svg +0 -3
  365. package/lib/cjs/assets/icons/audioIcon.svg +0 -6
  366. package/lib/cjs/assets/icons/blankIcon.svg +0 -6
  367. package/lib/cjs/assets/icons/excelIcon.svg +0 -6
  368. package/lib/cjs/assets/icons/imageIcon.svg +0 -6
  369. package/lib/cjs/assets/icons/oneNoteIcon.svg +0 -6
  370. package/lib/cjs/assets/icons/pdfIcon.svg +0 -6
  371. package/lib/cjs/assets/icons/powerpointIcon.svg +0 -6
  372. package/lib/cjs/assets/icons/videoIcon.svg +0 -6
  373. package/lib/cjs/assets/icons/visioIcon.svg +0 -6
  374. package/lib/cjs/assets/icons/wordIcon.svg +0 -6
  375. package/lib/esm/assets/assets.d.js +0 -0
  376. package/lib/esm/assets/audios/newMessageNotification.mp3 +0 -0
  377. package/lib/esm/assets/icons/archiveIcon.svg +0 -3
  378. package/lib/esm/assets/icons/audioIcon.svg +0 -6
  379. package/lib/esm/assets/icons/blankIcon.svg +0 -6
  380. package/lib/esm/assets/icons/excelIcon.svg +0 -6
  381. package/lib/esm/assets/icons/imageIcon.svg +0 -6
  382. package/lib/esm/assets/icons/oneNoteIcon.svg +0 -6
  383. package/lib/esm/assets/icons/pdfIcon.svg +0 -6
  384. package/lib/esm/assets/icons/powerpointIcon.svg +0 -6
  385. package/lib/esm/assets/icons/videoIcon.svg +0 -6
  386. package/lib/esm/assets/icons/visioIcon.svg +0 -6
  387. package/lib/esm/assets/icons/wordIcon.svg +0 -6
  388. /package/lib/cjs/{assets/assets.d.js → common/interfaces/IContextDataStore.js} +0 -0
@@ -1,40 +1,26 @@
1
1
  import { LogLevel, TelemetryEvent } from "../../common/telemetry/TelemetryConstants";
2
+ import { ConfirmationPane } from "@microsoft/omnichannel-chat-components";
2
3
  import React, { useEffect } from "react";
3
4
  import { findAllFocusableElement, findParentFocusableElementsWithoutChildContainer, preventFocusToMoveOutOfElement, setFocusOnElement, setFocusOnSendBox, setTabIndices } from "../../common/utils";
4
- import { ConfirmationPane } from "@microsoft/omnichannel-chat-components";
5
- import { Constants } from "../../common/Constants";
6
- import { ConversationState } from "../../contexts/common/ConversationState";
7
5
  import { DimLayer } from "../dimlayer/DimLayer";
8
6
  import { LiveChatWidgetActionType } from "../../contexts/common/LiveChatWidgetActionType";
9
- import { NotificationHandler } from "../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler";
10
- import { NotificationScenarios } from "../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios";
11
- import { PostChatSurveyMode } from "../postchatsurveypanestateful/enums/PostChatSurveyMode";
12
7
  import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
13
8
  import useChatAdapterStore from "../../hooks/useChatAdapterStore";
14
9
  import useChatContextStore from "../../hooks/useChatContextStore";
15
- import useChatSDKStore from "../../hooks/useChatSDKStore"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
+ import { ConversationEndEntity } from "../../contexts/common/ConversationEndEntity";
16
11
 
12
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
13
  export const ConfirmationPaneStateful = props => {
18
- var _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4;
19
-
20
14
  const initialTabIndexMap = new Map();
21
15
  let elements = [];
22
16
  const [state, dispatch] = useChatContextStore();
23
- const {
24
- setPostChatContext,
25
- endChat
26
- } = props; // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
-
28
- const chatSDK = useChatSDKStore(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
-
17
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
30
18
  const [adapter] = useChatAdapterStore();
31
- const isPostChatEnabled = (_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : (_state$domainStates$l2 = _state$domainStates$l.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.msdyn_postconversationsurveyenable;
32
- const postChatSurveyMode = (_state$domainStates$l3 = state.domainStates.liveChatConfig) === null || _state$domainStates$l3 === void 0 ? void 0 : (_state$domainStates$l4 = _state$domainStates$l3.LiveWSAndLiveChatEngJoin) === null || _state$domainStates$l4 === void 0 ? void 0 : _state$domainStates$l4.msdyn_postconversationsurveymode;
33
19
  const controlProps = {
34
20
  id: "oc-lcw-confirmation-pane",
35
21
  dir: state.domainStates.globalDir,
36
22
  onConfirm: async () => {
37
- TelemetryHelper.logConfigDataEvent(LogLevel.INFO, {
23
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
38
24
  Event: TelemetryEvent.ConfirmationConfirmButtonClicked,
39
25
  Description: "Confirmation pane Confirm button clicked"
40
26
  });
@@ -42,54 +28,18 @@ export const ConfirmationPaneStateful = props => {
42
28
  type: LiveChatWidgetActionType.SET_SHOW_CONFIRMATION,
43
29
  payload: false
44
30
  });
45
-
46
- try {
47
- //ToDo: End Chat before PostChat Context and conversation Details is set once the getPostChatContext request ID fetch issue is fixed
48
- const conversationDetails = await chatSDK.getConversationDetails(); // ToDo: Replace with CanRenderPostChat once available in conversationDetails API response
49
-
50
- if (isPostChatEnabled === "true" && postChatSurveyMode === PostChatSurveyMode.Embed && conversationDetails.canRenderPostChat === Constants.truePascal) {
51
- dispatch({
52
- type: LiveChatWidgetActionType.SET_SHOULD_SHOW_POST_CHAT,
53
- payload: true
54
- });
55
- dispatch({
56
- type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
57
- payload: ConversationState.Loading
58
- });
59
- await setPostChatContext();
60
-
61
- if (state.domainStates.postChatContext) {
62
- dispatch({
63
- type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
64
- payload: ConversationState.Postchat
65
- });
66
- }
67
- } else {
68
- setTabIndices(elements, initialTabIndexMap, true);
69
-
70
- try {
71
- await endChat(adapter);
72
- } catch (error) {
73
- TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
74
- Event: TelemetryEvent.CloseChatMethodException,
75
- ExceptionDetails: {
76
- exception: `Failed to endChat: ${error}`
77
- }
78
- });
79
- }
80
- }
81
- } catch (ex) {
82
- TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
83
- Event: TelemetryEvent.GetConversationDetailsCallFailed,
84
- ExceptionDetails: {
85
- exception: `Get Conversation Details Call Failed : ${ex}`
86
- }
87
- });
88
- NotificationHandler.notifyError(NotificationScenarios.Connection, "Get Conversation Details Call Failed: " + ex);
89
- }
31
+ setTabIndices(elements, initialTabIndexMap, true);
32
+ dispatch({
33
+ type: LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY,
34
+ payload: ConversationEndEntity.Customer
35
+ });
36
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
37
+ Event: TelemetryEvent.ConversationEndedByCustomer,
38
+ Description: "Conversation is ended by customer."
39
+ });
90
40
  },
91
41
  onCancel: () => {
92
- TelemetryHelper.logConfigDataEvent(LogLevel.INFO, {
42
+ TelemetryHelper.logActionEvent(LogLevel.INFO, {
93
43
  Event: TelemetryEvent.ConfirmationCancelButtonClicked,
94
44
  Description: "Confirmation pane Cancel button clicked."
95
45
  });
@@ -97,38 +47,35 @@ export const ConfirmationPaneStateful = props => {
97
47
  type: LiveChatWidgetActionType.SET_SHOW_CONFIRMATION,
98
48
  payload: false
99
49
  });
100
- const previousFocused = state.appStates.previousElementOnFocusBeforeModalOpen;
101
-
102
- if (previousFocused) {
103
- setFocusOnElement(previousFocused);
50
+ const previousFocusedElementId = state.appStates.previousElementIdOnFocusBeforeModalOpen;
51
+ if (previousFocusedElementId) {
52
+ setFocusOnElement("#" + previousFocusedElementId);
104
53
  dispatch({
105
- type: LiveChatWidgetActionType.SET_PREVIOUS_FOCUSED_ELEMENT,
54
+ type: LiveChatWidgetActionType.SET_PREVIOUS_FOCUSED_ELEMENT_ID,
106
55
  payload: null
107
56
  });
108
57
  } else {
109
58
  setFocusOnSendBox();
110
59
  }
111
-
112
60
  setTabIndices(elements, initialTabIndexMap, true);
113
61
  },
114
62
  ...(props === null || props === void 0 ? void 0 : props.controlProps)
115
- }; // Move focus to the first button
63
+ };
116
64
 
65
+ // Move focus to the first button
117
66
  useEffect(() => {
118
67
  preventFocusToMoveOutOfElement(controlProps.id);
119
68
  const focusableElements = findAllFocusableElement(`#${controlProps.id}`);
120
-
121
69
  if (focusableElements) {
122
70
  focusableElements[0].focus();
123
71
  }
124
-
125
72
  elements = findParentFocusableElementsWithoutChildContainer(controlProps.id);
126
73
  setTabIndices(elements, initialTabIndexMap, false);
127
74
  TelemetryHelper.logLoadingEvent(LogLevel.INFO, {
128
75
  Event: TelemetryEvent.ConfirmationPaneLoaded
129
76
  });
130
77
  }, []);
131
- return /*#__PURE__*/React.createElement(React.Fragment, null, !(controlProps !== null && controlProps !== void 0 && controlProps.disableDimLayer) && /*#__PURE__*/React.createElement(DimLayer, {
78
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DimLayer, {
132
79
  brightness: (controlProps === null || controlProps === void 0 ? void 0 : controlProps.brightnessValueOnDim) ?? "0.2"
133
80
  }), /*#__PURE__*/React.createElement(ConfirmationPane, {
134
81
  componentOverrides: props === null || props === void 0 ? void 0 : props.componentOverrides,
@@ -12,34 +12,29 @@ import useChatContextStore from "../../hooks/useChatContextStore";
12
12
  import useChatSDKStore from "../../hooks/useChatSDKStore";
13
13
  export const EmailTranscriptPaneStateful = props => {
14
14
  var _props$controlProps;
15
-
16
15
  const initialTabIndexMap = new Map();
17
16
  let elements = [];
18
- const [state, dispatch] = useChatContextStore(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
-
17
+ const [state, dispatch] = useChatContextStore();
18
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
19
  const chatSDK = useChatSDKStore();
21
20
  const [initialEmail, setInitialEmail] = useState("");
22
-
23
21
  const closeEmailTranscriptPane = () => {
24
22
  dispatch({
25
23
  type: LiveChatWidgetActionType.SET_SHOW_EMAIL_TRANSCRIPT_PANE,
26
24
  payload: false
27
25
  });
28
- const previousFocused = state.appStates.previousElementOnFocusBeforeModalOpen;
29
-
30
- if (previousFocused) {
31
- setFocusOnElement(previousFocused);
26
+ const previousFocusedElementId = state.appStates.previousElementIdOnFocusBeforeModalOpen;
27
+ if (previousFocusedElementId) {
28
+ setFocusOnElement("#" + previousFocusedElementId);
32
29
  } else {
33
30
  setFocusOnSendBox();
34
31
  }
35
-
36
32
  dispatch({
37
- type: LiveChatWidgetActionType.SET_PREVIOUS_FOCUSED_ELEMENT,
33
+ type: LiveChatWidgetActionType.SET_PREVIOUS_FOCUSED_ELEMENT_ID,
38
34
  payload: null
39
35
  });
40
36
  setTabIndices(elements, initialTabIndexMap, true);
41
37
  };
42
-
43
38
  const controlProps = {
44
39
  id: "oclcw-emailTranscriptDialogContainer",
45
40
  dir: state.domainStates.globalDir,
@@ -49,7 +44,6 @@ export const EmailTranscriptPaneStateful = props => {
49
44
  emailAddress: email,
50
45
  attachmentMessage: (props === null || props === void 0 ? void 0 : props.attachmentMessage) ?? "The following attachment was uploaded during the conversation:"
51
46
  };
52
-
53
47
  try {
54
48
  await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.emailLiveChatTranscript(chatTranscriptBody));
55
49
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
@@ -68,8 +62,8 @@ export const EmailTranscriptPaneStateful = props => {
68
62
  },
69
63
  onCancel: () => {
70
64
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
71
- Event: TelemetryEvent.EmailTranscriptButtonClicked,
72
- Description: "Email Transcript button clicked."
65
+ Event: TelemetryEvent.EmailTranscriptCancelButtonClicked,
66
+ Description: "Email Transcript cancel button clicked."
73
67
  });
74
68
  closeEmailTranscriptPane();
75
69
  },
@@ -78,16 +72,15 @@ export const EmailTranscriptPaneStateful = props => {
78
72
  },
79
73
  ...props.controlProps,
80
74
  inputInitialText: ((_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.inputInitialText) ?? initialEmail
81
- }; // Move focus to the first button
75
+ };
82
76
 
77
+ // Move focus to the first button
83
78
  useEffect(() => {
84
79
  preventFocusToMoveOutOfElement(controlProps.id);
85
80
  const focusableElements = findAllFocusableElement(`#${controlProps.id}`);
86
-
87
81
  if (focusableElements) {
88
82
  focusableElements[0].focus();
89
83
  }
90
-
91
84
  elements = findParentFocusableElementsWithoutChildContainer(controlProps.id);
92
85
  setTabIndices(elements, initialTabIndexMap, false);
93
86
  setInitialEmail(state.appStates.preChatResponseEmail);
@@ -95,7 +88,7 @@ export const EmailTranscriptPaneStateful = props => {
95
88
  Event: TelemetryEvent.EmailTranscriptLoaded
96
89
  });
97
90
  }, [initialEmail]);
98
- return /*#__PURE__*/React.createElement(React.Fragment, null, !(controlProps !== null && controlProps !== void 0 && controlProps.disableDimLayer) && /*#__PURE__*/React.createElement(DimLayer, {
91
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DimLayer, {
99
92
  brightness: (controlProps === null || controlProps === void 0 ? void 0 : controlProps.brightnessValueOnDim) ?? "0.2"
100
93
  }), /*#__PURE__*/React.createElement(InputValidationPane, {
101
94
  componentOverrides: props.componentOverrides,
@@ -19,10 +19,10 @@ describe("EmailTranscriptPaneStateful unit test", () => {
19
19
  attachmentMessage: "sample",
20
20
  locale: "sample"
21
21
  };
22
-
23
22
  try {
24
23
  await chatSDK.emailLiveChatTranscript(chatTranscriptBody);
25
- expect(chatSDK.emailLiveChatTranscript).toHaveBeenCalledTimes(1); // eslint-disable-next-line no-empty
24
+ expect(chatSDK.emailLiveChatTranscript).toHaveBeenCalledTimes(1);
25
+ // eslint-disable-next-line no-empty
26
26
  } catch (ex) {}
27
27
  });
28
28
  it("Method emailLiveChatTranscript throws exception", async () => {
@@ -39,9 +39,9 @@ describe("EmailTranscriptPaneStateful unit test", () => {
39
39
  attachmentMessage: "sample",
40
40
  locale: "sample"
41
41
  };
42
-
43
42
  try {
44
- await chatSDK.emailLiveChatTranscript(chatTranscriptBody); // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
+ await chatSDK.emailLiveChatTranscript(chatTranscriptBody);
44
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
45
  } catch (ex) {
46
46
  expect(ex.message).toEqual(errorMessage);
47
47
  }
@@ -59,9 +59,9 @@ describe("EmailTranscriptPaneStateful unit test", () => {
59
59
  attachmentMessage: "sample",
60
60
  locale: "sample"
61
61
  };
62
-
63
62
  try {
64
- await chatSDK.emailLiveChatTranscript(chatTranscriptBody); // eslint-disable-next-line @typescript-eslint/no-explicit-any
63
+ await chatSDK.emailLiveChatTranscript(chatTranscriptBody);
64
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
65
65
  } catch (ex) {
66
66
  expect(ex.message).toEqual(errorMessage);
67
67
  }
@@ -4,28 +4,28 @@ import AudioNotificationStateful from "./audionotificationstateful/AudioNotifica
4
4
  import { Constants } from "../../common/Constants";
5
5
  import { Footer } from "@microsoft/omnichannel-chat-components";
6
6
  import { LiveChatWidgetActionType } from "../../contexts/common/LiveChatWidgetActionType";
7
+ import { NewMessageNotificationSoundBase64 } from "../../assets/Audios";
7
8
  import { NotificationHandler } from "../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler";
8
9
  import { NotificationScenarios } from "../webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios";
9
10
  import { TelemetryHelper } from "../../common/telemetry/TelemetryHelper";
10
11
  import { downloadTranscript } from "./downloadtranscriptstateful/DownloadTranscriptStateful";
11
12
  import useChatContextStore from "../../hooks/useChatContextStore";
12
13
  import useChatSDKStore from "../../hooks/useChatSDKStore";
13
- import newMessageNotification from "../../assets/audios/newMessageNotification.mp3"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
14
 
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
16
  export const FooterStateful = props => {
16
17
  var _footerProps$controlP3, _footerProps$controlP4;
17
-
18
- const [state, dispatch] = useChatContextStore(); // hideFooterDisplay - the purpose of this is to keep the footer always "active",
18
+ const [state, dispatch] = useChatContextStore();
19
+ // hideFooterDisplay - the purpose of this is to keep the footer always "active",
19
20
  // but hide it visually in certain states (e.g., loading state) and show in some other states (e.g. active state).
20
21
  // The reason for this approach is to make sure that state variables for audio notification work correctly after minimizing
21
-
22
22
  const {
23
23
  footerProps,
24
24
  downloadTranscriptProps,
25
25
  audioNotificationProps,
26
26
  hideFooterDisplay
27
- } = props; // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
-
27
+ } = props;
28
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
29
  const chatSDK = useChatSDKStore();
30
30
  const controlProps = {
31
31
  id: "oc-lcw-footer",
@@ -49,21 +49,17 @@ export const FooterStateful = props => {
49
49
  },
50
50
  onEmailTranscriptClick: () => {
51
51
  var _footerProps$controlP, _footerProps$controlP2;
52
-
53
52
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
54
53
  Event: TelemetryEvent.EmailTranscriptButtonClicked,
55
54
  Description: "Email Transcript button clicked."
56
55
  });
57
- const emailTranscriptButtonId = (footerProps === null || footerProps === void 0 ? void 0 : (_footerProps$controlP = footerProps.controlProps) === null || _footerProps$controlP === void 0 ? void 0 : (_footerProps$controlP2 = _footerProps$controlP.emailTranscriptButtonProps) === null || _footerProps$controlP2 === void 0 ? void 0 : _footerProps$controlP2.id) ?? "oc-lcw-footer-emailtranscript-button";
58
- const emailTranscriptButton = document.getElementById(emailTranscriptButtonId);
59
-
60
- if (emailTranscriptButton) {
56
+ const emailTranscriptButtonId = (footerProps === null || footerProps === void 0 ? void 0 : (_footerProps$controlP = footerProps.controlProps) === null || _footerProps$controlP === void 0 ? void 0 : (_footerProps$controlP2 = _footerProps$controlP.emailTranscriptButtonProps) === null || _footerProps$controlP2 === void 0 ? void 0 : _footerProps$controlP2.id) ?? `${controlProps.id}-emailtranscript-button`;
57
+ if (emailTranscriptButtonId) {
61
58
  dispatch({
62
- type: LiveChatWidgetActionType.SET_PREVIOUS_FOCUSED_ELEMENT,
63
- payload: emailTranscriptButton
59
+ type: LiveChatWidgetActionType.SET_PREVIOUS_FOCUSED_ELEMENT_ID,
60
+ payload: emailTranscriptButtonId
64
61
  });
65
62
  }
66
-
67
63
  dispatch({
68
64
  type: LiveChatWidgetActionType.SET_SHOW_EMAIL_TRANSCRIPT_PANE,
69
65
  payload: true
@@ -80,25 +76,18 @@ export const FooterStateful = props => {
80
76
  });
81
77
  },
82
78
  ...(footerProps === null || footerProps === void 0 ? void 0 : footerProps.controlProps),
83
- audioNotificationButtonProps: { ...(footerProps === null || footerProps === void 0 ? void 0 : (_footerProps$controlP3 = footerProps.controlProps) === null || _footerProps$controlP3 === void 0 ? void 0 : _footerProps$controlP3.audioNotificationButtonProps),
79
+ audioNotificationButtonProps: {
80
+ ...(footerProps === null || footerProps === void 0 ? void 0 : (_footerProps$controlP3 = footerProps.controlProps) === null || _footerProps$controlP3 === void 0 ? void 0 : _footerProps$controlP3.audioNotificationButtonProps),
84
81
  isAudioMuted: state.appStates.isAudioMuted
85
82
  }
86
83
  };
87
- const footerId = (controlProps === null || controlProps === void 0 ? void 0 : controlProps.id) ?? "oc-lcw-footer";
88
- const footer = document.getElementById(footerId);
89
-
90
- if (footer) {
91
- footer.style.display = hideFooterDisplay ? "none" : "";
92
- }
93
-
94
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Footer, {
84
+ return /*#__PURE__*/React.createElement(React.Fragment, null, !hideFooterDisplay && /*#__PURE__*/React.createElement(Footer, {
95
85
  componentOverrides: footerProps === null || footerProps === void 0 ? void 0 : footerProps.componentOverrides,
96
86
  controlProps: controlProps,
97
87
  styleProps: footerProps === null || footerProps === void 0 ? void 0 : footerProps.styleProps
98
88
  }), /*#__PURE__*/React.createElement(AudioNotificationStateful, {
99
- audioSrc: (audioNotificationProps === null || audioNotificationProps === void 0 ? void 0 : audioNotificationProps.audioSrc) ?? newMessageNotification,
100
- hideAudioNotificationButton: (footerProps === null || footerProps === void 0 ? void 0 : (_footerProps$controlP4 = footerProps.controlProps) === null || _footerProps$controlP4 === void 0 ? void 0 : _footerProps$controlP4.hideAudioNotificationButton) ?? false,
101
- isAudioMuted: state.appStates.isAudioMuted ?? false
89
+ audioSrc: (audioNotificationProps === null || audioNotificationProps === void 0 ? void 0 : audioNotificationProps.audioSrc) ?? NewMessageNotificationSoundBase64,
90
+ isAudioMuted: state.appStates.isAudioMuted === null ? (footerProps === null || footerProps === void 0 ? void 0 : (_footerProps$controlP4 = footerProps.controlProps) === null || _footerProps$controlP4 === void 0 ? void 0 : _footerProps$controlP4.hideAudioNotificationButton) ?? false : state.appStates.isAudioMuted ?? false
102
91
  }));
103
92
  };
104
93
  export default FooterStateful;
@@ -3,27 +3,21 @@ import { NotificationScenarios } from "../../webchatcontainerstateful/webchatcon
3
3
  import { NotificationHandler } from "../../webchatcontainerstateful/webchatcontroller/notification/NotificationHandler";
4
4
  import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
5
5
  import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
6
-
7
6
  const processDisplayName = displayName => {
8
7
  // if displayname matches "teamsvisitor:<some alphanumeric string>", we replace it with "Customer"
9
8
  const displayNameRegex = ".+:.+";
10
9
  const matchedTeamsDisplayName = displayName.match(displayNameRegex);
11
-
12
10
  if (displayName.indexOf("teamsvisitor") >= 0 && matchedTeamsDisplayName && matchedTeamsDisplayName.length > 0) {
13
11
  displayName = "Customer";
14
12
  }
15
-
16
13
  return displayName;
17
14
  };
18
-
19
15
  const constructIconName = displayName => {
20
16
  if (!displayName) {
21
17
  return "";
22
18
  }
23
-
24
19
  let iconName = "C";
25
20
  const displayNameSplit = displayName.split(" ");
26
-
27
21
  if (displayNameSplit.length > 1) {
28
22
  // get the first letter of name and surname
29
23
  iconName = displayNameSplit[0][0] + displayNameSplit[1][0];
@@ -31,55 +25,42 @@ const constructIconName = displayName => {
31
25
  // get the first letter of name
32
26
  iconName = displayNameSplit[0][0];
33
27
  }
34
-
35
28
  return iconName;
36
29
  };
37
-
38
30
  const processCreatedDateTime = (createdDateTime, chatCount) => {
39
- const formattedDate = new Date(createdDateTime); // TODO: Localization:
40
-
41
- const formattedTimeString = formattedDate.toLocaleTimeString("en-us"
42
- /* Bootstrapper.LiveChatConfiguration.chatWidgetLocale */
43
- , {
31
+ const formattedDate = new Date(createdDateTime);
32
+ // TODO: Localization:
33
+ const formattedTimeString = formattedDate.toLocaleTimeString("en-us" /* Bootstrapper.LiveChatConfiguration.chatWidgetLocale */, {
44
34
  hour: "2-digit",
45
35
  minute: "2-digit"
46
36
  });
47
37
  const formattedSplitTimeString = formattedTimeString.split(" ");
48
38
  let finalizedTimeString = "";
49
-
50
39
  if (formattedSplitTimeString && formattedSplitTimeString.length > 1) {
51
40
  finalizedTimeString = formattedSplitTimeString[0] + " " + formattedSplitTimeString[1];
52
41
  }
53
-
54
42
  if (chatCount == 0) {
55
43
  return formattedDate.toLocaleDateString("en-us") + " " + finalizedTimeString;
56
44
  }
57
-
58
45
  return finalizedTimeString;
59
46
  };
60
-
61
47
  const processContent = (transcriptContent, isAgentChat, renderMarkDown) => {
62
48
  if (transcriptContent.toString().toLowerCase().indexOf(TranscriptConstants.TranscriptMessageEmojiMessageType) >= 0) {
63
49
  // eslint-disable-next-line no-useless-escape
64
50
  const emojiRegex = "<img src=\"http.*:\/\/.+\/objects\/.+\/views.+\">";
65
51
  const matchedEmojiImgTag = transcriptContent.match(emojiRegex);
66
-
67
52
  if (matchedEmojiImgTag && matchedEmojiImgTag.length > 0 && transcriptContent.toString().toLowerCase().indexOf(matchedEmojiImgTag[0]) >= 0) {
68
53
  transcriptContent = transcriptContent.replace(matchedEmojiImgTag[0], "");
69
54
  }
70
55
  }
71
-
72
56
  if (!isAgentChat && transcriptContent.toString().toLowerCase().indexOf("a href") >= 0 && transcriptContent.toString().toLowerCase().indexOf("target") >= 0) {
73
57
  transcriptContent = transcriptContent.slice(0, transcriptContent.toString().indexOf("target")) + " style='color:white' " + transcriptContent.slice(transcriptContent.toString().indexOf("target"));
74
58
  }
75
-
76
59
  if (renderMarkDown) {
77
60
  transcriptContent = renderMarkDown(transcriptContent);
78
61
  }
79
-
80
62
  return transcriptContent;
81
63
  };
82
-
83
64
  const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMessage) => {
84
65
  const chats = JSON.parse(chatTranscripts).reverse();
85
66
  const docTypeTag = "<!DOCTYPE html>";
@@ -94,8 +75,9 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
94
75
  let tabIndex = 1;
95
76
  const mainTranscriptSection = "<div class='allTranscripts' style='max-width:60%;min-width:30%;margin-left:20%;background-color:#FFFFFF;'>";
96
77
  let previousDisplayName = "";
97
- let chatCount = 0; // eslint-disable-next-line @typescript-eslint/no-explicit-any
78
+ let chatCount = 0;
98
79
 
80
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
99
81
  chats.forEach(value => {
100
82
  let dialogNameMarginTop = "6px";
101
83
  let dialogboxMarginleft = "40px";
@@ -105,8 +87,13 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
105
87
  let fileAttachmentName = TranscriptConstants.DefaultFileAttachmentName;
106
88
  let dialogColor = TranscriptConstants.CustomerDialogColor;
107
89
  let fontColor = TranscriptConstants.CustomerFontColor;
108
-
109
- if (value.tags && value.tags.toLowerCase().indexOf(Constants.systemMessageTag) !== -1 || value.isControlMessage && value.isControlMessage === true || value.contentType && value.contentType.toLowerCase() === TranscriptConstants.AdaptiveCardType || value.deliveryMode && value.deliveryMode.toLowerCase() === TranscriptConstants.InternalMode) {
90
+ const isSystemMessage = value.tags && value.tags.toLowerCase().indexOf(Constants.systemMessageTag) !== -1;
91
+ const isControlMessage = value.isControlMessage && value.isControlMessage === true;
92
+ const isAdaptiveCard = value.contentType && value.contentType.toLowerCase() === TranscriptConstants.AdaptiveCardType;
93
+ const isInternalMessage = value.deliveryMode && value.deliveryMode.toLowerCase() === TranscriptConstants.InternalMode;
94
+ const isHiddenMessage = value.tags && value.tags.toLowerCase().indexOf(Constants.hiddenTag.toLowerCase()) !== -1;
95
+ const shouldIgnoreMessage = isSystemMessage || isControlMessage || isAdaptiveCard || isInternalMessage || isHiddenMessage;
96
+ if (shouldIgnoreMessage) {
110
97
  return;
111
98
  } else if (value.from) {
112
99
  if (value.from.application) {
@@ -121,19 +108,15 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
121
108
  displayName = value.from.user.displayName;
122
109
  dialogColor = TranscriptConstants.CustomerDialogColor;
123
110
  }
124
-
125
111
  displayName = processDisplayName(displayName);
126
112
  iconName = constructIconName(displayName);
127
-
128
113
  if (value.attachments && value.attachments.length > 0 && value.attachments[0].name) {
129
114
  fileAttachmentName = value.attachments[0].name;
130
- value.content = attachmentMessage ?? "The following attachment was uploaded during the conversation:" + fileAttachmentName;
115
+ value.content = attachmentMessage ? attachmentMessage + " " + fileAttachmentName : "The following attachment was uploaded during the conversation: " + fileAttachmentName;
131
116
  }
132
117
  }
133
-
134
118
  let displayNamePlaceholder = processCreatedDateTime(value.createdDateTime, chatCount);
135
119
  let iconPara = "";
136
-
137
120
  if (displayName !== previousDisplayName) {
138
121
  dialogboxMarginleft = "0px";
139
122
  displayNamePlaceholder = "<b>" + displayName + " </b> " + processCreatedDateTime(value.createdDateTime, chatCount);
@@ -144,17 +127,14 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
144
127
  </div>";
145
128
  tabIndex++;
146
129
  }
147
-
148
130
  if (displayName !== previousDisplayName) {
149
131
  if (previousDisplayName === "") {
150
132
  dialogNameMarginTop = "0px";
151
133
  }
152
-
153
134
  if (previousDisplayName !== "") {
154
135
  dialogNameMarginTop = "20px";
155
136
  }
156
137
  }
157
-
158
138
  const displayNameDiv = "<div style='margin-right:-2px;margin-top:" + dialogNameMarginTop + ";margin-bottom:-2px;margin-left:42px;top:-2px;position:relative;'>\
159
139
  <font tabindex ='" + tabIndex + "' size = '1px' color='#000000' style='font-family:Segoe UI,SegoeUI,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:500;'>\
160
140
  " + displayNamePlaceholder + "\
@@ -168,16 +148,14 @@ const beautifyChatTranscripts = (chatTranscripts, renderMarkDown, attachmentMess
168
148
  });
169
149
  const str = docTypeTag + docStartTag + docMetaTag + bodyStartTag + mainTranscriptSection + beautifiedChats + divEndTag + bodyEndTag + docEndTag;
170
150
  return str;
171
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
172
-
151
+ };
173
152
 
153
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
174
154
  export const downloadTranscript = async (chatSDK, renderMarkDown, bannerMessageOnError, attachmentMessage) => {
175
155
  let data = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getLiveChatTranscript());
176
-
177
156
  if (typeof data === Constants.String) {
178
157
  data = JSON.parse(data);
179
158
  }
180
-
181
159
  if (data[Constants.ChatMessagesJson] !== null && data[Constants.ChatMessagesJson] !== undefined) {
182
160
  const chatTranscripts = window.btoa(encodeURIComponent(beautifyChatTranscripts(data[Constants.ChatMessagesJson], renderMarkDown, attachmentMessage)));
183
161
  const byteCharacters = decodeURIComponent(window.atob(chatTranscripts));
@@ -14,10 +14,10 @@ describe("DownloadTranscriptStateful unit test", () => {
14
14
  };
15
15
  const chatSDK = new OmnichannelChatSDK(omnichannelConfig);
16
16
  jest.spyOn(chatSDK, "getLiveChatTranscript").mockResolvedValue(Promise.resolve());
17
-
18
17
  try {
19
18
  await chatSDK.getLiveChatTranscript();
20
- expect(chatSDK.getLiveChatTranscript).toHaveBeenCalledTimes(1); // eslint-disable-next-line no-empty
19
+ expect(chatSDK.getLiveChatTranscript).toHaveBeenCalledTimes(1);
20
+ // eslint-disable-next-line no-empty
21
21
  } catch (ex) {}
22
22
  });
23
23
  it("Method getLiveChatTranscript throws exception", async () => {
@@ -29,9 +29,9 @@ describe("DownloadTranscriptStateful unit test", () => {
29
29
  };
30
30
  const chatSDK = new OmnichannelChatSDK(omnichannelConfig);
31
31
  jest.spyOn(chatSDK, "getLiveChatTranscript").mockRejectedValue(new Error(errorMessage));
32
-
33
32
  try {
34
- await chatSDK.getLiveChatTranscript(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
+ await chatSDK.getLiveChatTranscript();
34
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
35
  } catch (ex) {
36
36
  expect(ex.message).toEqual(errorMessage);
37
37
  }
@@ -44,9 +44,9 @@ describe("DownloadTranscriptStateful unit test", () => {
44
44
  widgetId: ""
45
45
  };
46
46
  const chatSDK = new OmnichannelChatSDK(omnichannelConfig);
47
-
48
47
  try {
49
- await chatSDK.getLiveChatTranscript(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
48
+ await chatSDK.getLiveChatTranscript();
49
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
50
  } catch (ex) {
51
51
  expect(ex.message).toEqual(errorMessage);
52
52
  }