@microsoft/omnichannel-chat-widget 0.1.0-main.170e416 → 0.1.0-main.18d1166

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 (131) hide show
  1. package/README.md +7 -34
  2. package/lib/cjs/assets/Icons.js +4 -2
  3. package/lib/cjs/common/Constants.js +9 -3
  4. package/lib/cjs/common/KeyCodes.js +3 -1
  5. package/lib/cjs/common/contextDataStore/DataStoreManager.js +3 -1
  6. package/lib/cjs/common/storage/default/defaultCacheManager.js +5 -3
  7. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +15 -6
  8. package/lib/cjs/common/telemetry/TelemetryConstants.js +34 -4
  9. package/lib/cjs/common/telemetry/TelemetryHelper.js +5 -2
  10. package/lib/cjs/common/telemetry/TelemetryManager.js +3 -1
  11. package/lib/cjs/common/utils.js +23 -2
  12. package/lib/cjs/components/confirmationpanestateful/ConfirmationPaneStateful.js +12 -19
  13. package/lib/cjs/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +1 -1
  14. package/lib/cjs/components/headerstateful/HeaderStateful.js +7 -4
  15. package/lib/cjs/components/livechatwidget/common/ActivityStreamHandler.js +3 -1
  16. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +139 -0
  17. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +3 -1
  18. package/lib/cjs/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +3 -1
  19. package/lib/cjs/components/livechatwidget/common/ChatAdapterShim.js +3 -1
  20. package/lib/cjs/components/livechatwidget/common/Deferred.js +3 -1
  21. package/lib/cjs/components/livechatwidget/common/agentEndConversationHelper.js +36 -0
  22. package/lib/cjs/components/livechatwidget/common/createAdapter.js +2 -0
  23. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +66 -14
  24. package/lib/cjs/components/livechatwidget/common/endChat.js +41 -49
  25. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +11 -49
  26. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +6 -9
  27. package/lib/cjs/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +254 -2
  28. package/lib/cjs/components/livechatwidget/common/startChat.js +76 -53
  29. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +82 -44
  30. package/lib/cjs/components/loadingpanestateful/LoadingPaneStateful.js +22 -2
  31. package/lib/cjs/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +57 -0
  32. package/lib/cjs/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +3 -1
  33. package/lib/cjs/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +1 -1
  34. package/lib/cjs/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +1 -1
  35. package/lib/cjs/components/webchatcontainerstateful/common/mockadapter.js +3 -1
  36. package/lib/cjs/components/webchatcontainerstateful/common/mockchatsdk.js +3 -1
  37. package/lib/cjs/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -0
  38. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -1
  39. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -1
  40. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +1 -3
  41. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
  42. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +1 -1
  43. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +1 -1
  44. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +5 -6
  45. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +2 -14
  46. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -11
  47. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +7 -3
  48. package/lib/cjs/contexts/common/ConversationEndEntity.js +12 -0
  49. package/lib/cjs/contexts/common/LiveChatWidgetActionType.js +32 -28
  50. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +9 -3
  51. package/lib/cjs/contexts/createReducer.js +36 -2
  52. package/lib/cjs/hooks/useDebounce.js +28 -0
  53. package/lib/cjs/hooks/useWindowDimensions.js +30 -0
  54. package/lib/cjs/plugins/newMessageEventHandler.js +14 -0
  55. package/lib/esm/assets/Icons.js +2 -1
  56. package/lib/esm/common/Constants.js +9 -3
  57. package/lib/esm/common/KeyCodes.js +3 -1
  58. package/lib/esm/common/contextDataStore/DataStoreManager.js +3 -1
  59. package/lib/esm/common/storage/default/defaultCacheManager.js +5 -3
  60. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +15 -6
  61. package/lib/esm/common/telemetry/TelemetryConstants.js +34 -4
  62. package/lib/esm/common/telemetry/TelemetryHelper.js +5 -2
  63. package/lib/esm/common/telemetry/TelemetryManager.js +3 -1
  64. package/lib/esm/common/utils.js +20 -0
  65. package/lib/esm/components/confirmationpanestateful/ConfirmationPaneStateful.js +12 -19
  66. package/lib/esm/components/emailtranscriptpanestateful/EmailTranscriptPaneStateful.js +1 -1
  67. package/lib/esm/components/headerstateful/HeaderStateful.js +7 -4
  68. package/lib/esm/components/livechatwidget/common/ActivityStreamHandler.js +3 -1
  69. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.js +134 -0
  70. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/DefaultActivitySubscriber.js +3 -1
  71. package/lib/esm/components/livechatwidget/common/ActivitySubscriber/PauseActivitySubscriber.js +3 -1
  72. package/lib/esm/components/livechatwidget/common/ChatAdapterShim.js +3 -1
  73. package/lib/esm/components/livechatwidget/common/Deferred.js +3 -1
  74. package/lib/esm/components/livechatwidget/common/agentEndConversationHelper.js +30 -0
  75. package/lib/esm/components/livechatwidget/common/createAdapter.js +2 -0
  76. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +66 -14
  77. package/lib/esm/components/livechatwidget/common/endChat.js +43 -51
  78. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +13 -51
  79. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +7 -9
  80. package/lib/esm/components/livechatwidget/common/setPostChatContextAndLoadSurvey.js +254 -3
  81. package/lib/esm/components/livechatwidget/common/startChat.js +76 -53
  82. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +83 -45
  83. package/lib/esm/components/loadingpanestateful/LoadingPaneStateful.js +22 -2
  84. package/lib/esm/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.js +50 -0
  85. package/lib/esm/components/postchatsurveypanestateful/PostChatSurveyPaneStateful.js +3 -1
  86. package/lib/esm/components/prechatsurveypanestateful/PreChatSurveyPaneStateful.js +1 -1
  87. package/lib/esm/components/prechatsurveypanestateful/common/defaultStyles/defaultGeneralPreChatSurveyPaneStyleProps.js +1 -1
  88. package/lib/esm/components/webchatcontainerstateful/common/mockadapter.js +3 -1
  89. package/lib/esm/components/webchatcontainerstateful/common/mockchatsdk.js +3 -1
  90. package/lib/esm/components/webchatcontainerstateful/common/utils/FileAttachmentIconManager.js +2 -0
  91. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/BotMagicCodeStore.js +3 -1
  92. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/WebChatStoreLoader.js +3 -1
  93. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +1 -3
  94. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware.js +2 -1
  95. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultSystemMessageBoxStyles.js +1 -1
  96. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultUserMessageBoxStyles.js +1 -1
  97. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/DeliveredTimestamp.js +5 -6
  98. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/NotDeliveredTimestamp.js +2 -14
  99. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.js +2 -11
  100. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware.js +5 -3
  101. package/lib/esm/contexts/common/ConversationEndEntity.js +5 -0
  102. package/lib/esm/contexts/common/LiveChatWidgetActionType.js +32 -28
  103. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +9 -3
  104. package/lib/esm/contexts/createReducer.js +36 -2
  105. package/lib/esm/hooks/useDebounce.js +22 -0
  106. package/lib/esm/hooks/useWindowDimensions.js +23 -0
  107. package/lib/esm/plugins/newMessageEventHandler.js +14 -0
  108. package/lib/types/assets/Icons.d.ts +1 -0
  109. package/lib/types/common/Constants.d.ts +4 -0
  110. package/lib/types/common/storage/default/defaultCacheManager.d.ts +1 -1
  111. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +1 -1
  112. package/lib/types/common/telemetry/TelemetryConstants.d.ts +30 -6
  113. package/lib/types/common/telemetry/definitions/Contracts.d.ts +2 -0
  114. package/lib/types/common/telemetry/definitions/Payload.d.ts +1 -0
  115. package/lib/types/common/telemetry/interfaces/ITelemetryConfig.d.ts +4 -0
  116. package/lib/types/common/utils.d.ts +1 -0
  117. package/lib/types/components/confirmationpanestateful/interfaces/IConfirmationPaneStatefulParams.d.ts +0 -7
  118. package/lib/types/components/livechatwidget/common/ActivitySubscriber/BotAuthActivitySubscriber.d.ts +9 -0
  119. package/lib/types/components/livechatwidget/common/agentEndConversationHelper.d.ts +6 -0
  120. package/lib/types/components/livechatwidget/common/initWebChatComposer.d.ts +1 -1
  121. package/lib/types/components/livechatwidget/common/setPostChatContextAndLoadSurvey.d.ts +6 -1
  122. package/lib/types/components/livechatwidget/common/startChat.d.ts +3 -3
  123. package/lib/types/components/livechatwidget/interfaces/ILiveChatWidgetControlProps.d.ts +2 -0
  124. package/lib/types/components/loadingpanestateful/common/errorUIStyleProps/errorUILoadingPaneStyleProps.d.ts +2 -0
  125. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/timestamps/SendingTimestamp.d.ts +1 -1
  126. package/lib/types/contexts/common/ConversationEndEntity.d.ts +4 -0
  127. package/lib/types/contexts/common/ILiveChatWidgetContext.d.ts +6 -1
  128. package/lib/types/contexts/common/LiveChatWidgetActionType.d.ts +32 -28
  129. package/lib/types/hooks/useDebounce.d.ts +3 -0
  130. package/lib/types/hooks/useWindowDimensions.d.ts +4 -0
  131. package/package.json +3 -3
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.BotAuthActivitySubscriber = void 0;
7
+ var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
8
+ var _TelemetryConstants = require("../../../../common/telemetry/TelemetryConstants");
9
+ var _TelemetryHelper = require("../../../../common/telemetry/TelemetryHelper");
10
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
12
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
13
+ const supportedSignInCardContentTypes = ["application/vnd.microsoft.card.signin", "application/vnd.microsoft.card.oauth"];
14
+ const botOauthUrlRegex = /[\S]+.botframework.com\/api\/oauth\/signin\?signin=([\S]+)/;
15
+ const delay = t => new Promise(resolve => setTimeout(resolve, t));
16
+ const fetchBotAuthConfigRetries = 3;
17
+ const fetchBotAuthConfigRetryInterval = 1000;
18
+ let response;
19
+ const extractSignInId = signInUrl => {
20
+ const result = botOauthUrlRegex.exec(signInUrl);
21
+ if (result && result[1]) {
22
+ return result[1];
23
+ }
24
+ return "";
25
+ };
26
+ const extractSasUrl = async attachment => {
27
+ let sasUrl = undefined;
28
+ if (attachment && attachment.content && attachment.content.tokenPostResource && attachment.content.tokenPostResource.sasUrl) {
29
+ sasUrl = attachment.content.tokenPostResource.sasUrl;
30
+ }
31
+ if (!sasUrl) {
32
+ const signInId = extractSignInId(attachment.content.buttons[0].value);
33
+ const getTestUrlEndpoint = `https://token.botframework.com/api/sas/gettesturl?signInId=${signInId}`;
34
+ try {
35
+ const response = await window.fetch(getTestUrlEndpoint);
36
+ if (response.status === 200) {
37
+ const responseJson = await response.json();
38
+ sasUrl = responseJson.sasUrl;
39
+ }
40
+ } catch {
41
+ sasUrl = undefined;
42
+ }
43
+ }
44
+ return sasUrl;
45
+ };
46
+ const fetchBotAuthConfig = async retries => {
47
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
48
+ Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderFetchConfig
49
+ });
50
+ const botAuthConfigRequestEvent = {
51
+ eventName: _TelemetryConstants.BroadcastEvent.BotAuthConfigRequest
52
+ };
53
+ _omnichannelChatComponents.BroadcastService.postMessage(botAuthConfigRequestEvent);
54
+ const listener = _omnichannelChatComponents.BroadcastService.getMessageByEventName(_TelemetryConstants.BroadcastEvent.BotAuthConfigResponse).subscribe(data => {
55
+ var _data$payload, _data$payload2;
56
+ response = ((_data$payload = data.payload) === null || _data$payload === void 0 ? void 0 : _data$payload.response) !== undefined ? (_data$payload2 = data.payload) === null || _data$payload2 === void 0 ? void 0 : _data$payload2.response : response;
57
+ listener.unsubscribe();
58
+ });
59
+ if (response !== undefined) {
60
+ //return response;
61
+ return response;
62
+ }
63
+ if (retries === 1) {
64
+ // Base Case
65
+ throw new Error();
66
+ }
67
+ await delay(fetchBotAuthConfigRetryInterval);
68
+ return await fetchBotAuthConfig(--retries);
69
+ };
70
+ class BotAuthActivitySubscriber {
71
+ constructor() {
72
+ _defineProperty(this, "observer", void 0);
73
+ _defineProperty(this, "signInCardSeen", void 0);
74
+ this.signInCardSeen = new Set();
75
+ }
76
+ applicable(activity) {
77
+ var _activity$attachments;
78
+ return (activity === null || activity === void 0 ? void 0 : (_activity$attachments = activity.attachments) === null || _activity$attachments === void 0 ? void 0 : _activity$attachments.length) > 0 && activity.attachments[0] && supportedSignInCardContentTypes.indexOf(activity.attachments[0].contentType) >= 0;
79
+ }
80
+ async apply(activity) {
81
+ this.observer.next(false); // Hides card
82
+ const attachment = activity.attachments[0];
83
+ const signInUrl = attachment.content.buttons[0].value;
84
+ const signInId = extractSignInId(signInUrl);
85
+ if (!signInId) {
86
+ return;
87
+ }
88
+ if (this.signInCardSeen.has(signInId)) {
89
+ // Prevents duplicate auth
90
+ return;
91
+ }
92
+ this.signInCardSeen.add(signInId);
93
+ const sasUrl = await extractSasUrl(attachment);
94
+ const event = {
95
+ eventName: _TelemetryConstants.BroadcastEvent.SigninCardReceived,
96
+ payload: {
97
+ sasUrl
98
+ }
99
+ };
100
+ if (!sasUrl) {
101
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
102
+ Event: _TelemetryConstants.TelemetryEvent.BotAuthActivityEmptySasUrl,
103
+ Description: "SaS Url is empty"
104
+ });
105
+ return activity;
106
+ } else {
107
+ _omnichannelChatComponents.BroadcastService.postMessage(event);
108
+ }
109
+ try {
110
+ const response = await fetchBotAuthConfig(fetchBotAuthConfigRetries);
111
+ if (response === false) {
112
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
113
+ Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderHideCard
114
+ });
115
+ } else {
116
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
117
+ Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderDisplayCard
118
+ });
119
+ return activity;
120
+ }
121
+ } catch {
122
+ _TelemetryHelper.TelemetryHelper.logLoadingEvent(_TelemetryConstants.LogLevel.INFO, {
123
+ Event: _TelemetryConstants.TelemetryEvent.SetBotAuthProviderNotFound
124
+ });
125
+ //this is to ensure listener continues waiting for response
126
+ if (this.signInCardSeen.has(signInId)) {
127
+ this.signInCardSeen.delete(signInId);
128
+ }
129
+ return activity;
130
+ }
131
+ }
132
+ async next(activity) {
133
+ if (this.applicable(activity)) {
134
+ return await this.apply(activity);
135
+ }
136
+ return activity;
137
+ }
138
+ }
139
+ exports.BotAuthActivitySubscriber = BotAuthActivitySubscriber;
@@ -4,7 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.DefaultActivitySubscriber = void 0;
7
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
7
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
9
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
8
10
  class DefaultActivitySubscriber {
9
11
  constructor() {
10
12
  _defineProperty(this, "observer", void 0);
@@ -5,7 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.PauseActivitySubscriber = void 0;
7
7
  var _ActivityStreamHandler = require("../ActivityStreamHandler");
8
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
10
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
9
11
  class PauseActivitySubscriber {
10
12
  constructor() {
11
13
  _defineProperty(this, "observer", void 0);
@@ -6,7 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.ChatAdapterShim = void 0;
7
7
  var _DefaultActivitySubscriber = require("./ActivitySubscriber/DefaultActivitySubscriber");
8
8
  var _shareObservable = require("./shareObservable");
9
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
10
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
11
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
10
12
  class ChatAdapterShim {
11
13
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
14
 
@@ -4,7 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Deferred = void 0;
7
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
7
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
9
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
8
10
  class Deferred {
9
11
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
12
 
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.handleAgentEndConversation = void 0;
7
+ var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
8
+ var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
9
+ var _ConversationEndEntity = require("../../../contexts/common/ConversationEndEntity");
10
+ var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidgetActionType");
11
+ var _setPostChatContextAndLoadSurvey = require("./setPostChatContextAndLoadSurvey");
12
+ const handleAgentEndConversation = (props, state, dispatch) => {
13
+ const isPostChatEnabled = (0, _setPostChatContextAndLoadSurvey.checkPostChatEnabled)(props, state);
14
+ if (isPostChatEnabled) {
15
+ if (!state.appStates.postChatWorkflowInProgress) {
16
+ dispatch({
17
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY,
18
+ payload: _ConversationEndEntity.ConversationEndEntity.Agent
19
+ });
20
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
21
+ Event: _TelemetryConstants.TelemetryEvent.ConversationEndedByAgent,
22
+ Description: "Conversation is ended from agent side"
23
+ });
24
+ }
25
+ } else {
26
+ dispatch({
27
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY,
28
+ payload: _ConversationEndEntity.ConversationEndEntity.Agent
29
+ });
30
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
31
+ Event: _TelemetryConstants.TelemetryEvent.ConversationEndedByAgent,
32
+ Description: "Conversation is ended from agent side"
33
+ });
34
+ }
35
+ };
36
+ exports.handleAgentEndConversation = handleAgentEndConversation;
@@ -10,6 +10,7 @@ var _NotificationScenarios = require("../../webchatcontainerstateful/webchatcont
10
10
  var _defaultMiddlewareLocalizedTexts = require("../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts");
11
11
  var _ChatAdapterShim = require("./ChatAdapterShim");
12
12
  var _PauseActivitySubscriber = require("./ActivitySubscriber/PauseActivitySubscriber");
13
+ var _BotAuthActivitySubscriber = require("./ActivitySubscriber/BotAuthActivitySubscriber");
13
14
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
15
  const createAdapter = async chatSDK => {
15
16
  const chatAdapterOptionalParams = {
@@ -34,6 +35,7 @@ const createAdapter = async chatSDK => {
34
35
  if (chatSDK.isMockModeOn !== true) {
35
36
  adapter = new _ChatAdapterShim.ChatAdapterShim(adapter);
36
37
  adapter.addSubscriber(new _PauseActivitySubscriber.PauseActivitySubscriber());
38
+ adapter.addSubscriber(new _BotAuthActivitySubscriber.BotAuthActivitySubscriber());
37
39
  return adapter.chatAdapter;
38
40
  }
39
41
  return adapter;
@@ -13,9 +13,9 @@ var _activityMiddleware = require("../../../webchatcontainerstateful/webchatcont
13
13
  var _attachmentMiddleware = _interopRequireDefault(require("../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/attachmentMiddleware"));
14
14
  var _avatarMiddleware = require("../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/avatarMiddleware");
15
15
  var _createMarkdown = require("../createMarkdown");
16
+ var _WebChatLogger = require("../../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger");
16
17
  var _groupActivitiesMiddleware = require("../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/groupActivitiesMiddleware");
17
18
  var _typingIndicatorMiddleware = require("../../../webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/typingIndicatorMiddleware");
18
- var _WebChatLogger = require("../../../webchatcontainerstateful/webchatcontroller/webchattelemetry/WebChatLogger");
19
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
20
  /* eslint-disable @typescript-eslint/no-empty-function, @typescript-eslint/no-explicit-any */
21
21
 
@@ -413,6 +413,7 @@ const dummyDefaultProps = {
413
413
  width: "90px",
414
414
  cursor: "pointer",
415
415
  overflow: "hidden",
416
+ padding: "0px",
416
417
  whiteSpace: "nowrap"
417
418
  },
418
419
  subtitleStyleProps: {
@@ -420,12 +421,14 @@ const dummyDefaultProps = {
420
421
  fontWeight: "200",
421
422
  color: "#666",
422
423
  overflow: "hidden",
424
+ padding: "0px",
423
425
  fontFamily: "'Segoe UI',Arial,sans-serif",
424
426
  display: "block",
425
427
  alignItems: "center",
426
428
  margin: "0px 14px 0px 14px",
427
429
  textOverflow: "ellipsis !important",
428
- width: "max-content",
430
+ width: "90px",
431
+ whiteSpace: "nowrap",
429
432
  cursor: "pointer"
430
433
  },
431
434
  classNames: {
@@ -475,7 +478,6 @@ const dummyDefaultProps = {
475
478
  cancelButtonText: "Cancel",
476
479
  cancelButtonAriaLabel: "Cancel. Return to Chat",
477
480
  brightnessValueOnDim: "0.2",
478
- disableDimLayer: false,
479
481
  onConfirm: () => {},
480
482
  // Detailed implementation omitted
481
483
  onCancel: () => {} // Detailed implementation omitted
@@ -483,20 +485,23 @@ const dummyDefaultProps = {
483
485
 
484
486
  styleProps: {
485
487
  generalStyleProps: {
488
+ display: "flex",
489
+ minHeight: "160px",
490
+ maxHeight: "300px",
491
+ boxSizing: "border-box",
486
492
  backgroundColor: "#FFFFFF",
487
493
  borderRadius: "2px",
488
494
  color: "black",
489
495
  fontFamily: "Segoe UI, Arial, sans-serif",
490
496
  fontSize: "14px",
491
- height: "160px",
492
497
  padding: "10px 20px",
493
- width: "262px",
494
498
  position: "absolute",
495
499
  justifyContent: "center",
496
500
  alignItems: "center",
497
- display: "flex",
498
501
  flexFlow: "column",
499
- zIndex: "9999"
502
+ zIndex: "9999",
503
+ left: "26px",
504
+ right: "26px"
500
505
  },
501
506
  titleStyleProps: {
502
507
  color: "#323130",
@@ -518,10 +523,14 @@ const dummyDefaultProps = {
518
523
  },
519
524
  buttonGroupStyleProps: {
520
525
  display: "flex",
526
+ width: "auto",
527
+ height: "auto",
528
+ boxSizing: "border-box",
521
529
  flexFlow: "row",
522
530
  justifyContent: "center",
523
531
  alignItems: "center",
524
- gap: "10px"
532
+ gap: "10px",
533
+ marginBottom: "10px"
525
534
  },
526
535
  confirmButtonStyleProps: {
527
536
  backgroundColor: "rgba(9,72,159,1)",
@@ -576,6 +585,7 @@ const dummyDefaultProps = {
576
585
  hideCallingContainer: false,
577
586
  hideChatButton: false,
578
587
  hideConfirmationPane: false,
588
+ hideErrorUIPane: false,
579
589
  hideFooter: false,
580
590
  hideHeader: false,
581
591
  hideLoadingPane: false,
@@ -626,7 +636,6 @@ const dummyDefaultProps = {
626
636
  cancelButtonText: "Cancel",
627
637
  cancelButtonAriaLabel: "Cancel",
628
638
  brightnessValueOnDim: "0.2",
629
- disableDimLayer: false,
630
639
  onSend: undefined,
631
640
  onCancel: undefined,
632
641
  checkInput: undefined
@@ -1024,7 +1033,8 @@ const dummyDefaultProps = {
1024
1033
  margin: "0px 0px 20px 0px",
1025
1034
  display: "flex",
1026
1035
  order: 1,
1027
- alignSelf: "auto"
1036
+ alignSelf: "auto",
1037
+ overflow: "visible"
1028
1038
  },
1029
1039
  iconImageProps: {
1030
1040
  src: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGZpbHRlcj0idXJsKCNmaWx0ZXIwX2lpKSI+DQo8cGF0aCBkPSJNMTUuMTk3MSAxNi4yNzI1VjI1Ljg1MjRDMTUuMTk3MSAyNy4zODExIDE1Ljg0MDEgMjcuNTIwMSAxNi45ODMyIDI3LjUyMDFMMjYuNzA4NCAyNy41NjQ5TDMxLjAwMzkgMzIuMzEyM1YyNy41NjQ5SDMxLjg5N0MzMi4xNzQzIDI3LjU2MzcgMzIuNDQ4NyAyNy41MDc3IDMyLjcwNDUgMjcuNDAwMUMzMi45NjAzIDI3LjI5MjQgMzMuMTkyNSAyNy4xMzUzIDMzLjM4NzggMjYuOTM3NUMzMy41ODMxIDI2LjczOTggMzMuNzM3NyAyNi41MDU0IDMzLjg0MjcgMjYuMjQ3N0MzMy45NDc4IDI1Ljk5IDM0LjAwMTMgMjUuNzE0IDM0LjAwMDEgMjUuNDM1NVYxNi4zMDM4QzM0LjAwMTMgMTYuMDI1NCAzMy45NDc4IDE1Ljc0OTQgMzMuODQyNyAxNS40OTE3QzMzLjczNzcgMTUuMjM0IDMzLjU4MzEgMTQuOTk5NiAzMy4zODc4IDE0LjgwMThDMzMuMTkyNSAxNC42MDQxIDMyLjk2MDMgMTQuNDQ2OSAzMi43MDQ1IDE0LjMzOTNDMzIuNDQ4NyAxNC4yMzE2IDMyLjE3NDMgMTQuMTc1NiAzMS44OTcgMTQuMTc0NEwxNy4zMDQ3IDE0LjE0MzFDMTcuMDI2OSAxNC4xNDM3IDE2Ljc1MiAxNC4xOTkyIDE2LjQ5NTcgMTQuMzA2NkMxNi4yMzk0IDE0LjQxNCAxNi4wMDY3IDE0LjU3MTEgMTUuODEwOSAxNC43Njg5QzE1LjYxNTIgMTQuOTY2NyAxNS40NjAyIDE1LjIwMTMgMTUuMzU0OCAxNS40NTkzQzE1LjI0OTUgMTUuNzE3MyAxNS4xOTU5IDE1Ljk5MzYgMTUuMTk3MSAxNi4yNzI1WiIgZmlsbD0iI0Q2RDZENiIvPg0KPC9nPg0KPGcgZmlsdGVyPSJ1cmwoI2ZpbHRlcjFfZGlpKSI+DQo8cGF0aCBkPSJNMjcuODczNSA2LjY5ODg3VjE4Ljg0MDlDMjcuODczNSAyMC43Nzg1IDI3LjA1NzIgMjAuOTU0NiAyNS42MDU4IDIwLjk1NDZMMTMuMjU4IDIxLjAxMTRMNy44MDQxNCAyNy4wMjg1VjIxLjAxMTRINi42NzAyN0M2LjMxODEyIDIxLjAwOTkgNS45Njk3MSAyMC45Mzg5IDUuNjQ0OTMgMjAuODAyNUM1LjMyMDE2IDIwLjY2NjEgNS4wMjUzOCAyMC40NjY4IDQuNzc3NDIgMjAuMjE2MkM0LjUyOTQ2IDE5Ljk2NTYgNC4zMzMxOSAxOS42Njg1IDQuMTk5OCAxOS4zNDE5QzQuMDY2NDIgMTkuMDE1MiAzLjk5ODUzIDE4LjY2NTUgNC4wMDAwMiAxOC4zMTI1VjYuNzM4NjRDMy45OTg1MyA2LjM4NTcxIDQuMDY2NDIgNi4wMzU5NSA0LjE5OTggNS43MDkzMUM0LjMzMzE5IDUuMzgyNjcgNC41Mjk0NiA1LjA4NTU3IDQuNzc3NDIgNC44MzQ5NUM1LjAyNTM4IDQuNTg0MzQgNS4zMjAxNiA0LjM4NTEzIDUuNjQ0OTMgNC4yNDg2OUM1Ljk2OTcxIDQuMTEyMjUgNi4zMTgxMiA0LjA0MTI2IDYuNjcwMjcgNC4wMzk3N0wyNS4xOTc2IDRDMjUuNTUwMiA0LjAwMDc0IDI1Ljg5OTMgNC4wNzExOCAyNi4yMjQ3IDQuMjA3MjlDMjYuNTUwMSA0LjM0MzM5IDI2Ljg0NTYgNC41NDI0OSAyNy4wOTQxIDQuNzkzMThDMjcuMzQyNyA1LjA0Mzg2IDI3LjUzOTUgNS4zNDEyMiAyNy42NzMyIDUuNjY4MjNDMjcuODA3IDUuOTk1MjMgMjcuODc1IDYuMzQ1NDYgMjcuODczNSA2LjY5ODg3WiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyKSIvPg0KPC9nPg0KPGRlZnM+DQo8ZmlsdGVyIGlkPSJmaWx0ZXIwX2lpIiB4PSIxNS4xOTcxIiB5PSIxNC4xNDMxIiB3aWR0aD0iMTguODAzMSIgaGVpZ2h0PSIxOC4xNjkzIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+DQo8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCIvPg0KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz4NCjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPg0KPGZlT2Zmc2V0IGR4PSItMC4yIiBkeT0iLTAuMiIvPg0KPGZlQ29tcG9zaXRlIGluMj0iaGFyZEFscGhhIiBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgazI9Ii0xIiBrMz0iMSIvPg0KPGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAuMTcgMCIvPg0KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbjI9InNoYXBlIiByZXN1bHQ9ImVmZmVjdDFfaW5uZXJTaGFkb3ciLz4NCjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPg0KPGZlT2Zmc2V0IGR4PSItMC41IiBkeT0iLTAuNSIvPg0KPGZlQ29tcG9zaXRlIGluMj0iaGFyZEFscGhhIiBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgazI9Ii0xIiBrMz0iMSIvPg0KPGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAuMTYgMCIvPg0KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbjI9ImVmZmVjdDFfaW5uZXJTaGFkb3ciIHJlc3VsdD0iZWZmZWN0Ml9pbm5lclNoYWRvdyIvPg0KPC9maWx0ZXI+DQo8ZmlsdGVyIGlkPSJmaWx0ZXIxX2RpaSIgeD0iMCIgeT0iMCIgd2lkdGg9IjM5Ljg3MzYiIGhlaWdodD0iMzkuMDI4NSIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPg0KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4NCjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIi8+DQo8ZmVPZmZzZXQgZHg9IjQiIGR5PSI0Ii8+DQo8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSI0Ii8+DQo8ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMC4yNSAwIi8+DQo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9ImVmZmVjdDFfZHJvcFNoYWRvdyIvPg0KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJlZmZlY3QxX2Ryb3BTaGFkb3ciIHJlc3VsdD0ic2hhcGUiLz4NCjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPg0KPGZlT2Zmc2V0IGR4PSItMiIgZHk9Ii0yIi8+DQo8ZmVDb21wb3NpdGUgaW4yPSJoYXJkQWxwaGEiIG9wZXJhdG9yPSJhcml0aG1ldGljIiBrMj0iLTEiIGszPSIxIi8+DQo8ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMC4xNyAwIi8+DQo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluMj0ic2hhcGUiIHJlc3VsdD0iZWZmZWN0Ml9pbm5lclNoYWRvdyIvPg0KPGZlQ29sb3JNYXRyaXggaW49IlNvdXJjZUFscGhhIiB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDAiIHJlc3VsdD0iaGFyZEFscGhhIi8+DQo8ZmVPZmZzZXQgZHg9Ii0xIiBkeT0iLTEiLz4NCjxmZUNvbXBvc2l0ZSBpbjI9ImhhcmRBbHBoYSIgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGsyPSItMSIgazM9IjEiLz4NCjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwIDAgMCAwIDEgMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwLjE2IDAiLz4NCjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW4yPSJlZmZlY3QyX2lubmVyU2hhZG93IiByZXN1bHQ9ImVmZmVjdDNfaW5uZXJTaGFkb3ciLz4NCjwvZmlsdGVyPg0KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyIiB4MT0iLTAuMzk1MDAxIiB5MT0iMjMuMTI4MiIgeDI9IjIwLjEwNTgiIHkyPSIzNy44NDc0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+DQo8c3RvcCBzdG9wLWNvbG9yPSIjRUZFRkVGIi8+DQo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IndoaXRlIi8+DQo8L2xpbmVhckdyYWRpZW50Pg0KPC9kZWZzPg0KPC9zdmc+DQo=",
@@ -1116,7 +1126,8 @@ const dummyDefaultProps = {
1116
1126
  dir: "auto",
1117
1127
  hideOOOHPane: false,
1118
1128
  hideTitle: false,
1119
- titleText: "Thanks for contacting us. You have reached us outside of our operating hours. An agent will respond when we open."
1129
+ titleText: "Thanks for contacting us. You have reached us outside of our operating hours. An agent will respond when we open. Please see link https://microsoft.com",
1130
+ openLinkInNewTab: true
1120
1131
  },
1121
1132
  styleProps: {
1122
1133
  generalStyleProps: {
@@ -1159,7 +1170,7 @@ const dummyDefaultProps = {
1159
1170
  subtitleText: "Please take a moment to give us feedback about your chat experience. We are loading the survey for you now."
1160
1171
  },
1161
1172
  styleProps: {
1162
- // ...[Existing chat button style props]
1173
+ // ...[Existing loading pane style props]
1163
1174
  generalStyleProps: {
1164
1175
  position: "initial",
1165
1176
  width: "100%",
@@ -1190,6 +1201,47 @@ const dummyDefaultProps = {
1190
1201
  },
1191
1202
  isCustomerVoiceSurveyCompact: undefined
1192
1203
  },
1204
+ preChatSurveyPaneProps: {
1205
+ controlProps: {
1206
+ id: "oc-lcw-prechatsurveypane-default",
1207
+ dir: "auto",
1208
+ hidePreChatSurveyPane: false,
1209
+ adaptiveCardHostConfig: "{\"fontFamily\":\"Segoe UI, Helvetica Neue, sans-serif\",\"containerStyles\":{\"default\":{\"foregroundColors\":{\"default\":{\"default\":\"#000000\"}},\"backgroundColor\":\"#FFFFFF\"}},\"actions\":{\"actionsOrientation\":\"Vertical\",\"actionAlignment\":\"stretch\"}}",
1210
+ payload: "{\"$schema\":\"http://adaptivecards.io/schemas/adaptive-card.json\",\"type\":\"AdaptiveCard\",\"version\":\"1.1\",\"body\":[{\"type\":\"TextBlock\",\"weight\":\"bolder\",\"text\":\"Please answer below questions.\"},{\"type\":\"Input.Text\",\"id\":\"1e5e4e7a-8f0b-ec11-b6e6-000d3a305d38\",\"label\":\"name pls?\",\"maxLength\":100,\"isRequired\":true,\"errorMessage\":\"Name is required\"},{\"type\":\"Input.Text\",\"id\":\"7f8f5d6d-995e-ec11-8f8f-000d3a31376e\",\"label\":\"multi\\nmulti\\nmulti\",\"style\":\"text\",\"isMultiline\":true,\"maxLength\":250},{\"type\":\"Input.ChoiceSet\",\"id\":\"e4bdf7cb-995e-ec11-8f8f-000d3a31376e\",\"label\":\"options\",\"isMultiSelect\":false,\"value\":\"1\",\"style\":\"compact\",\"choices\":[{\"title\":\"one\",\"value\":\"1\"},{\"title\":\"two\",\"value\":\"2\"},{\"title\":\"three\",\"value\":\"3\"}]},{\"type\":\"Input.Toggle\",\"id\":\"b26011d2-995e-ec11-8f8f-000d3a31376e\",\"title\":\"consent\",\"valueOn\":\"True\",\"valueOff\":\"False\",\"value\":\"false\"},{\"type\":\"TextBlock\",\"isSubtle\":true,\"text\":\"Fields marked with * are mandatory.\",\"wrap\":true}],\"actions\":[{\"type\":\"Action.Submit\",\"title\":\"Submit\",\"data\":{\"Type\":\"InputSubmit\"}}]}",
1211
+ onSubmit: function () {} // Detailed implementation omitted
1212
+ },
1213
+
1214
+ styleProps: {
1215
+ generalStyleProps: {
1216
+ borderStyle: "solid",
1217
+ borderRadius: "4px",
1218
+ borderWidth: "0px",
1219
+ backgroundColor: "#FFFFFF",
1220
+ borderColor: "#F1F1F1",
1221
+ overflowY: "auto",
1222
+ height: "inherit",
1223
+ width: "inherit"
1224
+ },
1225
+ customButtonStyleProps: {
1226
+ backgroundColor: "rgb(49, 95, 162)",
1227
+ color: "#FFFFFF",
1228
+ fontFamily: "Segoe UI, Arial, sans-serif",
1229
+ fontSize: "15px",
1230
+ height: "48px"
1231
+ },
1232
+ adaptiveCardContainerStyleProps: {
1233
+ border: "1px solid #ECECEC",
1234
+ borderRadius: "4px",
1235
+ margin: "3%"
1236
+ },
1237
+ customTextInputStyleProps: {
1238
+ height: "20px"
1239
+ },
1240
+ customMultilineTextInputStyleProps: {
1241
+ height: "52px"
1242
+ }
1243
+ }
1244
+ },
1193
1245
  proactiveChatPaneProps: {
1194
1246
  componentOverrides: {
1195
1247
  title: undefined,
@@ -1568,10 +1620,10 @@ const dummyDefaultProps = {
1568
1620
  padding: "0px 10px 0 10px"
1569
1621
  },
1570
1622
  userMessageBoxStyles: {
1571
- maxWidth: "75%"
1623
+ maxWidth: "90%"
1572
1624
  },
1573
1625
  systemMessageBoxStyles: {
1574
- maxWidth: "75%"
1626
+ maxWidth: "90%"
1575
1627
  },
1576
1628
  typingIndicatorStyleProps: {
1577
1629
  marginLeft: "10px",
@@ -11,21 +11,17 @@ var _LiveChatWidgetActionType = require("../../../contexts/common/LiveChatWidget
11
11
  var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
12
12
  var _WebChatStoreLoader = require("../../webchatcontainerstateful/webchatcontroller/WebChatStoreLoader");
13
13
  var _defaultWebChatContainerStatefulProps = require("../../webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps");
14
- var _PostChatSurveyMode = require("../../postchatsurveypanestateful/enums/PostChatSurveyMode");
15
- var _Constants = require("../../../common/Constants");
16
14
  var _utils = require("../../../common/utils");
17
15
  var _authHelper = require("./authHelper");
16
+ var _setPostChatContextAndLoadSurvey = require("./setPostChatContextAndLoadSurvey");
17
+ var _ConversationEndEntity = require("../../../contexts/common/ConversationEndEntity");
18
18
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
19
  const prepareEndChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state) => {
20
- var _state$domainStates$l, _state$domainStates$l2, _state$domainStates$l3, _state$domainStates$l4, _conversationDetails;
21
- 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;
22
- 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;
23
-
24
20
  //Unable to end chat if token has expired
25
21
  if (props.getAuthToken) {
26
22
  const authClientFunction = (0, _authHelper.getAuthClientFunction)(props.chatConfig);
27
23
  if (props.getAuthToken && authClientFunction) {
28
- // set auth token to chat sdk before start chat
24
+ // set auth token to chat sdk before end chat
29
25
  const authSuccess = await (0, _authHelper.handleAuthentication)(chatSDK, props.chatConfig, props.getAuthToken);
30
26
  if (!authSuccess) {
31
27
  _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
@@ -37,48 +33,28 @@ const prepareEndChat = async (props, chatSDK, setAdapter, setWebChatStyles, disp
37
33
  }
38
34
  }
39
35
  }
40
-
41
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
- let conversationDetails = undefined;
43
- try {
44
- conversationDetails = await chatSDK.getConversationDetails();
45
- } catch (erorr) {
46
- _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
47
- Event: _TelemetryConstants.TelemetryEvent.GetConversationDetailsException,
48
- ExceptionDetails: {
49
- exception: `Failed to get conversation details: ${erorr}`
50
- }
51
- });
52
- }
53
- if (isPostChatEnabled === "true" && ((_conversationDetails = conversationDetails) === null || _conversationDetails === void 0 ? void 0 : _conversationDetails.canRenderPostChat) === _Constants.Constants.truePascal) {
54
- const skipEndChatSDK = false;
55
- const skipCloseChat = true;
56
- const chatSession = await (chatSDK === null || chatSDK === void 0 ? void 0 : chatSDK.getCurrentLiveChatContext());
57
- await endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, skipEndChatSDK, skipCloseChat, false);
58
- if (chatSession) {
59
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
- chatSDK.chatToken = chatSession.chatToken ?? {};
61
- chatSDK.requestId = chatSession.requestId;
36
+ const isPostChatEnabled = (0, _setPostChatContextAndLoadSurvey.checkPostChatEnabled)(props, state);
37
+ if (isPostChatEnabled) {
38
+ try {
39
+ await (0, _setPostChatContextAndLoadSurvey.initiatePostChat)(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, state);
40
+ } catch (error) {
41
+ // Ending chat because something went wrong
42
+ await endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, true);
62
43
  }
63
- if (postChatSurveyMode === _PostChatSurveyMode.PostChatSurveyMode.Embed) {
44
+ } else {
45
+ if (state.appStates.conversationEndedBy === _ConversationEndEntity.ConversationEndEntity.Agent) {
64
46
  dispatch({
65
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
66
- payload: _ConversationState.ConversationState.PostchatLoading
67
- });
68
- await (0, _utils.addDelayInMs)(_Constants.Constants.PostChatLoadingDurationInMs);
69
- const loadPostChatEvent = {
70
- eventName: _TelemetryConstants.BroadcastEvent.LoadPostChatSurvey
71
- };
72
- _omnichannelChatComponents.BroadcastService.postMessage(loadPostChatEvent);
73
- } else if (postChatSurveyMode === _PostChatSurveyMode.PostChatSurveyMode.Link) {
47
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CHAT_TOKEN,
48
+ payload: undefined
49
+ });
74
50
  dispatch({
75
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
76
- payload: _ConversationState.ConversationState.InActive
51
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_LIVE_CHAT_CONTEXT,
52
+ payload: undefined
77
53
  });
54
+ } else {
55
+ await endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, true);
78
56
  }
79
- return;
80
57
  }
81
- await endChat(props, chatSDK, setAdapter, setWebChatStyles, dispatch, adapter, false, false, true);
82
58
  };
83
59
 
84
60
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -100,7 +76,6 @@ const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, a
100
76
  postMessageToOtherTab = false;
101
77
  }
102
78
  }
103
-
104
79
  // Need to clear these states immediately when chat ended from OC.
105
80
  dispatch({
106
81
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CUSTOM_CONTEXT,
@@ -133,9 +108,21 @@ const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, a
133
108
  payload: _ConversationState.ConversationState.Closed
134
109
  });
135
110
  dispatch({
136
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY_AGENT,
111
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_POST_CHAT_WORKFLOW_IN_PROGRESS,
112
+ payload: false
113
+ });
114
+ dispatch({
115
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_SHOULD_USE_BOT_SURVEY,
137
116
  payload: false
138
117
  });
118
+ dispatch({
119
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY_AGENT_EVENT_RECEIVED,
120
+ payload: false
121
+ });
122
+ dispatch({
123
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY,
124
+ payload: undefined
125
+ });
139
126
  dispatch({
140
127
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_RECONNECT_ID,
141
128
  payload: undefined
@@ -144,10 +131,6 @@ const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, a
144
131
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_AUDIO_NOTIFICATION,
145
132
  payload: null
146
133
  });
147
- dispatch({
148
- type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_UNREAD_MESSAGE_COUNT,
149
- payload: 0
150
- });
151
134
  dispatch({
152
135
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_PROACTIVE_CHAT_PARAMS,
153
136
  payload: {
@@ -163,6 +146,10 @@ const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, a
163
146
  eventName: endChatEventName
164
147
  });
165
148
  }
149
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
150
+ Event: _TelemetryConstants.TelemetryEvent.CloseChatCall,
151
+ Description: "Chat was closed succesfully"
152
+ });
166
153
  } catch (error) {
167
154
  _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
168
155
  Event: _TelemetryConstants.TelemetryEvent.CloseChatMethodException,
@@ -170,6 +157,11 @@ const endChat = async (props, chatSDK, setAdapter, setWebChatStyles, dispatch, a
170
157
  exception: `Failed to endChat: ${error}`
171
158
  }
172
159
  });
160
+ } finally {
161
+ dispatch({
162
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_UNREAD_MESSAGE_COUNT,
163
+ payload: 0
164
+ });
173
165
  }
174
166
  }
175
167
  };