@microsoft/omnichannel-chat-widget 0.1.0-main.fdf1fdf → 1.0.0

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 (312) hide show
  1. package/README.md +7 -34
  2. package/lib/cjs/assets/Icons.js +4 -2
  3. package/lib/cjs/common/Constants.js +31 -171
  4. package/lib/cjs/common/KeyCodes.js +3 -4
  5. package/lib/cjs/common/contextDataStore/DataStoreManager.js +3 -5
  6. package/lib/cjs/common/storage/default/defaultCacheManager.js +26 -0
  7. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +111 -0
  8. package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +78 -0
  9. package/lib/cjs/common/telemetry/TelemetryConstants.js +63 -27
  10. package/lib/cjs/common/telemetry/TelemetryHelper.js +21 -59
  11. package/lib/cjs/common/telemetry/TelemetryManager.js +3 -32
  12. package/lib/cjs/common/telemetry/defaultConfigs/defaultTelemetryConfiguration.js +0 -2
  13. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +30 -36
  14. package/lib/cjs/common/telemetry/loggers/consoleLogger.js +0 -9
  15. package/lib/cjs/common/utils.js +40 -106
  16. package/lib/cjs/components/callingcontainerstateful/CallingContainerStateful.js +8 -46
  17. package/lib/cjs/components/chatbuttonstateful/ChatButtonStateful.js +2 -24
  18. package/lib/cjs/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  19. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +18 -49
  20. package/lib/cjs/components/dimlayer/DimLayer.js +0 -4
  21. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +9 -37
  22. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -8
  23. package/lib/cjs/components/footerstateful/FooterStateful.js +11 -42
  24. package/lib/cjs/components/footerstateful/audionotificationstateful/AudioNotificationStateful.js +0 -6
  25. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -45
  26. package/lib/cjs/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -8
  27. package/lib/cjs/components/headerstateful/HeaderStateful.js +19 -31
  28. package/lib/cjs/components/livechatwidget/LiveChatWidget.js +2 -14
  29. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +5 -10
  30. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +139 -0
  31. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +3 -6
  32. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +7 -12
  33. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +14 -20
  34. package/lib/cjs/components/livechatwidget/common/Deferred.js +6 -11
  35. package/lib/cjs/components/livechatwidget/common/agentEndConversationHelper.js +36 -0
  36. package/lib/cjs/components/livechatwidget/common/authHelper.js +13 -15
  37. package/lib/cjs/components/livechatwidget/common/createAdapter.js +4 -13
  38. package/lib/cjs/components/livechatwidget/common/createFooter.js +4 -23
  39. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -10
  40. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +16 -24
  41. package/lib/cjs/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +14 -0
  42. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +127 -49
  43. package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +0 -3
  44. package/lib/cjs/components/livechatwidget/common/endChat.js +65 -70
  45. package/lib/cjs/components/livechatwidget/common/getGeneralStylesForButton.js +0 -6
  46. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +7 -16
  47. package/lib/cjs/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -8
  48. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +25 -101
  49. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +82 -151
  50. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +4 -17
  51. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +256 -12
  52. package/lib/cjs/components/livechatwidget/common/shareObservable.js +4 -8
  53. package/lib/cjs/components/livechatwidget/common/startChat.js +185 -128
  54. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +0 -8
  55. package/lib/cjs/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -11
  56. package/lib/cjs/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  57. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +284 -253
  58. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +37 -25
  59. package/lib/cjs/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +57 -0
  60. package/lib/cjs/components/loadingpanestateful/interfaces/IStartChatErrorPaneControlProps.js +1 -0
  61. package/lib/cjs/components/loadingpanestateful/interfaces/IStartChatErrorPaneProps.js +1 -0
  62. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +4 -17
  63. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -17
  64. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +35 -24
  65. package/lib/cjs/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  66. package/lib/cjs/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +13 -0
  67. package/lib/cjs/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  68. package/lib/cjs/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  69. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +10 -38
  70. package/lib/cjs/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +1 -1
  71. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +2 -32
  72. package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +8 -24
  73. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +21 -37
  74. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +0 -7
  75. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -6
  76. package/lib/cjs/components/webchatcontainerstateful/common/mockadapter.js +12 -27
  77. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +5 -18
  78. package/lib/cjs/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -24
  79. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +5 -15
  80. package/lib/cjs/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -8
  81. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -5
  82. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -5
  83. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  84. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  85. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  86. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  87. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  88. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  89. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  90. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  91. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +0 -7
  92. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -5
  93. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +17 -41
  94. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +10 -22
  95. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +25 -61
  96. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +7 -15
  97. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +2 -13
  98. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +0 -16
  99. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
  100. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +10 -0
  101. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -3
  102. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -3
  103. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +10 -0
  104. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -9
  105. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +2 -30
  106. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +7 -18
  107. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +8 -42
  108. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +4 -22
  109. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +20 -33
  110. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +3 -9
  111. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +81 -45
  112. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +1 -10
  113. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +1 -12
  114. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -19
  115. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +1 -9
  116. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -9
  117. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -34
  118. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +1 -10
  119. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +7 -11
  120. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +5 -14
  121. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -21
  122. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -12
  123. package/lib/cjs/contexts/ChatAdapterStore.js +0 -2
  124. package/lib/cjs/contexts/ChatContextStore.js +0 -2
  125. package/lib/cjs/contexts/ChatSDKStore.js +0 -2
  126. package/lib/cjs/contexts/common/ConversationEndEntity.js +12 -0
  127. package/lib/cjs/contexts/common/ConversationState.js +0 -1
  128. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +34 -29
  129. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +18 -13
  130. package/lib/cjs/contexts/createReducer.js +190 -110
  131. package/lib/cjs/controller/componentController.js +2 -31
  132. package/lib/cjs/hooks/useChatAdapterStore.js +0 -6
  133. package/lib/cjs/hooks/useChatContextStore.js +0 -6
  134. package/lib/cjs/hooks/useChatSDKStore.js +0 -6
  135. package/lib/cjs/hooks/useDebounce.js +28 -0
  136. package/lib/cjs/hooks/useWindowDimensions.js +30 -0
  137. package/lib/cjs/index.js +0 -5
  138. package/lib/cjs/plugins/newMessageEventHandler.js +29 -36
  139. package/lib/esm/assets/Icons.js +2 -1
  140. package/lib/esm/common/Constants.js +27 -158
  141. package/lib/esm/common/KeyCodes.js +3 -3
  142. package/lib/esm/common/contextDataStore/DataStoreManager.js +3 -3
  143. package/lib/esm/common/storage/default/defaultCacheManager.js +18 -0
  144. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +104 -0
  145. package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +70 -0
  146. package/lib/esm/common/telemetry/TelemetryConstants.js +67 -24
  147. package/lib/esm/common/telemetry/TelemetryHelper.js +21 -47
  148. package/lib/esm/common/telemetry/TelemetryManager.js +3 -19
  149. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +28 -24
  150. package/lib/esm/common/telemetry/loggers/consoleLogger.js +0 -5
  151. package/lib/esm/common/utils.js +38 -53
  152. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +8 -17
  153. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +2 -7
  154. package/lib/esm/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  155. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +20 -30
  156. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +9 -16
  157. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -6
  158. package/lib/esm/components/footerstateful/FooterStateful.js +13 -23
  159. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -35
  160. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -6
  161. package/lib/esm/components/headerstateful/HeaderStateful.js +19 -16
  162. package/lib/esm/components/livechatwidget/LiveChatWidget.js +2 -2
  163. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +5 -7
  164. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +134 -0
  165. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +3 -4
  166. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +7 -9
  167. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +14 -16
  168. package/lib/esm/components/livechatwidget/common/Deferred.js +6 -9
  169. package/lib/esm/components/livechatwidget/common/agentEndConversationHelper.js +30 -0
  170. package/lib/esm/components/livechatwidget/common/authHelper.js +13 -10
  171. package/lib/esm/components/livechatwidget/common/createAdapter.js +6 -6
  172. package/lib/esm/components/livechatwidget/common/createFooter.js +4 -16
  173. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +10 -5
  174. package/lib/esm/components/livechatwidget/common/createMarkdown.js +18 -18
  175. package/lib/esm/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +7 -0
  176. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +128 -35
  177. package/lib/esm/components/livechatwidget/common/endChat.js +69 -57
  178. package/lib/esm/components/livechatwidget/common/getGeneralStylesForButton.js +0 -2
  179. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +9 -11
  180. package/lib/esm/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -5
  181. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +28 -67
  182. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +80 -129
  183. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +4 -9
  184. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +259 -6
  185. package/lib/esm/components/livechatwidget/common/shareObservable.js +4 -7
  186. package/lib/esm/components/livechatwidget/common/startChat.js +184 -99
  187. package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +4 -2
  188. package/lib/esm/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  189. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +287 -188
  190. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +38 -13
  191. package/lib/esm/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +50 -0
  192. package/lib/esm/components/loadingpanestateful/interfaces/IStartChatErrorPaneControlProps.js +1 -0
  193. package/lib/esm/components/loadingpanestateful/interfaces/IStartChatErrorPaneProps.js +1 -0
  194. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +4 -5
  195. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -5
  196. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +35 -12
  197. package/lib/esm/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  198. package/lib/esm/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +6 -0
  199. package/lib/esm/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  200. package/lib/esm/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  201. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +12 -22
  202. package/lib/esm/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +1 -1
  203. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +4 -8
  204. package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +8 -6
  205. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +19 -11
  206. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -2
  207. package/lib/esm/components/webchatcontainerstateful/common/mockadapter.js +12 -19
  208. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +5 -14
  209. package/lib/esm/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -16
  210. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +5 -5
  211. package/lib/esm/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -6
  212. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -3
  213. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -3
  214. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  215. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  216. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  217. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  218. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  219. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  220. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  221. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  222. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +2 -5
  223. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -4
  224. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +17 -26
  225. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +12 -14
  226. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +25 -39
  227. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +9 -8
  228. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +2 -9
  229. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +0 -14
  230. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
  231. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +3 -0
  232. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -1
  233. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -1
  234. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +3 -0
  235. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -7
  236. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +4 -28
  237. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +8 -9
  238. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +9 -28
  239. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +5 -14
  240. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +20 -22
  241. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +5 -8
  242. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +81 -40
  243. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +3 -7
  244. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +3 -8
  245. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -14
  246. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +3 -7
  247. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -7
  248. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +15 -27
  249. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +3 -5
  250. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +9 -9
  251. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +7 -9
  252. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -13
  253. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -5
  254. package/lib/esm/contexts/ChatAdapterStore.js +2 -1
  255. package/lib/esm/contexts/ChatContextStore.js +2 -1
  256. package/lib/esm/contexts/ChatSDKStore.js +2 -1
  257. package/lib/esm/contexts/common/ConversationEndEntity.js +5 -0
  258. package/lib/esm/contexts/common/ConversationState.js +0 -1
  259. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +34 -29
  260. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +18 -9
  261. package/lib/esm/contexts/createReducer.js +190 -107
  262. package/lib/esm/controller/componentController.js +3 -2
  263. package/lib/esm/hooks/useChatAdapterStore.js +0 -4
  264. package/lib/esm/hooks/useChatContextStore.js +0 -4
  265. package/lib/esm/hooks/useChatSDKStore.js +0 -4
  266. package/lib/esm/hooks/useDebounce.js +22 -0
  267. package/lib/esm/hooks/useWindowDimensions.js +23 -0
  268. package/lib/esm/plugins/newMessageEventHandler.js +29 -26
  269. package/lib/types/assets/Icons.d.ts +1 -0
  270. package/lib/types/common/Constants.d.ts +21 -0
  271. package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
  272. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
  273. package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
  274. package/lib/types/common/telemetry/TelemetryConstants.d.ts +45 -9
  275. package/lib/types/common/telemetry/definitions/Contracts.d.ts +4 -4
  276. package/lib/types/common/telemetry/definitions/Payload.d.ts +1 -0
  277. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +4 -0
  278. package/lib/types/common/utils.d.ts +1 -0
  279. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +0 -7
  280. package/lib/types/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.d.ts +9 -0
  281. package/lib/types/components/livechatwidget/common/agentEndConversationHelper.d.ts +6 -0
  282. package/lib/types/components/livechatwidget/common/authHelper.d.ts +3 -2
  283. package/lib/types/components/livechatwidget/common/defaultProps/defaultScrollBarProps.d.ts +2 -0
  284. package/lib/types/components/livechatwidget/common/initWebChatComposer.d.ts +1 -1
  285. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -7
  286. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +6 -1
  287. package/lib/types/components/livechatwidget/common/startChat.d.ts +5 -4
  288. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +3 -1
  289. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +6 -2
  290. package/lib/types/components/livechatwidget/interfaces/IScrollBarProps.d.ts +22 -0
  291. package/lib/types/components/loadingpanestateful/LoadingPaneStateful.d.ts +1 -2
  292. package/lib/types/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.d.ts +2 -0
  293. package/lib/types/components/loadingpanestateful/interfaces/IStartChatErrorPaneControlProps.d.ts +4 -0
  294. package/lib/types/components/loadingpanestateful/interfaces/IStartChatErrorPaneProps.d.ts +4 -0
  295. package/lib/types/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.d.ts +2 -2
  296. package/lib/types/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.d.ts +5 -0
  297. package/lib/types/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.d.ts +4 -0
  298. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +0 -1
  299. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +4 -1
  300. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
  301. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
  302. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.d.ts +3 -0
  303. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.d.ts +3 -0
  304. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.d.ts +1 -1
  305. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.d.ts +1 -1
  306. package/lib/types/contexts/common/ConversationEndEntity.d.ts +4 -0
  307. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +9 -3
  308. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +34 -28
  309. package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
  310. package/lib/types/hooks/useDebounce.d.ts +3 -0
  311. package/lib/types/hooks/useWindowDimensions.d.ts +4 -0
  312. package/package.json +3 -3
