@microsoft/omnichannel-chat-widget 0.1.0-main.acb91cf → 0.1.0-main.ada8ec0

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 (289) hide show
  1. package/README.md +7 -34
  2. package/lib/cjs/assets/Icons.js +4 -2
  3. package/lib/cjs/common/Constants.js +24 -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 +29 -23
  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 +18 -105
  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 +9 -33
  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 +10 -34
  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 +18 -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/DefaultActivitySubscriber.js +3 -6
  31. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +7 -12
  32. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +14 -20
  33. package/lib/cjs/components/livechatwidget/common/Deferred.js +6 -11
  34. package/lib/cjs/components/livechatwidget/common/authHelper.js +4 -19
  35. package/lib/cjs/components/livechatwidget/common/createAdapter.js +2 -13
  36. package/lib/cjs/components/livechatwidget/common/createFooter.js +0 -10
  37. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +2 -14
  38. package/lib/cjs/components/livechatwidget/common/createMarkdown.js +16 -24
  39. package/lib/cjs/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +14 -0
  40. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +119 -48
  41. package/lib/cjs/components/livechatwidget/common/disposeTelemetryLoggers.js +0 -3
  42. package/lib/cjs/components/livechatwidget/common/endChat.js +71 -50
  43. package/lib/cjs/components/livechatwidget/common/getGeneralStylesForButton.js +0 -6
  44. package/lib/cjs/components/livechatwidget/common/initCallingSdk.js +7 -16
  45. package/lib/cjs/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -8
  46. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +40 -66
  47. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +79 -152
  48. package/lib/cjs/components/livechatwidget/common/registerTelemetryLoggers.js +4 -17
  49. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +2 -11
  50. package/lib/cjs/components/livechatwidget/common/shareObservable.js +4 -8
  51. package/lib/cjs/components/livechatwidget/common/startChat.js +168 -128
  52. package/lib/cjs/components/livechatwidget/common/startProactiveChat.js +0 -8
  53. package/lib/cjs/components/livechatwidget/common/updateSessionDataForTelemetry.js +2 -11
  54. package/lib/cjs/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  55. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +227 -252
  56. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +26 -19
  57. package/lib/cjs/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +57 -0
  58. package/lib/cjs/components/ooohpanestateful/OOOHPaneStateful.js +4 -17
  59. package/lib/cjs/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -17
  60. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +32 -23
  61. package/lib/cjs/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  62. package/lib/cjs/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +13 -0
  63. package/lib/cjs/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  64. package/lib/cjs/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  65. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +10 -38
  66. package/lib/cjs/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +1 -1
  67. package/lib/cjs/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +2 -32
  68. package/lib/cjs/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +6 -24
  69. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +21 -37
  70. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +0 -7
  71. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -6
  72. package/lib/cjs/components/webchatcontainerstateful/common/mockadapter.js +12 -27
  73. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +5 -18
  74. package/lib/cjs/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -24
  75. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +5 -15
  76. package/lib/cjs/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -8
  77. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -5
  78. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -5
  79. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  80. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  81. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  82. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  83. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  84. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  85. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  86. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  87. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +0 -7
  88. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -5
  89. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +17 -41
  90. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +9 -22
  91. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +25 -61
  92. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +7 -15
  93. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +2 -13
  94. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +0 -16
  95. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
  96. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +10 -0
  97. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -3
  98. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -3
  99. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +10 -0
  100. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -9
  101. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +2 -30
  102. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +7 -18
  103. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +8 -42
  104. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +4 -22
  105. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +13 -30
  106. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +3 -9
  107. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -34
  108. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +1 -10
  109. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +1 -12
  110. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -19
  111. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +1 -9
  112. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -9
  113. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +13 -34
  114. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +1 -10
  115. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +7 -11
  116. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +5 -14
  117. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -21
  118. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -12
  119. package/lib/cjs/contexts/ChatAdapterStore.js +0 -2
  120. package/lib/cjs/contexts/ChatContextStore.js +0 -2
  121. package/lib/cjs/contexts/ChatSDKStore.js +0 -2
  122. package/lib/cjs/contexts/common/ConversationState.js +0 -1
  123. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +30 -29
  124. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +12 -11
  125. package/lib/cjs/contexts/createReducer.js +154 -108
  126. package/lib/cjs/controller/componentController.js +2 -31
  127. package/lib/cjs/hooks/useChatAdapterStore.js +0 -6
  128. package/lib/cjs/hooks/useChatContextStore.js +0 -6
  129. package/lib/cjs/hooks/useChatSDKStore.js +0 -6
  130. package/lib/cjs/hooks/useDebounce.js +28 -0
  131. package/lib/cjs/hooks/useWindowDimensions.js +30 -0
  132. package/lib/cjs/index.js +0 -5
  133. package/lib/cjs/plugins/newMessageEventHandler.js +29 -36
  134. package/lib/esm/assets/Icons.js +2 -1
  135. package/lib/esm/common/Constants.js +21 -158
  136. package/lib/esm/common/KeyCodes.js +3 -3
  137. package/lib/esm/common/contextDataStore/DataStoreManager.js +3 -3
  138. package/lib/esm/common/storage/default/defaultCacheManager.js +18 -0
  139. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +104 -0
  140. package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +70 -0
  141. package/lib/esm/common/telemetry/TelemetryConstants.js +33 -20
  142. package/lib/esm/common/telemetry/TelemetryHelper.js +21 -47
  143. package/lib/esm/common/telemetry/TelemetryManager.js +3 -19
  144. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +28 -24
  145. package/lib/esm/common/telemetry/loggers/consoleLogger.js +0 -5
  146. package/lib/esm/common/utils.js +18 -53
  147. package/lib/esm/components/callingcontainerstateful/CallingContainerStateful.js +8 -17
  148. package/lib/esm/components/chatbuttonstateful/ChatButtonStateful.js +2 -7
  149. package/lib/esm/components/chatbuttonstateful/common/styleProps/defaultOutOfOfficeChatButtonStyleProps.js +3 -0
  150. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +11 -14
  151. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +9 -16
  152. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.spec.js +6 -6
  153. package/lib/esm/components/footerstateful/FooterStateful.js +12 -15
  154. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.js +7 -35
  155. package/lib/esm/components/footerstateful/downloadtranscriptstateful/DownloadTranscriptStateful.spec.js +6 -6
  156. package/lib/esm/components/headerstateful/HeaderStateful.js +18 -16
  157. package/lib/esm/components/livechatwidget/LiveChatWidget.js +2 -2
  158. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +5 -7
  159. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +3 -4
  160. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +7 -9
  161. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +14 -16
  162. package/lib/esm/components/livechatwidget/common/Deferred.js +6 -9
  163. package/lib/esm/components/livechatwidget/common/authHelper.js +4 -12
  164. package/lib/esm/components/livechatwidget/common/createAdapter.js +4 -6
  165. package/lib/esm/components/livechatwidget/common/createFooter.js +0 -1
  166. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +2 -5
  167. package/lib/esm/components/livechatwidget/common/createMarkdown.js +18 -18
  168. package/lib/esm/components/livechatwidget/common/defaultProps/defaultScrollBarProps.js +7 -0
  169. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +120 -34
  170. package/lib/esm/components/livechatwidget/common/endChat.js +73 -35
  171. package/lib/esm/components/livechatwidget/common/getGeneralStylesForButton.js +0 -2
  172. package/lib/esm/components/livechatwidget/common/initCallingSdk.js +9 -11
  173. package/lib/esm/components/livechatwidget/common/initConfirmationPropsComposer.js +4 -5
  174. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +42 -31
  175. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +77 -130
  176. package/lib/esm/components/livechatwidget/common/registerTelemetryLoggers.js +4 -9
  177. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +4 -3
  178. package/lib/esm/components/livechatwidget/common/shareObservable.js +4 -7
  179. package/lib/esm/components/livechatwidget/common/startChat.js +167 -99
  180. package/lib/esm/components/livechatwidget/common/updateSessionDataForTelemetry.js +4 -2
  181. package/lib/esm/components/livechatwidget/interfaces/IScrollBarProps.js +1 -0
  182. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +229 -186
  183. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +26 -7
  184. package/lib/esm/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +50 -0
  185. package/lib/esm/components/ooohpanestateful/OOOHPaneStateful.js +4 -5
  186. package/lib/esm/components/postchatloadingpanestateful/PostChatLoadingPaneStateful.js +4 -5
  187. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +32 -11
  188. package/lib/esm/components/postchatsurveypanestateful/common/defaultStyleProps/defaultgeneralPostChatSurveyPaneStyleProps.js +1 -1
  189. package/lib/esm/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.js +6 -0
  190. package/lib/esm/components/postchatsurveypanestateful/enums/PostChatSurveyMode.js +0 -1
  191. package/lib/esm/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.js +1 -0
  192. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +12 -22
  193. package/lib/esm/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +1 -1
  194. package/lib/esm/components/proactivechatpanestateful/ProactiveChatPaneStateful.js +4 -8
  195. package/lib/esm/components/reconnectchatpanestateful/ReconnectChatPaneStateful.js +6 -6
  196. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +19 -11
  197. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatStatefulProps.js +2 -2
  198. package/lib/esm/components/webchatcontainerstateful/common/mockadapter.js +12 -19
  199. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +5 -14
  200. package/lib/esm/components/webchatcontainerstateful/common/utils/BrowserInfo.js +2 -16
  201. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +5 -5
  202. package/lib/esm/components/webchatcontainerstateful/common/utils/isMaskingFromCustomer.js +5 -6
  203. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -3
  204. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -3
  205. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/BrowserVendor.js +0 -1
  206. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineActivityType.js +0 -1
  207. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/DirectLineSenderRole.js +0 -1
  208. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/MessageType.js +0 -1
  209. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationLevel.js +0 -1
  210. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/NotificationScenarios.js +0 -1
  211. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/SendStatus.js +0 -1
  212. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/enums/WebChatActionType.js +0 -1
  213. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsEgressMiddleware.js +2 -5
  214. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/adaptermiddlewares/formatTagsIngressMiddleware.js +0 -4
  215. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityMiddleware.js +17 -26
  216. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +11 -14
  217. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +25 -39
  218. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware.js +9 -8
  219. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.js +2 -9
  220. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware.spec.js +0 -14
  221. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
  222. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +3 -0
  223. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampFailedStyles.js +2 -1
  224. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultTimestampRetryStyles.js +2 -1
  225. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +3 -0
  226. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware.js +3 -7
  227. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware.js +4 -28
  228. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +8 -9
  229. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +9 -28
  230. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +5 -14
  231. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +15 -19
  232. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentProcessingMiddleware.js +5 -8
  233. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/attachmentUploadValidatorMiddleware.js +6 -29
  234. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/channelDataMiddleware.js +3 -7
  235. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/conversationEndMiddleware.js +3 -8
  236. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/dataMaskingMiddleware.js +17 -14
  237. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/gifUploadMiddleware.js +3 -7
  238. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlPlayerMiddleware.js +3 -7
  239. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/htmlTextMiddleware.js +15 -27
  240. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/maxMessageSizeValidator.js +3 -5
  241. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/preProcessingMiddleware.js +9 -9
  242. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware.js +7 -9
  243. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/notification/NotificationHandler.js +1 -13
  244. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger.js +0 -5
  245. package/lib/esm/contexts/ChatAdapterStore.js +2 -1
  246. package/lib/esm/contexts/ChatContextStore.js +2 -1
  247. package/lib/esm/contexts/ChatSDKStore.js +2 -1
  248. package/lib/esm/contexts/common/ConversationState.js +0 -1
  249. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +30 -29
  250. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +12 -7
  251. package/lib/esm/contexts/createReducer.js +154 -105
  252. package/lib/esm/controller/componentController.js +3 -2
  253. package/lib/esm/hooks/useChatAdapterStore.js +0 -4
  254. package/lib/esm/hooks/useChatContextStore.js +0 -4
  255. package/lib/esm/hooks/useChatSDKStore.js +0 -4
  256. package/lib/esm/hooks/useDebounce.js +22 -0
  257. package/lib/esm/hooks/useWindowDimensions.js +23 -0
  258. package/lib/esm/plugins/newMessageEventHandler.js +29 -26
  259. package/lib/types/assets/Icons.d.ts +1 -0
  260. package/lib/types/common/Constants.d.ts +14 -0
  261. package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
  262. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
  263. package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
  264. package/lib/types/common/telemetry/TelemetryConstants.d.ts +18 -4
  265. package/lib/types/common/telemetry/definitions/Contracts.d.ts +4 -4
  266. package/lib/types/common/telemetry/definitions/Payload.d.ts +1 -0
  267. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +4 -0
  268. package/lib/types/components/livechatwidget/common/defaultProps/defaultScrollBarProps.d.ts +2 -0
  269. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +5 -7
  270. package/lib/types/components/livechatwidget/common/startChat.d.ts +5 -4
  271. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +3 -1
  272. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetProps.d.ts +4 -2
  273. package/lib/types/components/livechatwidget/interfaces/IScrollBarProps.d.ts +22 -0
  274. package/lib/types/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.d.ts +2 -0
  275. package/lib/types/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.d.ts +2 -2
  276. package/lib/types/components/postchatsurveypanestateful/enums/CustomerVoiceEvents.d.ts +5 -0
  277. package/lib/types/components/postchatsurveypanestateful/interfaces/IPostChatSurveyPaneStatefulProps.d.ts +4 -0
  278. package/lib/types/components/reconnectchatpanestateful/interfaces/IReconnectChatPaneStatefulProps.d.ts +0 -1
  279. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +4 -1
  280. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
  281. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.d.ts +3 -0
  282. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.d.ts +3 -0
  283. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.d.ts +1 -1
  284. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +3 -2
  285. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +30 -28
  286. package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
  287. package/lib/types/hooks/useDebounce.d.ts +3 -0
  288. package/lib/types/hooks/useWindowDimensions.d.ts +4 -0
  289. package/package.json +3 -3