@@ -4,27 +4,17 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.DeliveredTimestamp = void 0;
7
-
8
7
  var _react = _interopRequireDefault(require("react"));
9
-
10
8
  var _DirectLineSenderRole = require("../../../enums/DirectLineSenderRole");
11
-
12
9
  var _react2 = require("@fluentui/react");
13
-
14
10
  var _defaultMiddlewareLocalizedTexts = require("../../../../common/defaultProps/defaultMiddlewareLocalizedTexts");
15
-
16
11
  var _defaultTimestampContentStyles = require("../defaultStyles/defaultTimestampContentStyles");
17
-
18
12
  var _utils = require("../../../../../../common/utils");
19
-
20
13
  var _ = require("../../../../../..");
21
-
22
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
-
24
15
  /* eslint @typescript-eslint/no-explicit-any: "off" */
25
16
  const DeliveredTimestamp = _ref => {
26
17
  var _state$domainStates$r, _state$domainStates$r2, _state$domainStates$m;
27
-
28
18
  let {
29
19
  args,
30
20
  role,
@@ -32,7 +22,8 @@ const DeliveredTimestamp = _ref => {
32
22
  } = _ref;
33
23
  const [state] = (0, _.useChatContextStore)();
34
24
  const dir = ((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 ? void 0 : _state$domainStates$r.timestampDir) ?? state.domainStates.globalDir;
35
- const contentStyles = { ..._defaultTimestampContentStyles.defaultTimestampContentStyles,
25
+ const contentStyles = {
26
+ ..._defaultTimestampContentStyles.defaultTimestampContentStyles,
36
27
  ...((_state$domainStates$r2 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r2 === void 0 ? void 0 : _state$domainStates$r2.timestampContentStyleProps)
37
28
  };
38
29
  const {
@@ -42,15 +33,13 @@ const DeliveredTimestamp = _ref => {
42
33
  } = args;
43
34
  return /*#__PURE__*/_react.default.createElement(_react2.Stack, {
44
35
  style: contentStyles,
36
+ dir: dir
37
+ }, role === _DirectLineSenderRole.DirectLineSenderRole.Bot && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
45
38
  dir: dir,
46
- horizontal: true
47
- }, role === _DirectLineSenderRole.DirectLineSenderRole.Bot && /*#__PURE__*/_react.default.createElement("span", {
48
39
  "aria-hidden": "false"
49
- }, name), role === _DirectLineSenderRole.DirectLineSenderRole.Bot && /*#__PURE__*/_react.default.createElement("span", null, " \xA0-\xA0 "), /*#__PURE__*/_react.default.createElement("span", {
40
+ }, name, " - ", (0, _utils.getTimestampHourMinute)(timestamp))), role === _DirectLineSenderRole.DirectLineSenderRole.User && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
41
+ "aria-hidden": "false",
50
42
  dir: dir
51
- }, " ", (0, _utils.getTimestampHourMinute)(timestamp)), role === _DirectLineSenderRole.DirectLineSenderRole.User && /*#__PURE__*/_react.default.createElement("span", null, " \xA0-\xA0 "), role === _DirectLineSenderRole.DirectLineSenderRole.User && /*#__PURE__*/_react.default.createElement("span", {
52
- "aria-hidden": "false"
53
- }, ((_state$domainStates$m = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m === void 0 ? void 0 : _state$domainStates$m.MIDDLEWARE_MESSAGE_DELIVERED) ?? _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.MIDDLEWARE_MESSAGE_DELIVERED));
43
+ }, " ", (0, _utils.getTimestampHourMinute)(timestamp), " - ", ((_state$domainStates$m = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m === void 0 ? void 0 : _state$domainStates$m.MIDDLEWARE_MESSAGE_DELIVERED) ?? _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.MIDDLEWARE_MESSAGE_DELIVERED)));
54
44
  };