@@ -7,16 +7,34 @@ import { WebChatStoreLoader } from "../../webchatcontainerstateful/webchatcontro
7
7
  import { defaultWebChatContainerStatefulProps } from "../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps";
8
8
  import { PostChatSurveyMode } from "../../postchatsurveypanestateful/enums/PostChatSurveyMode";
9
9
  import { Constants } from "../../../common/Constants";
10
- import { addDelayInMs, getWidgetEndChatEventName } from "../../../common/utils"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
+ import { addDelayInMs, getWidgetEndChatEventName } from "../../../common/utils";
11
+ import { getAuthClientFunction, handleAuthentication } from "./authHelper";
11
12
 
13
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
14
  const prepareEndChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state) => {
13
- var _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4, _conversationDetails;
14
-
15
- 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;
16
- 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; // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
+ var _props$chatConfig, _props$chatConfig$Liv, _state$domainStates$l, _state$domainStates$l2, _props$chatConfig2, _props$chatConfig2$Li, _state$domainStates$l3, _state$domainStates$l4, _conversationDetails;
16
+ const isPostChatEnabled = ((_props$chatConfig = props.chatConfig) === null || _props$chatConfig === void 0 ? void 0 : (_props$chatConfig$Liv = _props$chatConfig.LiveWSAndLiveChatEngJoin) === null || _props$chatConfig$Liv === void 0 ? void 0 : _props$chatConfig$Liv.msdyn_postconversationsurveyenable) ?? ((_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);
17
+ const postChatSurveyMode = ((_props$chatConfig2 = props.chatConfig) === null || _props$chatConfig2 === void 0 ? void 0 : (_props$chatConfig2$Li = _props$chatConfig2.LiveWSAndLiveChatEngJoin) === null || _props$chatConfig2$Li === void 0 ? void 0 : _props$chatConfig2$Li.msdyn_postconversationsurveymode) ?? ((_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);
18
+
19
+ //Unable to end chat if token has expired
20
+ if (props.getAuthToken) {
21
+ const authClientFunction = getAuthClientFunction(props.chatConfig);
22
+ if (props.getAuthToken && authClientFunction) {
23
+ // set auth token to chat sdk before end chat
24
+ const authSuccess = await handleAuthentication(chatSDK, props.chatConfig, props.getAuthToken);
25
+ if (!authSuccess) {
26
+ TelemetryHelper.logActionEvent(LogLevel.ERROR, {
27
+ Event: TelemetryEvent.GetAuthTokenFailed,
28
+ ExceptionDetails: {
29
+ exception: "Unable to get auth token during end chat"
30
+ }
31
+ });
32
+ }
33
+ }
34
+ }
17
35
 
36
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
37
  let conversationDetails = undefined;
19
-
20
38
  try {
21
39
  conversationDetails = await chatSDK.getConversationDetails();
22
40
  } catch (erorr) {
@@ -27,36 +45,55 @@ const prepareEndChat = async (props, chatSDK, setAdapter, setWebChatStyles, disp
27
45
  }
28
46
  });
29
47
  }
30
-
31
48
  if (isPostChatEnabled === "true" && ((_conversationDetails = conversationDetails) === null || _conversationDetails === void 0 ? void 0 : _conversationDetails.canRenderPostChat) === Constants.truePascal) {
32
49
  const skipEndChatSDK = false;
33
50
  const skipCloseChat = true;
51
+ const chatSession = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
34
52
  await endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat, false);
35
-
53
+ if (chatSession) {
54
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
+ chatSDK.chatToken = chatSession.chatToken ?? {};
56
+ chatSDK.requestId = chatSession.requestId;
57
+ }
36
58
  if (postChatSurveyMode === PostChatSurveyMode.Embed) {
37
- dispatch({
38
- type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
39
- payload: ConversationState.PostchatLoading
40
- });
41
- await addDelayInMs(Constants.PostChatLoadingDurationInMs);
42
- const loadPostChatEvent = {
43
- eventName: BroadcastEvent.LoadPostChatSurvey
44
- };
45
- BroadcastService.postMessage(loadPostChatEvent);
59
+ // Only start embedded Postchat workflow if postchat context is set successfully else close chat
60
+ if (state.domainStates.postChatContext) {
61
+ dispatch({
62
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
63
+ payload: ConversationState.PostchatLoading
64
+ });
65
+ await addDelayInMs(Constants.PostChatLoadingDurationInMs);
66
+ const loadPostChatEvent = {
67
+ eventName: BroadcastEvent.LoadPostChatSurvey
68
+ };
69
+ BroadcastService.postMessage(loadPostChatEvent);
70
+ } else {
71
+ await endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, true, false, true);
72
+ }
46
73
  } else if (postChatSurveyMode === PostChatSurveyMode.Link) {
74
+ var _props$webChatContain, _props$webChatContain2;
47
75
  dispatch({
48
76
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
49
77
  payload: ConversationState.InActive
50
78
  });
51
- }
52
79
 