55
-
56
45
  exports.DeliveredTimestamp = DeliveredTimestamp;
@@ -4,37 +4,21 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.NotDeliveredTimestamp = void 0;
7
-
8
7
  var _react = _interopRequireWildcard(require("react"));
9
-
10
- var _Constants = require("../../../../../../common/Constants");
11
-
12
8
  var _KeyCodes = require("../../../../../../common/KeyCodes");
13
-
14
9
  var _react2 = require("@fluentui/react");
15
-
16
10
  var _defaultMiddlewareLocalizedTexts = require("../../../../common/defaultProps/defaultMiddlewareLocalizedTexts");
17
-
18
11
  var _defaultTimestampContentStyles = require("../defaultStyles/defaultTimestampContentStyles");
19
-
20
12
  var _defaultTimestampFailedStyles = require("../defaultStyles/defaultTimestampFailedStyles");
21
-
22
13
  var _defaultTimestampRetryStyles = require("../defaultStyles/defaultTimestampRetryStyles");
23
-
24
14
  var _utils = require("../../../../../../common/utils");
25
-
26
15
  var _botframeworkWebchat = require("botframework-webchat");
27
-
28
16
  var _ = require("../../../../../..");
29
-
30
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
-
32
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
-
34
19
  /* eslint @typescript-eslint/no-explicit-any: "off" */