80
+ // Disable SendBox
81
+ if ((props === null || props === void 0 ? void 0 : (_props$webChatContain = props.webChatContainerProps) === null || _props$webChatContain === void 0 ? void 0 : (_props$webChatContain2 = _props$webChatContain.renderingMiddlewareProps) === null || _props$webChatContain2 === void 0 ? void 0 : _props$webChatContain2.hideSendboxOnConversationEnd) !== false) {
82
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
83
+ setWebChatStyles(styles => {
84
+ return {
85
+ ...styles,
86
+ hideSendBox: true
87
+ };
88
+ });
89
+ }
90
+ }
53
91
  return;
54
92
  }
55
-
56
93
  await endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, true);
57
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
58
-
94
+ };
59
95
 
96
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
97
  const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat, postMessageToOtherTab) => {
61
98
  if (!skipEndChatSDK) {
62
99
  try {
@@ -73,9 +110,9 @@ const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, a
73
110
  });
74
111
  postMessageToOtherTab = false;
75
112
  }
76
- } // Need to clear these states immediately when chat ended from OC.
77
-
113
+ }
78
114
 
115
+ // Need to clear these states immediately when chat ended from OC.
79
116
  dispatch({
80
117
  type: LiveChatWidgetActionType.SET_CUSTOM_CONTEXT,
81
118
  payload: undefined
@@ -88,15 +125,18 @@ const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, a
88
125
  type: LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
89
126
  payload: undefined
90
127
  });
91
-
128
+ dispatch({
129
+ type: LiveChatWidgetActionType.SET_RECONNECT_ID,
130
+ payload: undefined
131
+ });
92
132
  if (!skipCloseChat) {
93
133
  try {
94
- var _props$webChatContain;
95
-
134
+ var _props$webChatContain3;
96
135
  adapter === null || adapter === void 0 ? void 0 : adapter.end();
97
136
  setAdapter(undefined);
98
- setWebChatStyles({ ...defaultWebChatContainerStatefulProps.webChatStyles,
99
- ...((_props$webChatContain = props.webChatContainerProps) === null || _props$webChatContain === void 0 ? void 0 : _props$webChatContain.webChatStyles)
137
+ setWebChatStyles({
138
+ ...defaultWebChatContainerStatefulProps.webChatStyles,
139
+ ...((_props$webChatContain3 = props.webChatContainerProps) === null || _props$webChatContain3 === void 0 ? void 0 : _props$webChatContain3.webChatStyles)
100
140
  });
101
141
  WebChatStoreLoader.store = null;
102
142
  dispatch({
@@ -115,10 +155,6 @@ const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, a
115
155
  type: LiveChatWidgetActionType.SET_AUDIO_NOTIFICATION,
116
156
  payload: null
117
157
  });
118
- dispatch({
119
- type: LiveChatWidgetActionType.SET_UNREAD_MESSAGE_COUNT,
120
- payload: 0
121
- });
122
158
  dispatch({
123
159
  type: LiveChatWidgetActionType.SET_PROACTIVE_CHAT_PARAMS,
124
160
  payload: {
@@ -127,10 +163,8 @@ const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, a
127
163
  proactiveChatInNewWindow: false
128
164
  }
129
165
  });
130
-
131
166
  if (postMessageToOtherTab) {
132
167
  var _chatSDK$omnichannelC, _chatSDK$omnichannelC2, _props$controlProps;
133
-
134
168
  const endChatEventName = getWidgetEndChatEventName(chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC === void 0 ? void 0 : _chatSDK$omnichannelC.orgId, chatSDK === null || chatSDK === void 0 ? void 0 : (_chatSDK$omnichannelC2 = chatSDK.omnichannelConfig) === null || _chatSDK$omnichannelC2 === void 0 ? void 0 : _chatSDK$omnichannelC2.widgetId, (props === null || props === void 0 ? void 0 : (_props$controlProps = props.controlProps) === null || _props$controlProps === void 0 ? void 0 : _props$controlProps.widgetInstanceId) ?? "");
135
169
  BroadcastService.postMessage({
136
170
  eventName: endChatEventName
@@ -143,8 +177,12 @@ const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, a
143
177
  exception: `Failed to endChat: ${error}`
144
178
  }
145
179
  });
180
+ } finally {
181
+ dispatch({
182
+ type: LiveChatWidgetActionType.SET_UNREAD_MESSAGE_COUNT,
183
+ payload: 0
184
+ });
146
185
  }
147
186
  }
148
187
  };
149
-
150
188
  export { prepareEndChat, endChat };
@@ -2,7 +2,6 @@ import { shouldShowChatButton, shouldShowProactiveChatPane } from "../../../cont
2
2
  import { defaultLiveChatWidgetGeneralStyles } from "./defaultStyles/defaultLiveChatWidgetGeneralStyles";
3
3
  export const getGeneralStylesForButton = state => {
4
4
  let generalStylesForButton = defaultLiveChatWidgetGeneralStyles;
5
-
6
5
  if (!shouldShowChatButton(state) && !shouldShowProactiveChatPane(state)) {
7
6
  generalStylesForButton = Object.assign({}, defaultLiveChatWidgetGeneralStyles, {
8
7
  boxShadow: "0px 0px 2px rgba(0, 0, 0, 0.16), 0px 4px 8px rgba(0, 0, 0, 0.12)",
@@ -12,6 +11,5 @@ export const getGeneralStylesForButton = state => {
12
11
  padding: "0.5"
13
12
  });
14
13
  }
15
-
16
14
  return generalStylesForButton;
17
15
  };
@@ -1,6 +1,7 @@
1
1
  import { LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
2
- import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
2
+ import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
3
3
 
4
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
5
  export const initCallingSdk = async (chatSDK, setVoiceVideoCallingSDK) => {
5
6
  try {
6
7
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -13,18 +14,15 @@ export const initCallingSdk = async (chatSDK, setVoiceVideoCallingSDK) => {
13
14
  });
14
15
  return true;
15
16
  }
16
-
17
17
  return false;
18
18
  } catch (error) {
19
- if (error !== "Voice and video call is not enabled") {
20
- TelemetryHelper.logCallingEvent(LogLevel.ERROR, {
21
- Event: TelemetryEvent.CallingSDKLoadFailed,
22
- ExceptionDetails: {
23
- exception: error
24
- }
25
- });
26
- }
27
-
19
+ TelemetryHelper.logCallingEvent(LogLevel.ERROR, {
20
+ Event: TelemetryEvent.CallingSDKLoadFailed,
21
+ ExceptionDetails: {
22
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
+ exception: error.message
24
+ }
25
+ });
28
26
  return false;
29
27
  }
30
28
  };
@@ -1,14 +1,13 @@
1
1
  import { defaultConfirmationPaneLocalizedTexts } from "../../confirmationpanestateful/common/defaultProps/defaultConfirmationPaneLocalizedTexts";
2
2
  export const initConfirmationPropsComposer = props => {
3
3
  var _props$confirmationPa, _props$footerProps, _props$footerProps$co, _props$footerProps2, _props$footerProps2$c, _props$confirmationPa2;
4
-
5
- const confirmationPanelocalizedTexts = { ...defaultConfirmationPaneLocalizedTexts,
4
+ const confirmationPanelocalizedTexts = {
5
+ ...defaultConfirmationPaneLocalizedTexts,
6
6
  ...(props === null || props === void 0 ? void 0 : (_props$confirmationPa = props.confirmationPaneProps) === null || _props$confirmationPa === void 0 ? void 0 : _props$confirmationPa.confirmationPaneLocalizedTexts)
7
7
  };
8
8
  let confirmationPaneInputs;
9
9
  const emailTranscriptDisabled = ((_props$footerProps = props.footerProps) === null || _props$footerProps === void 0 ? void 0 : (_props$footerProps$co = _props$footerProps.controlProps) === null || _props$footerProps$co === void 0 ? void 0 : _props$footerProps$co.hideEmailTranscriptButton) ?? false;
10
10
  const downloadTranscriptDisabled = ((_props$footerProps2 = props.footerProps) === null || _props$footerProps2 === void 0 ? void 0 : (_props$footerProps2$c = _props$footerProps2.controlProps) === null || _props$footerProps2$c === void 0 ? void 0 : _props$footerProps2$c.hideDownloadTranscriptButton) ?? false;
11
-
12
11
  if (!emailTranscriptDisabled && !downloadTranscriptDisabled) {
13
12
  confirmationPaneInputs = {
14
13
  title: confirmationPanelocalizedTexts.CLOSE_CONFIRMATION_DIALOG_TITLE_FOR_EMAIL_AND_DOWNLOAD_TRANSCRIPT_ENABLED,
@@ -30,8 +29,8 @@ export const initConfirmationPropsComposer = props => {
30
29
  description: confirmationPanelocalizedTexts.CLOSE_CONFIRMATION_DIALOG_DESCRIPTION_DEFAULT
31
30
  };
32
31
  }
33
-
34
- const confirmationPaneProps = { ...props.confirmationPaneProps,
32
+ const confirmationPaneProps = {
33
+ ...props.confirmationPaneProps,
35
34
  controlProps: {
36
35
  titleText: confirmationPaneInputs.title,
37
36
  subtitleText: confirmationPaneInputs.description,
@@ -29,53 +29,63 @@ import preProcessingMiddleware from "../../webchatcontainerstateful/webchatcontr
29
29
  import sanitizationMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/storemiddlewares/sanitizationMiddleware";
30
30
  import { createCardActionMiddleware } from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/cardActionMiddleware";
31
31
  import createMessageTimeStampMiddleware from "../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/messageTimestampMiddleware";
32
- import { Constants } from "../../../common/Constants"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
+ import { Constants } from "../../../common/Constants";
33
33
 
34
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
34
35
  export const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatStyles) => {
35
- var _props$webChatContain, _props$webChatContain2, _props$webChatContain3, _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4, _state$domainStates$l8, _state$domainStates$l9, _props$webChatContain7, _props$webChatContain8, _state$domainStates$r, _state$domainStates$r2, _props$webChatContain9, _props$webChatContain10, _state$domainStates$r3, _state$domainStates$r4, _props$webChatContain11, _props$webChatContain12, _defaultWebChatContai, _props$webChatContain13, _props$webChatContain14, _props$webChatContain15, _props$webChatContain16, _state$domainStates$r5, _state$domainStates$r6, _props$webChatContain17, _props$webChatContain18, _defaultWebChatContai2, _props$webChatContain19, _props$webChatContain20, _defaultWebChatContai3, _props$webChatContain21, _props$webChatContain22;
36
-
37
- const localizedTexts = { ...defaultMiddlewareLocalizedTexts,
36
+ var _props$webChatContain, _props$webChatContain2, _props$webChatContain3, _props$chatConfig, _props$chatConfig$Liv, _state$domainStates$l, _state$domainStates$l2, _props$chatConfig2, _props$chatConfig2$Li, _state$domainStates$l3, _state$domainStates$l4, _state$domainStates$l8, _state$domainStates$l9, _props$webChatContain7, _props$webChatContain8, _state$domainStates$r, _state$domainStates$r2, _props$webChatContain9, _props$webChatContain10, _state$domainStates$r3, _state$domainStates$r4, _props$webChatContain11, _props$webChatContain12, _defaultWebChatContai, _props$webChatContain13, _props$webChatContain14, _props$webChatContain15, _props$webChatContain16, _state$domainStates$r5, _state$domainStates$r6, _props$webChatContain17, _props$webChatContain18, _defaultWebChatContai2, _props$webChatContain19, _props$webChatContain20, _defaultWebChatContai3, _props$webChatContain21, _props$webChatContain22;
37
+ const localizedTexts = {
38
+ ...defaultMiddlewareLocalizedTexts,
38
39
  ...((_props$webChatContain = props.webChatContainerProps) === null || _props$webChatContain === void 0 ? void 0 : _props$webChatContain.localizedTexts)
39
40
  };
40
- const disableNewLineMarkdownSupport = ((_props$webChatContain2 = props.webChatContainerProps) === null || _props$webChatContain2 === void 0 ? void 0 : _props$webChatContain2.disableNewLineMarkdownSupport) ?? defaultWebChatContainerStatefulProps.disableNewLineMarkdownSupport; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
41
-
41
+ const disableNewLineMarkdownSupport = ((_props$webChatContain2 = props.webChatContainerProps) === null || _props$webChatContain2 === void 0 ? void 0 : _props$webChatContain2.disableNewLineMarkdownSupport) ?? defaultWebChatContainerStatefulProps.disableNewLineMarkdownSupport;
42
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
42
43
  const markdown = createMarkdown(((_props$webChatContain3 = props.webChatContainerProps) === null || _props$webChatContain3 === void 0 ? void 0 : _props$webChatContain3.disableMarkdownMessageFormatting) ?? defaultWebChatContainerStatefulProps.disableMarkdownMessageFormatting, disableNewLineMarkdownSupport);
43
- 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;
44
- 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; // Initialize Web Chat's redux store
44
+ const isPostChatEnabled = ((_props$chatConfig = props.chatConfig) === null || _props$chatConfig === void 0 ? void 0 : (_props$chatConfig$Liv = _props$chatConfig.LiveWSAndLiveChatEngJoin) === null || _props$chatConfig$Liv === void 0 ? void 0 : _props$chatConfig$Liv.msdyn_postconversationsurveyenable) ?? ((_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);
45
+ const postChatSurveyMode = ((_props$chatConfig2 = props.chatConfig) === null || _props$chatConfig2 === void 0 ? void 0 : (_props$chatConfig2$Li = _props$chatConfig2.LiveWSAndLiveChatEngJoin) === null || _props$chatConfig2$Li === void 0 ? void 0 : _props$chatConfig2$Li.msdyn_postconversationsurveymode) ?? ((_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);
45
46
 
47
+ // Initialize Web Chat's redux store
46
48
  let webChatStore = WebChatStoreLoader.store;
47
-
48
49
  if (!webChatStore) {
49
50
  var _state$domainStates$l5, _state$domainStates$l6, _state$domainStates$l7, _props$webChatContain6;
50
-
51
51
  const conversationEndCallback = async () => {
52
52
  var _props$webChatContain4, _props$webChatContain5;
53
-
54
53
  TelemetryHelper.logActionEvent(LogLevel.INFO, {
55
54
  Event: TelemetryEvent.ConversationEndedThreadEventReceived,
56
55
  Description: "Conversation is ended by agent side or by timeout."
57
56
  });
58
-
59
57
  if ((props === null || props === void 0 ? void 0 : (_props$webChatContain4 = props.webChatContainerProps) === null || _props$webChatContain4 === void 0 ? void 0 : (_props$webChatContain5 = _props$webChatContain4.renderingMiddlewareProps) === null || _props$webChatContain5 === void 0 ? void 0 : _props$webChatContain5.hideSendboxOnConversationEnd) !== false) {
60
58
  setWebChatStyles(styles => {
61
- return { ...styles,
59
+ return {
60
+ ...styles,
62
61
  hideSendBox: true
63
62
  };
64
63
  });
65
64
  }
66
-
67
65
  if (isPostChatEnabled === "true") {
68
66
  if (postChatSurveyMode === PostChatSurveyMode.Embed) {
69
- WebChatStoreLoader.store = null;
70
- dispatch({
71
- type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
72
- payload: ConversationState.PostchatLoading
73
- });
74
- await addDelayInMs(Constants.PostChatLoadingDurationInMs);
75
- const loadPostChatEvent = {
76
- eventName: BroadcastEvent.LoadPostChatSurvey
77
- };
78
- BroadcastService.postMessage(loadPostChatEvent);
67
+ // Only start embedded Postchat workflow if postchat context is set successfully else close chat
68
+ if (state.domainStates.postChatContext) {
69
+ WebChatStoreLoader.store = null;
70
+ dispatch({
71
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
72
+ payload: ConversationState.PostchatLoading
73
+ });
74
+ await addDelayInMs(Constants.PostChatLoadingDurationInMs);
75
+ const loadPostChatEvent = {
76
+ eventName: BroadcastEvent.LoadPostChatSurvey
77
+ };
78
+ BroadcastService.postMessage(loadPostChatEvent);
79
+ } else {
80
+ dispatch({
81
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
82
+ payload: ConversationState.InActive
83
+ });
84
+ dispatch({
85
+ type: LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY_AGENT,
86
+ payload: true
87
+ });
88
+ }
79
89
  } else if (postChatSurveyMode === PostChatSurveyMode.Link) {
80
90
  dispatch({
81
91
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
@@ -92,7 +102,6 @@ export const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatS
92
102
  payload: true
93
103
  });
94
104
  }
95
-
96
105
  dispatch({
97
106
  type: LiveChatWidgetActionType.SET_CHAT_TOKEN,
98
107
  payload: undefined
@@ -102,15 +111,17 @@ export const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatS
102
111
  payload: undefined
103
112
  });
104
113
  };
105
-
106
- webChatStore = createStore({}, //initial state
107
- preProcessingMiddleware, attachmentProcessingMiddleware, createAttachmentUploadValidatorMiddleware((_state$domainStates$l5 = state.domainStates.liveChatConfig) === null || _state$domainStates$l5 === void 0 ? void 0 : _state$domainStates$l5.allowedFileExtensions, (_state$domainStates$l6 = state.domainStates.liveChatConfig) === null || _state$domainStates$l6 === void 0 ? void 0 : _state$domainStates$l6.maxUploadFileSize, localizedTexts), channelDataMiddleware, createConversationEndMiddleware(conversationEndCallback), createDataMaskingMiddleware((_state$domainStates$l7 = state.domainStates.liveChatConfig) === null || _state$domainStates$l7 === void 0 ? void 0 : _state$domainStates$l7.DataMaskingInfo), createMessageTimeStampMiddleware, gifUploadMiddleware, htmlPlayerMiddleware, htmlTextMiddleware, createMaxMessageSizeValidator(localizedTexts), sanitizationMiddleware, // eslint-disable-next-line @typescript-eslint/no-explicit-any
114
+ webChatStore = createStore({},
115
+ //initial state
116
+ preProcessingMiddleware, attachmentProcessingMiddleware, createAttachmentUploadValidatorMiddleware((_state$domainStates$l5 = state.domainStates.liveChatConfig) === null || _state$domainStates$l5 === void 0 ? void 0 : _state$domainStates$l5.allowedFileExtensions, (_state$domainStates$l6 = state.domainStates.liveChatConfig) === null || _state$domainStates$l6 === void 0 ? void 0 : _state$domainStates$l6.maxUploadFileSize, localizedTexts), channelDataMiddleware, createConversationEndMiddleware(conversationEndCallback), createDataMaskingMiddleware((_state$domainStates$l7 = state.domainStates.liveChatConfig) === null || _state$domainStates$l7 === void 0 ? void 0 : _state$domainStates$l7.DataMaskingInfo), createMessageTimeStampMiddleware, gifUploadMiddleware, htmlPlayerMiddleware, htmlTextMiddleware, createMaxMessageSizeValidator(localizedTexts), sanitizationMiddleware,
117
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
108
118
  ...(((_props$webChatContain6 = props.webChatContainerProps) === null || _props$webChatContain6 === void 0 ? void 0 : _props$webChatContain6.storeMiddlewares) ?? []));
109
119
  WebChatStoreLoader.store = webChatStore;
110
- } // Initialize the remaining Web Chat props
111
-
120
+ }
112
121
 
113
- const webChatProps = { ...defaultWebChatContainerStatefulProps.webChatProps,
122
+ // Initialize the remaining Web Chat props
123
+ const webChatProps = {
124
+ ...defaultWebChatContainerStatefulProps.webChatProps,
114
125
  dir: state.domainStates.globalDir,
115
126
  locale: changeLanguageCodeFormatForWebChat(getLocaleStringFromId((_state$domainStates$l8 = state.domainStates.liveChatConfig) === null || _state$domainStates$l8 === void 0 ? void 0 : (_state$domainStates$l9 = _state$domainStates$l8.ChatWidgetLanguage) === null || _state$domainStates$l9 === void 0 ? void 0 : _state$domainStates$l9.msdyn_localeid)),
116
127
  store: webChatStore,
@@ -1,95 +1,88 @@
1
1
  import "regenerator-runtime/runtime";
2
2
  import { BroadcastEvent, LogLevel, TelemetryEvent } from "../../../common/telemetry/TelemetryConstants";
3
+ import { handleAuthentication, removeAuthTokenProvider } from "./authHelper";
4
+ import { isNullOrEmptyString, isNullOrUndefined } from "../../../common/utils";
3
5
  import { BroadcastService } from "@microsoft/omnichannel-chat-components";
4
6
  import { ConversationState } from "../../../contexts/common/ConversationState";
5
7
  import { LiveChatWidgetActionType } from "../../../contexts/common/LiveChatWidgetActionType";
6
8
  import { TelemetryHelper } from "../../../common/telemetry/TelemetryHelper";
7
- import { handleAuthentication, removeAuthTokenProvider } from "./authHelper"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
9
 
9
- const getChatReconnectContext = async (chatSDK, chatConfig, getAuthToken, isReconnectEnabled, reconnectId) => {
10
- if (isReconnectEnabled) {
11
- try {
12
- if (reconnectId) {
13
- const chatReconnectOptionalParams = {
14
- reconnectId: reconnectId
15
- };
16
- return await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatReconnectContext(chatReconnectOptionalParams));
17
- } else {
18
- // set auth token to chat sdk to get reconnectId for auth chat
19
- await handleAuthentication(chatSDK, chatConfig, getAuthToken);
20
- const reconnectChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatReconnectContext()); // remove auth token after reconnectId is fetched
21
- // this will be reset later at start chat
22
-
23
- removeAuthTokenProvider(chatSDK);
24
- return reconnectChatContext;
25
- }
26
- } catch (ex) {
27
- TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
28
- Event: TelemetryEvent.GetChatReconnectContextSDKCallFailed,
29
- ExceptionDetails: {
30
- exception: ex
31
- }
32
- });
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ const handleChatReconnect = async (chatSDK, props, dispatch, setAdapter, initStartChat, state) => {
12
+ var _props$chatConfig, _props$chatConfig$Liv;
13
+ if (!isReconnectEnabled(props.chatConfig)) return;
14
+
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ const isAuthenticatedChat = (_props$chatConfig = props.chatConfig) !== null && _props$chatConfig !== void 0 && (_props$chatConfig$Liv = _props$chatConfig.LiveChatConfigAuthSettings) !== null && _props$chatConfig$Liv !== void 0 && _props$chatConfig$Liv.msdyn_javascriptclientfunction ? true : false;
17
+
18
+ // Get chat reconnect context
19
+ const reconnectChatContext = await getChatReconnectContext(chatSDK, props.chatConfig, props, isAuthenticatedChat);
20
+ if (hasReconnectId(reconnectChatContext)) {
21
+ var _props$reconnectChatP2, _props$reconnectChatP3;
22
+ //Redirect if enabled
23
+ if (reconnectChatContext.redirectURL && !isNullOrEmptyString(reconnectChatContext.redirectURL)) {
24
+ var _props$reconnectChatP;
25
+ redirectPage(reconnectChatContext.redirectURL, (_props$reconnectChatP = props.reconnectChatPaneProps) === null || _props$reconnectChatP === void 0 ? void 0 : _props$reconnectChatP.redirectInSameWindow);
26
+ return;
33
27
  }
34
- }
35
-
36
- return null;
37
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
28
 
29
+ //if reconnect id is provided in props, don't show reconnect pane
30
+ if ((_props$reconnectChatP2 = props.reconnectChatPaneProps) !== null && _props$reconnectChatP2 !== void 0 && _props$reconnectChatP2.reconnectId && !isNullOrEmptyString((_props$reconnectChatP3 = props.reconnectChatPaneProps) === null || _props$reconnectChatP3 === void 0 ? void 0 : _props$reconnectChatP3.reconnectId)) {
31
+ const reconnectChatContext = await getChatReconnectContext(chatSDK, props.chatConfig, props, isAuthenticatedChat);
32
+ await setReconnectIdAndStartChat(isAuthenticatedChat, chatSDK, props, dispatch, setAdapter, reconnectChatContext.reconnectId ?? "", initStartChat);
33
+ return;
34
+ }
39
35
 
40
- const getReconnectIdForAuthenticatedChat = async (props, chatSDK) => {
41
- var _props$chatConfig, _props$reconnectChatP;
42
-
43
- let authClientFunction = undefined;
44
-
45
- if ((_props$chatConfig = props.chatConfig) !== null && _props$chatConfig !== void 0 && _props$chatConfig.LiveChatConfigAuthSettings) {
46
- var _props$chatConfig2, _props$chatConfig2$Li;
47
-
48
- authClientFunction = ((_props$chatConfig2 = props.chatConfig) === null || _props$chatConfig2 === void 0 ? void 0 : (_props$chatConfig2$Li = _props$chatConfig2.LiveChatConfigAuthSettings) === null || _props$chatConfig2$Li === void 0 ? void 0 : _props$chatConfig2$Li.msdyn_javascriptclientfunction) ?? undefined;
36
+ //show reconnect pane
37
+ state.appStates.conversationState = ConversationState.ReconnectChat;
38
+ dispatch({
39
+ type: LiveChatWidgetActionType.SET_RECONNECT_ID,
40
+ payload: reconnectChatContext.reconnectId ?? ""
41
+ });
42
+ dispatch({
43
+ type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
44
+ payload: ConversationState.ReconnectChat
45
+ });
46
+ return;
49
47
  }
48
+ };
50
49
 
51
- if ((_props$reconnectChatP = props.reconnectChatPaneProps) !== null && _props$reconnectChatP !== void 0 && _props$reconnectChatP.isReconnectEnabled && authClientFunction // TODO: Implement this after storage is in place
52
-
53
- /* && !isLoadWithState() */
54
- ) {
55
- var _props$reconnectChatP2;
56
-
57
- const previousActiveSessionResponse = await getChatReconnectContext(chatSDK, props.chatConfig, props.getAuthToken, (_props$reconnectChatP2 = props.reconnectChatPaneProps) === null || _props$reconnectChatP2 === void 0 ? void 0 : _props$reconnectChatP2.isReconnectEnabled);
58
-
59
- if (previousActiveSessionResponse && previousActiveSessionResponse.reconnectId) {
60
- return previousActiveSessionResponse.reconnectId;
50
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
51
+ const getChatReconnectContext = async (chatSDK, chatConfig, props, isAuthenticatedChat) => {
52
+ try {
53
+ var _props$reconnectChatP4;
54
+ const chatReconnectOptionalParams = {
55
+ reconnectId: (_props$reconnectChatP4 = props.reconnectChatPaneProps) === null || _props$reconnectChatP4 === void 0 ? void 0 : _props$reconnectChatP4.reconnectId
56
+ };
57
+ // Get auth token for getting chat reconnect context
58
+ if (isAuthenticatedChat) {
59
+ await handleAuthentication(chatSDK, chatConfig, props.getAuthToken);
61
60
  }
61
+ const reconnectChatContext = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getChatReconnectContext(chatReconnectOptionalParams));
62
+ if (isAuthenticatedChat) {
63
+ // remove auth token after reconnectId is fetched
64
+ // AuthToken will be reset later at start chat
65
+ removeAuthTokenProvider(chatSDK);
66
+ }
67
+ return reconnectChatContext;
68
+ } catch (error) {
69
+ TelemetryHelper.logSDKEvent(LogLevel.ERROR, {
70
+ Event: TelemetryEvent.GetChatReconnectContextSDKCallFailed,
71
+ ExceptionDetails: {
72
+ exception: error
73
+ }
74
+ });
62
75
  }
76
+ };
63
77
 
64
- return undefined;
65
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
66
-
67
-
68
- const handleUnauthenticatedReconnectChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, isReconnectEnabled, reconnectId, initStartChat, redirectInSameWindow) => {
69
- const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, chatConfig, getAuthToken, isReconnectEnabled, reconnectId);
70
-
71
- if (shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
72
- await redirectOrStartNewChat(reconnectAvailabilityResponse, chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat, redirectInSameWindow);
73
- } else {
74
- await setReconnectIdAndStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, reconnectId, initStartChat);
75
- }
76
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
77
-
78
-
79
- const startUnauthenticatedReconnectChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, isReconnectEnabled, reconnectId, initStartChat) => {
80
- const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, chatConfig, getAuthToken, isReconnectEnabled, reconnectId);
81
-
82
- if (!shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
83
- await setReconnectIdAndStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, reconnectId, initStartChat);
78
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
79
+ const setReconnectIdAndStartChat = async (isAuthenticatedChat, chatSDK, props, dispatch, setAdapter, reconnectId, initStartChat) => {
80
+ if (!isAuthenticatedChat) {
81
+ const startUnauthenticatedReconnectChat = {
82
+ eventName: BroadcastEvent.StartUnauthenticatedReconnectChat
83
+ };
84
+ BroadcastService.postMessage(startUnauthenticatedReconnectChat);
84
85
  }
85
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
86
-
87
-
88
- const setReconnectIdAndStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, reconnectId, initStartChat) => {
89
- const startUnauthenticatedReconnectChat = {
90
- eventName: BroadcastEvent.StartUnauthenticatedReconnectChat
91
- };
92
- BroadcastService.postMessage(startUnauthenticatedReconnectChat);
93
86
  const optionalParams = {
94
87
  reconnectId: reconnectId
95
88
  };
@@ -101,9 +94,8 @@ const setReconnectIdAndStartChat = async (chatSDK, chatConfig, getAuthToken, dis
101
94
  type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
102
95
  payload: ConversationState.Loading
103
96
  });
104
- await initStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, optionalParams);
97
+ await initStartChat(chatSDK, dispatch, setAdapter, props, optionalParams);
105
98
  };
106
-
107
99
  const redirectPage = (redirectURL, redirectInSameWindow) => {
108
100
  const redirectPageRequest = {
109
101
  eventName: BroadcastEvent.RedirectPageRequest,
@@ -112,60 +104,15 @@ const redirectPage = (redirectURL, redirectInSameWindow) => {
112
104
  }
113
105
  };
114
106
  BroadcastService.postMessage(redirectPageRequest);
115
-
116
107
  if (redirectInSameWindow) {
117
108
  window.location.href = redirectURL;
118
109
  }
119
110
  };
120
-
121
- const shouldRedirectOrStartNewChat = reconnectAvailabilityResponse => {
122
- return reconnectAvailabilityResponse && !reconnectAvailabilityResponse.reconnectId;
123
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
124
-
125
-
126
- const startNewChatEmptyRedirectionUrl = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat) => {
127
- const startUnauthenticatedReconnectChat = {
128
- eventName: BroadcastEvent.StartUnauthenticatedReconnectChat
129
- };
130
- BroadcastService.postMessage(startUnauthenticatedReconnectChat); // Getting PreChat Survey Context
131
-
132
- const parseToJson = false;
133
- const preChatSurveyResponse = await chatSDK.getPreChatSurvey(parseToJson);
134
-
135
- if (preChatSurveyResponse) {
136
- dispatch({
137
- type: LiveChatWidgetActionType.SET_PRE_CHAT_SURVEY_RESPONSE,
138
- payload: preChatSurveyResponse
139
- });
140
- dispatch({
141
- type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
142
- payload: ConversationState.Prechat
143
- });
144
- } else {
145
- dispatch({
146
- type: LiveChatWidgetActionType.SET_CONVERSATION_STATE,
147
- payload: ConversationState.Loading
148
- });
149
- await initStartChat(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter);
150
- }
151
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
152
-
153
-
154
- const handleRedirectUnauthenticatedReconnectChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat, isReconnectEnabled, reconnectId, redirectInSameWindow) => {
155
- const reconnectAvailabilityResponse = await getChatReconnectContext(chatSDK, chatConfig, getAuthToken, isReconnectEnabled, reconnectId);
156
-
157
- if (shouldRedirectOrStartNewChat(reconnectAvailabilityResponse)) {
158
- await redirectOrStartNewChat(reconnectAvailabilityResponse, chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat, redirectInSameWindow);
159
- }
160
- }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
161
-
162
-
163
- const redirectOrStartNewChat = async (reconnectAvailabilityResponse, chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat, redirectInSameWindow) => {
164
- if (reconnectAvailabilityResponse.redirectURL) {
165
- redirectPage(reconnectAvailabilityResponse.redirectURL, redirectInSameWindow);
166
- } else {
167
- await startNewChatEmptyRedirectionUrl(chatSDK, chatConfig, getAuthToken, dispatch, setAdapter, initStartChat);
168
- }
111
+ const isReconnectEnabled = chatConfig => {
112
+ var _chatConfig$LiveWSAnd;
113
+ return chatConfig && ((_chatConfig$LiveWSAnd = chatConfig.LiveWSAndLiveChatEngJoin) === null || _chatConfig$LiveWSAnd === void 0 ? void 0 : _chatConfig$LiveWSAnd.msdyn_enablechatreconnect) && (chatConfig.LiveWSAndLiveChatEngJoin.msdyn_enablechatreconnect === "true" || chatConfig.LiveWSAndLiveChatEngJoin.msdyn_enablechatreconnect === true);
169
114
  };
170
-
171
- export { getChatReconnectContext, getReconnectIdForAuthenticatedChat, handleUnauthenticatedReconnectChat, startUnauthenticatedReconnectChat, handleRedirectUnauthenticatedReconnectChat };
115
+ const hasReconnectId = reconnectAvailabilityResponse => {
116
+ return reconnectAvailabilityResponse && !isNullOrUndefined(reconnectAvailabilityResponse.reconnectId);
117
+ };
118
+ export { handleChatReconnect, isReconnectEnabled, getChatReconnectContext };