35
20
  const NotDeliveredTimestamp = _ref => {
36
21
  var _state$domainStates$r, _state$domainStates$r2, _state$domainStates$r3, _state$domainStates$r4, _state$domainStates$m, _state$domainStates$m2;
37
-
38
22
  let {
39
23
  args
40
24
  } = _ref;
@@ -53,54 +37,37 @@ const NotDeliveredTimestamp = _ref => {
53
37
  } = activity;
54
38
  const [state] = (0, _.useChatContextStore)();
55
39
  const dir = ((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 ? void 0 : _state$domainStates$r.timestampDir) ?? state.domainStates.globalDir;
56
- const contentStyles = { ..._defaultTimestampContentStyles.defaultTimestampContentStyles,
40
+ const contentStyles = {
41
+ ..._defaultTimestampContentStyles.defaultTimestampContentStyles,
57
42
  ...((_state$domainStates$r2 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r2 === void 0 ? void 0 : _state$domainStates$r2.timestampContentStyleProps)
58
43
  };
59
- const failedTextStyles = { ..._defaultTimestampFailedStyles.defaultTimestampFailedStyles,
44
+ const failedTextStyles = {
45
+ ..._defaultTimestampFailedStyles.defaultTimestampFailedStyles,
60
46
  ...((_state$domainStates$r3 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r3 === void 0 ? void 0 : _state$domainStates$r3.timestampFailedTextStyleProps)
61
47
  };
62
- const retryTextStyles = { ..._defaultTimestampRetryStyles.defaultTimestampRetryStyles,
48
+ const retryTextStyles = {
49
+ ..._defaultTimestampRetryStyles.defaultTimestampRetryStyles,
63
50
  ...((_state$domainStates$r4 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r4 === void 0 ? void 0 : _state$domainStates$r4.timestampRetryTextStyleProps)
64
51
  };
65
52
  (0, _react.useEffect)(() => {
66
53
  var _timestampRef$current;
67
-
68
54
  const timestampWebChatNodes = timestampRef === null || timestampRef === void 0 ? void 0 : (_timestampRef$current = timestampRef.current) === null || _timestampRef$current === void 0 ? void 0 : _timestampRef$current.childNodes;
69
-
70
55
  if ((timestampWebChatNodes === null || timestampWebChatNodes === void 0 ? void 0 : timestampWebChatNodes.length) > 1) {
71
56
  timestampWebChatNodes[1].innerText = (0, _utils.getTimestampHourMinute)(timestamp);
72
57
  }
73
58
  }, [timestampRef]);
74
- const onRetryClick = (0, _react.useCallback)(async event => {
59
+ const onRetryClick = (0, _react.useCallback)(async () => {
75
60
  var _activity$channelData;
76
-
77
- removeNotDeliveredTimestamp(event);
78
61
  activity.previousClientActivityID = (_activity$channelData = activity.channelData) === null || _activity$channelData === void 0 ? void 0 : _activity$channelData.clientActivityID;
79
62
  await postActivity(activity);
80
63
  focus("sendBox");
81
64
  }, [activity, focus, postActivity]);
82
-
83
65
  const onRetryKeyEnter = event => {
84
66
  if (event.code === _KeyCodes.KeyCodes.ENTER) {
85
67
  event.preventDefault();
86
- onRetryClick(event);
68
+ onRetryClick();
87
69
  }
88
70
  };
89
-
90
- const removeNotDeliveredTimestamp = event => {
91
- let parent = event.target.parentElement;
92
-
93
- while (parent.tagName !== _Constants.HtmlAttributeNames.listItem) {
94
- parent = parent.parentElement;
95
-
96
- if (parent.tagName === _Constants.HtmlAttributeNames.unorderedList) {
97
- return;
98
- }
99
- }
100
-
101
- parent.parentNode.removeChild(parent);
102
- };
103
-
104
71
  return /*#__PURE__*/_react.default.createElement(_react2.Stack, {
105
72
  style: contentStyles,
106
73
  dir: dir,
@@ -114,5 +81,4 @@ const NotDeliveredTimestamp = _ref => {
114
81
  tabIndex: 0
115
82
  }, " ", ((_state$domainStates$m2 = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m2 === void 0 ? void 0 : _state$domainStates$m2.MIDDLEWARE_MESSAGE_RETRY) ?? _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.MIDDLEWARE_MESSAGE_RETRY, " "));
116
83
  };
117
-
118
84
  exports.NotDeliveredTimestamp = NotDeliveredTimestamp;
@@ -4,43 +4,25 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.SendingTimestamp = void 0;
7
-
8
7
  var _react = _interopRequireDefault(require("react"));
9
-
10
8
  var _react2 = require("@fluentui/react");
11
-
12
9
  var _defaultMiddlewareLocalizedTexts = require("../../../../common/defaultProps/defaultMiddlewareLocalizedTexts");
13
-
14
10
  var _defaultTimestampContentStyles = require("../defaultStyles/defaultTimestampContentStyles");
15
-
16
- var _utils = require("../../../../../../common/utils");
17
-
18
11
  var _ = require("../../../../../..");
19
-
20
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
-
22
13
  /* eslint @typescript-eslint/no-explicit-any: "off" */
23
- const SendingTimestamp = _ref => {
14
+ const SendingTimestamp = () => {
24
15
  var _state$domainStates$r, _state$domainStates$r2, _state$domainStates$m;
25
-
26
- let {
27
- args
28
- } = _ref;
29
16
  const [state] = (0, _.useChatContextStore)();
30
17
  const dir = ((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 ? void 0 : _state$domainStates$r.timestampDir) ?? state.domainStates.globalDir;
31
- const contentStyles = { ..._defaultTimestampContentStyles.defaultTimestampContentStyles,
18
+ const contentStyles = {
19
+ ..._defaultTimestampContentStyles.defaultTimestampContentStyles,
32
20
  ...((_state$domainStates$r2 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r2 === void 0 ? void 0 : _state$domainStates$r2.timestampContentStyleProps)
33
21
  };
34
- const {
35
- activity: {
36
- timestamp
37
- }
38
- } = args;
39
22
  return /*#__PURE__*/_react.default.createElement(_react2.Stack, {
40
23
  style: contentStyles,
41
24
  dir: dir,
42
25
  horizontal: true
43
- }, /*#__PURE__*/_react.default.createElement("span", null, " ", (0, _utils.getTimestampHourMinute)(timestamp)), /*#__PURE__*/_react.default.createElement("span", null, " \xA0-\xA0 "), /*#__PURE__*/_react.default.createElement("span", null, " ", ((_state$domainStates$m = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m === void 0 ? void 0 : _state$domainStates$m.MIDDLEWARE_MESSAGE_SENDING) ?? _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.MIDDLEWARE_MESSAGE_SENDING, " "));
26
+ }, /*#__PURE__*/_react.default.createElement("span", null, " ", ((_state$domainStates$m = state.domainStates.middlewareLocalizedTexts) === null || _state$domainStates$m === void 0 ? void 0 : _state$domainStates$m.MIDDLEWARE_MESSAGE_SENDING) ?? _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.MIDDLEWARE_MESSAGE_SENDING, " "));
44
27
  };
45
-
46
28
  exports.SendingTimestamp = SendingTimestamp;
@@ -4,34 +4,27 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.typingIndicatorMiddleware = void 0;
7
-
8
- var _react = _interopRequireDefault(require("react"));
9
-
7
+ var _react = _interopRequireWildcard(require("react"));
10
8
  var _DirectLineSenderRole = require("../../enums/DirectLineSenderRole");
11
-
9
+ var _utils = require("../../../../../common/utils");
12
10
  var _defaultMiddlewareLocalizedTexts = require("../../../common/defaultProps/defaultMiddlewareLocalizedTexts");
13
-
14
11
  var _defaultTypingIndicatorBubbleStyles = require("./defaultStyles/defaultTypingIndicatorBubbleStyles");
15
-
16
12
  var _defaultTypingIndicatorContainerStyles = require("./defaultStyles/defaultTypingIndicatorContainerStyles");
17
-
18
13
  var _defaultTypingIndicatorMessageStyles = require("./defaultStyles/defaultTypingIndicatorMessageStyles");
19
-
20
14
  var _ = require("../../../../..");
21
-
22
15
  var _useChatSDKStore = _interopRequireDefault(require("../../../../../hooks/useChatSDKStore"));
23
-
24
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
-
17
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
26
19
  /******
27
20
  * TypingIndicatorMiddleware
28
- *
21
+ *
29
22
  * This middleware changes the component that shows who's actively typing. It uses the default Microsoft LiveChatWidget styles.
30
23
  ******/
24
+
31
25
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
26
  const TypingIndicator = _ref => {
33
27
  var _state$domainStates$l, _state$domainStates$r, _state$domainStates$r2, _state$domainStates$r3;
34
-
35
28
  let {
36
29
  activeTyping,
37
30
  visible
@@ -39,39 +32,38 @@ const TypingIndicator = _ref => {
39
32
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
33
  const chatSDK = (0, _useChatSDKStore.default)();
41
34
  const [state] = (0, _.useChatContextStore)();
42
-
35
+ const debounceTyping = (0, _react.useCallback)((0, _utils.debounceLeading)(() => chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.sendTypingEvent()), []);
43
36
  if (!activeTyping || Object.keys(activeTyping).length === 0 || ((_state$domainStates$l = state.domainStates.liveChatConfig) === null || _state$domainStates$l === void 0 ? void 0 : _state$domainStates$l.LiveChatVersion) === 1 && !visible) {
44
37
  return null;
45
38
  }
46
-
47
39
  activeTyping = Object.keys(activeTyping).map(key => activeTyping[key]);
48
-
49
40
  for (let i = 0; i < activeTyping.length; i++) {
50
41
  if (activeTyping[i].role && activeTyping[i].role === _DirectLineSenderRole.DirectLineSenderRole.User) {
51
42
  var _state$domainStates$l2;
52
-
53
43
  //visible is set to false if the current user is typing, in which case, we just send typing indicator to OC
54
44
  if (((_state$domainStates$l2 = state.domainStates.liveChatConfig) === null || _state$domainStates$l2 === void 0 ? void 0 : _state$domainStates$l2.LiveChatVersion) === 2 && !visible) {
55
- chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.sendTypingEvent();
45
+ debounceTyping();
56
46
  return null;
57
47
  }
58
-
59
48
  activeTyping.splice(i, 1);
60
49
  i--;
61
50
  }
62
51
  }
63
-
64
- const localizedTexts = { ..._defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts,
52
+ const localizedTexts = {
53
+ ..._defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts,
65
54
  ...state.domainStates.middlewareLocalizedTexts
66
55
  };
67
56
  const message = getTypingIndicatorMessage(activeTyping, localizedTexts);
68
- const typingIndicatorStyles = { ..._defaultTypingIndicatorContainerStyles.defaultTypingIndicatorContainerStyles,
57
+ const typingIndicatorStyles = {
58
+ ..._defaultTypingIndicatorContainerStyles.defaultTypingIndicatorContainerStyles,
69
59
  ...((_state$domainStates$r = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r === void 0 ? void 0 : _state$domainStates$r.typingIndicatorStyleProps)
70
60
  };
71
- const typingIndicatorBubbleStyles = { ..._defaultTypingIndicatorBubbleStyles.defaultTypingIndicatorBubbleStyles,
61
+ const typingIndicatorBubbleStyles = {
62
+ ..._defaultTypingIndicatorBubbleStyles.defaultTypingIndicatorBubbleStyles,
72
63
  ...((_state$domainStates$r2 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r2 === void 0 ? void 0 : _state$domainStates$r2.typingIndicatorBubbleStyleProps)
73
64
  };
74
- const typingIndicatorMessageStyles = { ..._defaultTypingIndicatorMessageStyles.defaultTypingIndicatorMessageStyles,
65
+ const typingIndicatorMessageStyles = {
66
+ ..._defaultTypingIndicatorMessageStyles.defaultTypingIndicatorMessageStyles,
75
67
  ...((_state$domainStates$r3 = state.domainStates.renderingMiddlewareProps) === null || _state$domainStates$r3 === void 0 ? void 0 : _state$domainStates$r3.typingIndicatorMessageStyleProps)
76
68
  };
77
69
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("style", null, `
@@ -113,9 +105,9 @@ const TypingIndicator = _ref => {
113
105
  }), /*#__PURE__*/_react.default.createElement("div", {
114
106
  style: typingIndicatorMessageStyles
115
107
  }, " ", message, " ")));
116
- }; // eslint-disable-next-line react/display-name, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
117
-
108
+ };
118
109
 
110
+ // eslint-disable-next-line react/display-name, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
119
111
  const typingIndicatorMiddleware = () => next => args => {
120
112
  const {
121
113
  activeTyping,
@@ -125,11 +117,10 @@ const typingIndicatorMiddleware = () => next => args => {
125
117
  activeTyping: activeTyping,
126
118
  visible: visible
127
119
  });
128
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
129
-
120
+ };
130
121
 
122
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
131
123
  exports.typingIndicatorMiddleware = typingIndicatorMiddleware;
132
-
133
124
  const getTypingIndicatorMessage = (activeTyping, localizedTexts) => {
134
125
  if (!activeTyping || activeTyping.length === 0) {
135
126
  return "";
@@ -140,19 +131,15 @@ const getTypingIndicatorMessage = (activeTyping, localizedTexts) => {
140
131
  const firstMember = activeTyping[0].name;
141
132
  const lastMember = activeTyping[1].name;
142
133
  let message = localizedTexts.MIDDLEWARE_TYPING_INDICATOR_TWO;
143
-
144
134
  if (!message) {
145
135
  return "";
146
136
  }
147
-
148
137
  if (message.includes("{0}")) {
149
138
  message = message.replace("{0}", firstMember);
150
139
  }
151
-
152
140
  if (message.includes("{1}")) {
153
141
  message = message.replace("{1}", lastMember);
154
142
  }
155
-
156
143
  return message;
157
144
  } else {
158
145
  const message = localizedTexts.MIDDLEWARE_TYPING_INDICATOR_MULTIPLE;
@@ -4,14 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _WebChatActionType = require("../../enums/WebChatActionType");
9
-
10
8
  /******
11
9
  * AttachmentProcessingMiddleware
12
10
  *
13
11
  * Handles attachment sending.
14
12
  ******/
13
+
15
14
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
15
  const createSendFileAction = files => {
17
16
  return {
@@ -20,32 +19,27 @@ const createSendFileAction = files => {
20
19
  },
21
20
  type: _WebChatActionType.WebChatActionType.WEB_CHAT_SEND_FILES
22
21
  };
23
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
-
22
+ };
25
23
 
24
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
25
  const attachmentProcessingMiddleware = _ref => {
27
26
  let {
28
27
  dispatch
29
28
  } = _ref;
30
29
  return next => async action => {
31
30
  var _action$payload, _action$payload$files;
32
-
33
31
  if ((action === null || action === void 0 ? void 0 : action.type) === _WebChatActionType.WebChatActionType.WEB_CHAT_SEND_FILES && (action === null || action === void 0 ? void 0 : (_action$payload = action.payload) === null || _action$payload === void 0 ? void 0 : (_action$payload$files = _action$payload.files) === null || _action$payload$files === void 0 ? void 0 : _action$payload$files.length) > 0) {
34
32
  const files = action.payload.files;
35
-
36
33
  if (files.length === 1) {
37
34
  return next(action);
38
35
  }
39
-
40
36
  const dispatchAction = createSendFileAction(files.slice(0, files.length - 1));
41
37
  const nextAction = createSendFileAction([files[files.length - 1]]);
42
38
  await dispatch(dispatchAction);
43
39
  return next(nextAction);
44
40
  }
45
-
46
41
  return next(action);
47
42
  };
48
43
  };
49
-
50
44
  var _default = attachmentProcessingMiddleware;
51
45
  exports.default = _default;
@@ -4,46 +4,42 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
7
+ var _TelemetryConstants = require("../../../../../common/telemetry/TelemetryConstants");
8
8
  var _NotificationHandler = require("../../notification/NotificationHandler");
9
-
10
9
  var _NotificationScenarios = require("../../enums/NotificationScenarios");
11
-
12
10
  var _WebChatActionType = require("../../enums/WebChatActionType");
13
-
11
+ var _TelemetryHelper = require("../../../../../common/telemetry/TelemetryHelper");
12
+ var _Constants = require("../../../../../common/Constants");
14
13
  /******
15
14
  * AttachmentUploadValidatorMiddleware
16
15
  *
17
16
  * Checks if the attachment being uploaded satisfies Omnichannel's requirement on file extensions and file size.
18
17
  ******/
18
+
19
19
  const MBtoBRatio = 1000000;
20
+
20
21
  /*
21
22
  * If an attachment is invalid, delete this attachment from the attachments list
22
23
  * If the result attachment list is empty, return a dummy action
23
24
  */
24
-
25
- const validateAttachment = (action, allowedFileExtensions, maxUploadFileSize, localizedTexts) => {
25
+ const validateAttachment = (action, allowedFileExtensions, maxFileSizeSupportedByDynamics, localizedTexts) => {
26
26
  var _action$payload, _action$payload$activ, _action$payload2, _action$payload2$acti, _action$payload2$acti2, _action$payload3, _action$payload3$acti, _action$payload3$acti2;
27
-
28
27
  const attachments = action === null || action === void 0 ? void 0 : (_action$payload = action.payload) === null || _action$payload === void 0 ? void 0 : (_action$payload$activ = _action$payload.activity) === null || _action$payload$activ === void 0 ? void 0 : _action$payload$activ.attachments;
29
28
  const attachmentSizes = action === null || action === void 0 ? void 0 : (_action$payload2 = action.payload) === null || _action$payload2 === void 0 ? void 0 : (_action$payload2$acti = _action$payload2.activity) === null || _action$payload2$acti === void 0 ? void 0 : (_action$payload2$acti2 = _action$payload2$acti.channelData) === null || _action$payload2$acti2 === void 0 ? void 0 : _action$payload2$acti2.attachmentSizes;
30
-
31
29
  if (attachments) {
32
30
  for (let i = 0; i < attachments.length; i++) {
31
+ const maxUploadFileSize = getMaxUploadFileSize(maxFileSizeSupportedByDynamics, attachments[i].contentType);
33
32
  const fileExtensionValid = validateFileExtension(attachments[i], allowedFileExtensions);
34
33
  const fileSizeValid = validateFileSize(attachmentSizes[i], maxUploadFileSize);
35
34
  const fileIsEmpty = parseInt(attachmentSizes[i]) == 0;
36
-
37
35
  if (!fileExtensionValid || !fileSizeValid || fileIsEmpty) {
38
- _NotificationHandler.NotificationHandler.notifyError(_NotificationScenarios.NotificationScenarios.AttachmentError, buildErrorMessage(attachments[i].name, fileExtensionValid, fileSizeValid, fileIsEmpty, maxUploadFileSize, localizedTexts));
39
-
36
+ _NotificationHandler.NotificationHandler.notifyError(_NotificationScenarios.NotificationScenarios.AttachmentError, buildErrorMessage(attachments[i].name, fileExtensionValid, fileSizeValid, fileIsEmpty, maxUploadFileSize.toString(), maxFileSizeSupportedByDynamics, localizedTexts));
40
37
  attachments.splice(i, 1);
41
38
  attachmentSizes.splice(i, 1);
42
39
  i--;
43
40
  }
44
41
  }
45
42
  }
46
-
47
43
  if ((action === null || action === void 0 ? void 0 : (_action$payload3 = action.payload) === null || _action$payload3 === void 0 ? void 0 : (_action$payload3$acti = _action$payload3.activity) === null || _action$payload3$acti === void 0 ? void 0 : (_action$payload3$acti2 = _action$payload3$acti.attachments) === null || _action$payload3$acti2 === void 0 ? void 0 : _action$payload3$acti2.length) > 0) {
48
44
  return action;
49
45
  } else {
@@ -52,110 +48,150 @@ const validateAttachment = (action, allowedFileExtensions, maxUploadFileSize, lo
52
48
  payload: null
53
49
  };
54
50
  }
55
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
56
-
51
+ };
57
52
 
53
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
58
54
  const validateFileExtension = (attachment, allowedFileExtensions) => {
59
55
  if (!allowedFileExtensions) {
60
56
  return true;
61
57
  }
62
-
63
58
  const fileName = attachment.name.toLowerCase();
64
59
  const index = fileName.lastIndexOf(".");
65
-
66
60
  if (!index) {
67
61
  return false;
68
62
  }
69
-
70
63
  const fileExtension = fileName.substring(index);
71
64
  const allExtensions = allowedFileExtensions === null || allowedFileExtensions === void 0 ? void 0 : allowedFileExtensions.toLowerCase().split(",");
72
65
  return allExtensions.indexOf(fileExtension) > -1;
73
66
  };
74
-
75
67
  const validateFileSize = (attachmentSize, maxUploadFileSize) => {
76
- return (maxUploadFileSize && parseInt(maxUploadFileSize) * MBtoBRatio) > parseInt(attachmentSize);
68
+ return maxUploadFileSize * MBtoBRatio > parseInt(attachmentSize);
77
69
  };
78
-
79
- const buildErrorMessage = (fileName, supportedFileExtension, supportedFileSize, fileIsEmpty, maxUploadFileSize, localizedTexts) => {
70
+ const getMaxUploadFileSize = (maxFileSizeSupportedByDynamicsStr, contentType) => {
71
+ const maxFileSizeSupportedByDynamics = maxFileSizeSupportedByDynamicsStr && parseInt(maxFileSizeSupportedByDynamicsStr) ? parseInt(maxFileSizeSupportedByDynamicsStr) : _Constants.AMSConstants.maxSupportedFileSize;
72
+ const amsAttachmentSizeLimit = isImage(contentType) ? _Constants.AMSConstants.maxSupportedImageSize : _Constants.AMSConstants.maxSupportedFileSize;
73
+ // Takes the smallest max file size configure betteween AMS and Dynamics Config
74
+ return maxFileSizeSupportedByDynamics < amsAttachmentSizeLimit ? maxFileSizeSupportedByDynamics : amsAttachmentSizeLimit;
75
+ };
76
+ const isImage = contentType => {
77
+ return _Constants.AMSConstants.supportedImagesMimeTypes.includes(contentType);
78
+ };
79
+ const buildErrorMessage = (fileName, supportedFileExtension, supportedFileSize, fileIsEmpty, maxUploadFileSize, maxFileSizeSupportedByDynamics, localizedTexts) => {
80
80
  let errorMessage = "";
81
-
82
81
  if (!fileName || !maxUploadFileSize) {
82
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
83
+ Event: _TelemetryConstants.TelemetryEvent.AttachmentUploadValidatorMiddlewareFailed,
84
+ Description: "Attachment validation failed",
85
+ ExceptionDetails: {
86
+ ErrorDetails: "File provided is null"
87
+ }
88
+ });
83
89
  return localizedTexts.MIDDLEWARE_BANNER_FILE_NULL_ERROR ?? "";
84
90
  }
85
-
86
91
  if (!supportedFileExtension && !supportedFileSize) {
87
- errorMessage = getFileSizeAndFileExtensionErrorMessage(fileName, maxUploadFileSize, localizedTexts);
92
+ errorMessage = getFileSizeAndFileExtensionErrorMessage(fileName, maxUploadFileSize, maxFileSizeSupportedByDynamics, localizedTexts);
88
93
  } else if (!supportedFileSize) {
89
- errorMessage = getFileSizeErrorMessage(maxUploadFileSize, localizedTexts);
94
+ errorMessage = getFileSizeErrorMessage(maxUploadFileSize, maxFileSizeSupportedByDynamics, localizedTexts);
90
95
  } else if (!supportedFileExtension) {
91
96
  errorMessage = getFileExtensionErrorMessage(fileName, localizedTexts);
92
97
  } else if (fileIsEmpty) {
98
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
99
+ Event: _TelemetryConstants.TelemetryEvent.AttachmentUploadValidatorMiddlewareFailed,
100
+ Description: "Attachment validation failed",
101
+ ExceptionDetails: {
102
+ ErrorDetails: "File provided is empty"
103
+ }
104
+ });
93
105
  errorMessage = localizedTexts.MIDDLEWARE_BANNER_FILE_IS_EMPTY_ERROR ?? "";
94
106
  } else {
107
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
108
+ Event: _TelemetryConstants.TelemetryEvent.AttachmentUploadValidatorMiddlewareFailed,
109
+ Description: "Attachment validation failed",
110
+ ExceptionDetails: {
111
+ ErrorDetails: `Unexpected error: supportedFileExtension=${supportedFileExtension} supportedFileSize=${supportedFileSize} fileIsEmpty=${!fileIsEmpty}`
112
+ }
113
+ });
95
114
  errorMessage = localizedTexts.MIDDLEWARE_BANNER_ERROR_MESSAGE ?? "";
96
115
  }
97
-
98
116
  return errorMessage;
99
117
  };
100
-
101
- const getFileSizeAndFileExtensionErrorMessage = (fileName, maxUploadFileSize, localizedTexts) => {
118
+ const getFileSizeAndFileExtensionErrorMessage = (fileName, maxUploadFileSize, maxFileSizeSupportedByDynamics, localizedTexts) => {
102
119
  const index = fileName.lastIndexOf(".");
103
- let errorMessage;
104
-
120
+ let errorMessage, exceptionDetails;
105
121
  if (index < 0) {
106
122
  errorMessage = localizedTexts.MIDDLEWARE_BANNER_FILE_SIZE_WITHOUT_EXTENSION_ERROR;
123
+ exceptionDetails = `File exceeded the allowed limit of ${maxUploadFileSize} MB and File provided without file extension`;
107
124
  } else {
108
125
  var _errorMessage;
109
-
110
126
  const fileExtension = fileName.substring(index);
111
127
  errorMessage = localizedTexts.MIDDLEWARE_BANNER_FILE_SIZE_EXTENSION_ERROR;
112
-
128
+ exceptionDetails = `File exceeds the allowed limit of ${maxUploadFileSize} MB and ${fileExtension} files are not supported`;
113
129
  if ((_errorMessage = errorMessage) !== null && _errorMessage !== void 0 && _errorMessage.includes("{1}")) {
114
130
  errorMessage = errorMessage.replace("{1}", fileExtension);
115
131
  }
116
132
  }
117
-
133
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
134
+ Event: _TelemetryConstants.TelemetryEvent.AttachmentUploadValidatorMiddlewareFailed,
135
+ Description: "Attachment validation failed",
136
+ ExceptionDetails: {
137
+ ErrorDetails: `${exceptionDetails} Dynamics file size limit=${maxFileSizeSupportedByDynamics} AMS image size limit=${_Constants.AMSConstants.maxSupportedImageSize} AMS file size limit=${_Constants.AMSConstants.maxSupportedFileSize}`
138
+ }
139
+ });
118
140
  return errorMessage ? errorMessage.includes("{0}") ? errorMessage.replace("{0}", maxUploadFileSize) : errorMessage : "";
119
141
  };
120
-
121
142
  const getFileExtensionErrorMessage = (fileName, localizedTexts) => {
122
143
  const index = fileName.lastIndexOf(".");
123
-
124
144
  if (index < 0) {
145
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
146
+ Event: _TelemetryConstants.TelemetryEvent.AttachmentUploadValidatorMiddlewareFailed,
147
+ Description: "Attachment validation failed",
148
+ ExceptionDetails: {
149
+ ErrorDetails: "File provided without file extension"
150
+ }
151
+ });
125
152
  return localizedTexts.MIDDLEWARE_BANNER_FILE_WITHOUT_EXTENSION ?? "";
126
153
  } else {
127
154
  const fileExtension = fileName.substring(index);
155
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
156
+ Event: _TelemetryConstants.TelemetryEvent.AttachmentUploadValidatorMiddlewareFailed,
157
+ Description: "Attachment validation failed",
158
+ ExceptionDetails: {
159
+ ErrorDetails: `${fileExtension} files extension is not supported.`
160
+ }
161
+ });
128
162
  const errorMessage = localizedTexts.MIDDLEWARE_BANNER_FILE_EXTENSION_ERROR;
129
163
  return errorMessage ? errorMessage.includes("{0}") ? errorMessage.replace("{0}", fileExtension) : errorMessage : "";
130
164
  }
131
165
  };
132
-
133
- const getFileSizeErrorMessage = (maxUploadFileSize, localizedTexts) => {
166
+ const getFileSizeErrorMessage = (maxUploadFileSize, maxFileSizeSupportedByDynamics, localizedTexts) => {
167
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
168
+ Event: _TelemetryConstants.TelemetryEvent.AttachmentUploadValidatorMiddlewareFailed,
169
+ Description: "Attachment validation failed",
170
+ ExceptionDetails: {
171
+ ErrorDetails: `File exceeds the allowed limit of ${maxUploadFileSize}MB. Dynamics file size limit=${maxFileSizeSupportedByDynamics} AMS image size limit=${_Constants.AMSConstants.maxSupportedImageSize} AMS file size limit=${_Constants.AMSConstants.maxSupportedFileSize}`
172
+ }
173
+ });
134
174
  const errorMessage = localizedTexts.MIDDLEWARE_BANNER_FILE_SIZE_ERROR;
135
175
  return errorMessage ? errorMessage.includes("{0}") ? errorMessage.replace("{0}", maxUploadFileSize) : errorMessage : "";
136
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
137
-
176
+ };
138
177
 
139
- const createAttachmentUploadValidatorMiddleware = (allowedFileExtensions, maxUploadFileSize, localizedTexts) => _ref => {
178
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
179
+ const createAttachmentUploadValidatorMiddleware = (allowedFileExtensions, maxFileSizeSupportedByDynamics, localizedTexts) => _ref => {
140
180
  let {
141
181
  dispatch
142
182
  } = _ref;
143
183
  return next => action => {
144
184
  if (action.type === _WebChatActionType.WebChatActionType.DIRECT_LINE_POST_ACTIVITY) {
145
185
  var _payload$activity, _payload$activity2, _payload$activity2$ch, _payload$activity3, _payload$activity3$at, _payload$activity4, _payload$activity4$ch, _payload$activity4$ch2;
146
-
147
186
  const {
148
187
  payload
149
188
  } = action;
150
-
151
189
  if (payload !== null && payload !== void 0 && (_payload$activity = payload.activity) !== null && _payload$activity !== void 0 && _payload$activity.attachments && payload !== null && payload !== void 0 && (_payload$activity2 = payload.activity) !== null && _payload$activity2 !== void 0 && (_payload$activity2$ch = _payload$activity2.channelData) !== null && _payload$activity2$ch !== void 0 && _payload$activity2$ch.attachmentSizes && (payload === null || payload === void 0 ? void 0 : (_payload$activity3 = payload.activity) === null || _payload$activity3 === void 0 ? void 0 : (_payload$activity3$at = _payload$activity3.attachments) === null || _payload$activity3$at === void 0 ? void 0 : _payload$activity3$at.length) === (payload === null || payload === void 0 ? void 0 : (_payload$activity4 = payload.activity) === null || _payload$activity4 === void 0 ? void 0 : (_payload$activity4$ch = _payload$activity4.channelData) === null || _payload$activity4$ch === void 0 ? void 0 : (_payload$activity4$ch2 = _payload$activity4$ch.attachmentSizes) === null || _payload$activity4$ch2 === void 0 ? void 0 : _payload$activity4$ch2.length)) {
152
- return next(validateAttachment(action, allowedFileExtensions, maxUploadFileSize, localizedTexts));
190
+ return next(validateAttachment(action, allowedFileExtensions, maxFileSizeSupportedByDynamics, localizedTexts));
153
191
  }
154
192
  }
155
-
156
193
  return next(action);
157
194
  };
158
195
  };
159
-
160
196
  var _default = createAttachmentUploadValidatorMiddleware;
161
197
  exports.default = _default;