@microsoft/omnichannel-chat-widget 0.1.0-main.df02f14 → 0.1.0-main.e312ecd

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 (56) hide show
  1. package/lib/cjs/common/storage/default/defaultCacheManager.js +34 -0
  2. package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +114 -0
  3. package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +86 -0
  4. package/lib/cjs/common/telemetry/TelemetryConstants.js +13 -0
  5. package/lib/cjs/common/telemetry/loggers/ariaTelemetryLogger.js +31 -18
  6. package/lib/cjs/components/footerstateful/FooterStateful.js +1 -8
  7. package/lib/cjs/components/livechatwidget/common/authHelper.js +65 -0
  8. package/lib/cjs/components/livechatwidget/common/createFooter.js +7 -16
  9. package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +12 -0
  10. package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +21 -3
  11. package/lib/cjs/components/livechatwidget/common/initWebChatComposer.js +4 -0
  12. package/lib/cjs/components/livechatwidget/common/reconnectChatHelper.js +35 -23
  13. package/lib/cjs/components/livechatwidget/common/startChat.js +15 -34
  14. package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +89 -52
  15. package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +16 -2
  16. package/lib/cjs/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +4 -1
  17. package/lib/cjs/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +11 -0
  18. package/lib/cjs/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  19. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +2 -1
  20. package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
  21. package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +10 -3
  22. package/lib/esm/common/storage/default/defaultCacheManager.js +19 -0
  23. package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +102 -0
  24. package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +71 -0
  25. package/lib/esm/common/telemetry/TelemetryConstants.js +13 -0
  26. package/lib/esm/common/telemetry/loggers/ariaTelemetryLogger.js +29 -13
  27. package/lib/esm/components/footerstateful/FooterStateful.js +1 -8
  28. package/lib/esm/components/livechatwidget/common/authHelper.js +50 -0
  29. package/lib/esm/components/livechatwidget/common/createFooter.js +4 -15
  30. package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +8 -0
  31. package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +21 -3
  32. package/lib/esm/components/livechatwidget/common/initWebChatComposer.js +4 -0
  33. package/lib/esm/components/livechatwidget/common/reconnectChatHelper.js +36 -25
  34. package/lib/esm/components/livechatwidget/common/startChat.js +16 -35
  35. package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +89 -52
  36. package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +14 -2
  37. package/lib/esm/components/webchatcontainerstateful/common/defaultProps/defaultWebChatContainerStatefulProps.js +3 -1
  38. package/lib/esm/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.js +4 -0
  39. package/lib/esm/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.js +1 -0
  40. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +2 -1
  41. package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
  42. package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +8 -3
  43. package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
  44. package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
  45. package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
  46. package/lib/types/common/telemetry/TelemetryConstants.d.ts +5 -1
  47. package/lib/types/components/livechatwidget/common/authHelper.d.ts +5 -0
  48. package/lib/types/components/livechatwidget/common/reconnectChatHelper.d.ts +4 -4
  49. package/lib/types/components/webchatcontainerstateful/common/defaultStyles/defaultAdaptiveCardStyles.d.ts +2 -0
  50. package/lib/types/components/webchatcontainerstateful/interfaces/IAdaptiveCardStyles.d.ts +4 -0
  51. package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +2 -1
  52. package/lib/types/components/webchatcontainerstateful/interfaces/IWebChatContainerStatefulProps.d.ts +2 -0
  53. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
  54. package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
  55. package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
  56. package/package.json +2 -2
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.registerBroadcastServiceForLocalStorage = exports.defaultCacheManager = void 0;
7
+
8
+ var _omnichannelChatComponents = require("@microsoft/omnichannel-chat-components");
9
+
10
+ var _utils = require("../../utils");
11
+
12
+ var _defaultClientDataStoreProvider = require("./defaultClientDataStoreProvider");
13
+
14
+ 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; }
15
+
16
+ class defaultCacheManager {}
17
+
18
+ exports.defaultCacheManager = defaultCacheManager;
19
+
20
+ _defineProperty(defaultCacheManager, "InternalCache", {});
21
+
22
+ const registerBroadcastServiceForLocalStorage = (orgid, widgetId, widgetInstanceId) => {
23
+ const widgetCacheId = (0, _utils.getWidgetCacheId)(orgid, widgetId, widgetInstanceId);
24
+
25
+ _omnichannelChatComponents.BroadcastService.getMessageByEventName(widgetCacheId).subscribe(msg => {
26
+ try {
27
+ (0, _defaultClientDataStoreProvider.defaultClientDataStoreProvider)().setData(widgetCacheId, JSON.stringify(msg.payload), "localStorage");
28
+ } catch (error) {
29
+ console.error("Error in setting data to localstorage", error);
30
+ }
31
+ });
32
+ };
33
+
34
+ exports.registerBroadcastServiceForLocalStorage = registerBroadcastServiceForLocalStorage;
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.defaultClientDataStoreProvider = void 0;
7
+
8
+ var _defaultInMemoryDataStore = require("./defaultInMemoryDataStore");
9
+
10
+ var _TelemetryHelper = require("../../telemetry/TelemetryHelper");
11
+
12
+ var _TelemetryConstants = require("../../telemetry/TelemetryConstants");
13
+
14
+ const defaultClientDataStoreProvider = () => {
15
+ const isCookieAllowed = () => {
16
+ try {
17
+ localStorage;
18
+ sessionStorage;
19
+ return true;
20
+ } catch (error) {
21
+ console.error("Third party cookie blocked");
22
+ return false;
23
+ }
24
+ };
25
+
26
+ const TtlInMs = 15 * 60 * 1000; // 15 mins
27
+
28
+ const dataStoreProvider = {
29
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
30
+ setData: (key, data, type) => {
31
+ if (isCookieAllowed()) {
32
+ try {
33
+ if (key) {
34
+ const now = new Date();
35
+ const item = {
36
+ data: data,
37
+ expiry: now.getTime() + TtlInMs
38
+ };
39
+ const strItem = JSON.stringify(item);
40
+
41
+ if (type === "localStorage") {
42
+ localStorage.setItem(key, strItem);
43
+ } else {
44
+ sessionStorage.setItem(key, strItem);
45
+ }
46
+ }
47
+ } catch (error) {
48
+ _TelemetryHelper.TelemetryHelper.logConfigDataEvent(_TelemetryConstants.LogLevel.ERROR, {
49
+ Event: _TelemetryConstants.TelemetryEvent.ClientDataStoreProviderFailed,
50
+ ExceptionDetails: error,
51
+ Description: "Unable to store data in localStorage."
52
+ });
53
+ }
54
+ } else {
55
+ const dataToCache = {
56
+ key: key,
57
+ data: data,
58
+ type: type
59
+ };
60
+ parent.postMessage(dataToCache, "*");
61
+ }
62
+ },
63
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
64
+ getData: (key, type) => {
65
+ if (isCookieAllowed()) {
66
+ let item;
67
+
68
+ if (type === "localStorage") {
69
+ item = localStorage.getItem(key);
70
+ } else {
71
+ item = sessionStorage.getItem(key);
72
+ } //Return item if not expired
73
+
74
+
75
+ let itemInJson = undefined;
76
+
77
+ if (item !== null) {
78
+ itemInJson = JSON.parse(item);
79
+ const now = new Date(); // compare the expiry time of the item with the current time
80
+
81
+ if (now.getTime() > itemInJson.expiry) {
82
+ // If the item is expired, delete the item from storage
83
+ // and return null
84
+ localStorage.removeItem(key);
85
+ return null;
86
+ }
87
+
88
+ return itemInJson.data;
89
+ }
90
+ } else {
91
+ // get data from in memory db when cookie is disabled
92
+ return (0, _defaultInMemoryDataStore.inMemoryDataStore)().getData(key);
93
+ }
94
+ },
95
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
96
+ removeData: (key, type) => {
97
+ if (isCookieAllowed()) {
98
+ if (key) {
99
+ if (type === "localStorage") {
100
+ return localStorage.removeItem(key);
101
+ } else {
102
+ return sessionStorage.removeItem(key);
103
+ }
104
+ }
105
+ } else {
106
+ // get data from in memory db when cookie is disabled
107
+ return (0, _defaultInMemoryDataStore.inMemoryDataStore)().removeData(key);
108
+ }
109
+ }
110
+ };
111
+ return dataStoreProvider;
112
+ };
113
+
114
+ exports.defaultClientDataStoreProvider = defaultClientDataStoreProvider;
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.inMemoryDataStore = exports.defaultInitializeInMemoryDataStore = void 0;
7
+
8
+ var _TelemetryConstants = require("../../telemetry/TelemetryConstants");
9
+
10
+ var _TelemetryHelper = require("../../telemetry/TelemetryHelper");
11
+
12
+ var _defaultCacheManager = require("./defaultCacheManager");
13
+
14
+ const defaultInitializeInMemoryDataStore = widgetId => {
15
+ try {
16
+ localStorage;
17
+ } catch (error) {
18
+ // Register below events when localStorage is not accessible
19
+ // Listening to event raised from client browser
20
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
+ window.addEventListener("message", function (e) {
22
+ try {
23
+ if (e.data.key) {
24
+ const browserData = e.data;
25
+
26
+ if (_defaultCacheManager.defaultCacheManager.InternalCache[browserData.key]) {
27
+ delete _defaultCacheManager.defaultCacheManager.InternalCache[browserData.key];
28
+ }
29
+
30
+ _defaultCacheManager.defaultCacheManager.InternalCache[browserData.key] = browserData.data;
31
+ }
32
+ } catch (error) {
33
+ _TelemetryHelper.TelemetryHelper.logConfigDataEvent(_TelemetryConstants.LogLevel.ERROR, {
34
+ Event: _TelemetryConstants.TelemetryEvent.InMemoryDataStoreFailed,
35
+ ExceptionDetails: error,
36
+ Description: "Unable to register default in-memory cache."
37
+ });
38
+ }
39
+ }); // send cache initialize message to client
40
+
41
+ if (_defaultCacheManager.defaultCacheManager.InternalCache === undefined || {}) {
42
+ parent.postMessage({
43
+ data: "cacheinitialize",
44
+ widgetId: widgetId
45
+ }, "*");
46
+ }
47
+ }
48
+ };
49
+
50
+ exports.defaultInitializeInMemoryDataStore = defaultInitializeInMemoryDataStore;
51
+
52
+ const inMemoryDataStore = () => {
53
+ const dataStoreProvider = {
54
+ getData: key => {
55
+ if (_defaultCacheManager.defaultCacheManager.InternalCache && _defaultCacheManager.defaultCacheManager.InternalCache[key]) {
56
+ return _defaultCacheManager.defaultCacheManager.InternalCache[key];
57
+ }
58
+ },
59
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
+ setData: (key, data) => {
61
+ try {
62
+ _defaultCacheManager.defaultCacheManager.InternalCache[key] = data;
63
+ } catch (error) {
64
+ _TelemetryHelper.TelemetryHelper.logConfigDataEvent(_TelemetryConstants.LogLevel.ERROR, {
65
+ Event: _TelemetryConstants.TelemetryEvent.InMemoryDataStoreFailed,
66
+ ExceptionDetails: error,
67
+ Description: "Unable to set data in default in-memory cache."
68
+ });
69
+ }
70
+ },
71
+ removeData: key => {
72
+ try {
73
+ _defaultCacheManager.defaultCacheManager.InternalCache[key] = {};
74
+ } catch (error) {
75
+ _TelemetryHelper.TelemetryHelper.logConfigDataEvent(_TelemetryConstants.LogLevel.ERROR, {
76
+ Event: _TelemetryConstants.TelemetryEvent.InMemoryDataStoreFailed,
77
+ ExceptionDetails: error,
78
+ Description: "Unable to remove data from default in-memory cache."
79
+ });
80
+ }
81
+ }
82
+ };
83
+ return dataStoreProvider;
84
+ };
85
+
86
+ exports.inMemoryDataStore = inMemoryDataStore;
@@ -101,6 +101,8 @@ exports.TelemetryEvent = TelemetryEvent;
101
101
  TelemetryEvent["PostChatContextCallSucceed"] = "PostChatContextCallSucceed";
102
102
  TelemetryEvent["PostChatContextCallFailed"] = "PostChatContextCallFailed";
103
103
  TelemetryEvent["ParseAdaptiveCardFailed"] = "ParseAdaptiveCardFailed";
104
+ TelemetryEvent["ClientDataStoreProviderFailed"] = "ClientDataStoreProviderFailed";
105
+ TelemetryEvent["InMemoryDataStoreFailed"] = "InMemoryDataStoreFailed";
104
106
  TelemetryEvent["WebChatLoaded"] = "WebChatLoaded";
105
107
  TelemetryEvent["LCWChatButtonClicked"] = "LCWChatButtonClicked";
106
108
  TelemetryEvent["LCWChatButtonShow"] = "LCWChatButtonShow";
@@ -171,12 +173,18 @@ exports.TelemetryEvent = TelemetryEvent;
171
173
  TelemetryEvent["MessageSent"] = "MessageSent";
172
174
  TelemetryEvent["MessageReceived"] = "MessageReceived";
173
175
  TelemetryEvent["CustomContextReceived"] = "CustomContextReceived";
176
+ TelemetryEvent["NetworkDisconnected"] = "NetworkDisconnected";
177
+ TelemetryEvent["NetworkReconnected"] = "NetworkReconnected";
174
178
  })(TelemetryEvent || (exports.TelemetryEvent = TelemetryEvent = {}));
175
179
 
176
180
  class TelemetryConstants {
177
181
  static map(eventTypeOrScenarioType) {
178
182
  switch (eventTypeOrScenarioType) {
179
183
  case TelemetryEvent.ParseAdaptiveCardFailed:
184
+ case TelemetryEvent.ReceivedNullOrEmptyToken:
185
+ case TelemetryEvent.GetAuthTokenCalled:
186
+ case TelemetryEvent.SuppressBotMagicCodeSucceeded:
187
+ case TelemetryEvent.SuppressBotMagicCodeFailed:
180
188
  return ScenarioType.CONFIG_VALIDATION;
181
189
 
182
190
  case TelemetryEvent.WebChatLoaded:
@@ -217,6 +225,10 @@ class TelemetryConstants {
217
225
  case TelemetryEvent.MessageReceived:
218
226
  case TelemetryEvent.CustomContextReceived:
219
227
  case TelemetryEvent.BrowserUnloadEventStarted:
228
+ case TelemetryEvent.NetworkDisconnected:
229
+ case TelemetryEvent.NetworkReconnected:
230
+ case TelemetryEvent.AudioToggleButtonClicked:
231
+ case TelemetryEvent.EmailTranscriptCancelButtonClicked:
220
232
  return ScenarioType.ACTIONS;
221
233
 
222
234
  case TelemetryEvent.StartChatSDKCall:
@@ -233,6 +245,7 @@ class TelemetryConstants {
233
245
  case TelemetryEvent.EndChatSDKCallFailed:
234
246
  case TelemetryEvent.PostChatContextCallFailed:
235
247
  case TelemetryEvent.PostChatContextCallSucceed:
248
+ case TelemetryEvent.GetConversationDetailsException:
236
249
  return ScenarioType.SDK;
237
250
 
238
251
  case TelemetryEvent.VideoCallAcceptButtonClick:
@@ -7,9 +7,7 @@ exports.ariaTelemetryLogger = void 0;
7
7
 
8
8
  var _utils = require("../../utils");
9
9
 
10
- var _AWTEventProperties = _interopRequireDefault(require("@microsoft/omnichannel-chat-sdk/lib/external/aria/webjs/AWTEventProperties"));
11
-
12
- var _AWTLogManager = _interopRequireDefault(require("@microsoft/omnichannel-chat-sdk/lib/external/aria/webjs/AWTLogManager"));
10
+ var _AriaSDK = require("@microsoft/omnichannel-chat-sdk/lib/external/aria/webjs/AriaSDK");
13
11
 
14
12
  var _Enums = require("@microsoft/omnichannel-chat-sdk/lib/external/aria/common/Enums");
15
13
 
@@ -17,8 +15,6 @@ var _Constants = require("../../Constants");
17
15
 
18
16
  var _TelemetryManager = require("../TelemetryManager");
19
17
 
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
-
22
18
  const ariaTelemetryLogger = (ariaTelemetryKey, disabledCookieUsage, collectiorUriForTelemetry, ariaTelemetryApplicationName) => {
23
19
  let _logger;
24
20
 
@@ -48,10 +44,10 @@ const ariaTelemetryLogger = (ariaTelemetryKey, disabledCookieUsage, collectiorUr
48
44
  }
49
45
 
50
46
  try {
51
- _logger = _AWTLogManager.default.initialize(ariaTelemetryKey, configuration);
47
+ _logger = _AriaSDK.AWTLogManager.initialize(ariaTelemetryKey, configuration);
52
48
 
53
49
  if (_logger === undefined) {
54
- _logger = _AWTLogManager.default.getLogger(ariaTelemetryKey);
50
+ _logger = _AriaSDK.AWTLogManager.getLogger(ariaTelemetryKey);
55
51
  }
56
52
  } catch (error) {
57
53
  console.log(error);
@@ -64,18 +60,35 @@ const ariaTelemetryLogger = (ariaTelemetryKey, disabledCookieUsage, collectiorUr
64
60
  const ariaLogger = {
65
61
  log: (logLevel, telemetryInput) => {
66
62
  try {
67
- let property;
68
- const telemetryInfo = telemetryInput === null || telemetryInput === void 0 ? void 0 : telemetryInput.telemetryInfo;
69
- const eventProperties = new _AWTEventProperties.default();
70
- eventProperties.setName(telemetryInput.scenarioType);
63
+ var _telemetryInput$telem;
71
64
 
72
- if (telemetryInfo) {
73
- for (const key of Object.keys(telemetryInfo)) {
74
- property = typeof telemetryInfo[key] === "object" ? JSON.stringify(telemetryInfo[key]) : telemetryInfo[key];
75
- eventProperties.setProperty(key, property);
76
- }
65
+ const telemetryInfo = telemetryInput === null || telemetryInput === void 0 ? void 0 : (_telemetryInput$telem = telemetryInput.telemetryInfo) === null || _telemetryInput$telem === void 0 ? void 0 : _telemetryInput$telem.telemetryInfo; // eslint-disable-next-line @typescript-eslint/no-explicit-any
77
66
 
78
- eventProperties.setPropertyWithPii(ariaTelemetryApplicationName, _Constants.Constants.LiveChatWidget, _Enums.AWTPiiKind.GenericData);
67
+ const eventProperties = {
68
+ name: telemetryInput.scenarioType,
69
+ properties: {}
70
+ };
71
+
72
+ if (telemetryInfo) {
73
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
74
+ Object.keys(telemetryInfo).forEach((key, index) => {
75
+ if (!(0, _utils.isNullOrUndefined)(telemetryInfo[key]) && !(0, _utils.isNullOrEmptyString)(telemetryInfo[key])) {
76
+ const property = {
77
+ value: typeof telemetryInfo[key] === "object" ? JSON.stringify(telemetryInfo[key]) : telemetryInfo[key],
78
+ type: typeof telemetryInfo[key] === "number" ? _Enums.AWTPropertyType.Double : _Enums.AWTPropertyType.String,
79
+ pii: _Enums.AWTPiiKind.NotSet,
80
+ cc: _Enums.AWTCustomerContentKind.NotSet
81
+ };
82
+ eventProperties.properties[key] = property;
83
+ }
84
+ });
85
+ const nameProperty = {
86
+ value: _Constants.Constants.LiveChatWidget,
87
+ type: _Enums.AWTPropertyType.String,
88
+ pii: _Enums.AWTPiiKind.GenericData,
89
+ cc: _Enums.AWTCustomerContentKind.NotSet
90
+ };
91
+ eventProperties.properties[ariaTelemetryApplicationName] = nameProperty;
79
92
  }
80
93
 
81
94
  logger() ? logger().logEvent(eventProperties) : console.log("Unable to initialize aria logger");
@@ -84,7 +97,7 @@ const ariaTelemetryLogger = (ariaTelemetryKey, disabledCookieUsage, collectiorUr
84
97
  }
85
98
  },
86
99
  dispose: () => {
87
- _AWTLogManager.default.flush(function () {
100
+ _AriaSDK.AWTLogManager.flush(function () {
88
101
  console.log("Aria logger disposed");
89
102
  });
90
103
  }
@@ -110,14 +110,7 @@ const FooterStateful = props => {
110
110
  isAudioMuted: state.appStates.isAudioMuted
111
111
  }
112
112
  };
113
- const footerId = (controlProps === null || controlProps === void 0 ? void 0 : controlProps.id) ?? "oc-lcw-footer";
114
- const footer = document.getElementById(footerId);
115
-
116
- if (footer) {
117
- footer.style.display = hideFooterDisplay ? "none" : "";
118
- }
119
-
120
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.Footer, {
113
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !hideFooterDisplay && /*#__PURE__*/_react.default.createElement(_omnichannelChatComponents.Footer, {
121
114
  componentOverrides: footerProps === null || footerProps === void 0 ? void 0 : footerProps.componentOverrides,
122
115
  controlProps: controlProps,
123
116
  styleProps: footerProps === null || footerProps === void 0 ? void 0 : footerProps.styleProps
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.removeAuthTokenProvider = exports.handleAuthentication = exports.getAuthClientFunction = void 0;
7
+
8
+ var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
9
+
10
+ var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
11
+
12
+ var _utils = require("../../../common/utils");
13
+
14
+ const getAuthClientFunction = chatConfig => {
15
+ let authClientFunction = undefined;
16
+
17
+ if (chatConfig !== null && chatConfig !== void 0 && chatConfig.LiveChatConfigAuthSettings) {
18
+ var _chatConfig$LiveChatC;
19
+
20
+ authClientFunction = (chatConfig === null || chatConfig === void 0 ? void 0 : (_chatConfig$LiveChatC = chatConfig.LiveChatConfigAuthSettings) === null || _chatConfig$LiveChatC === void 0 ? void 0 : _chatConfig$LiveChatC.msdyn_javascriptclientfunction) ?? undefined;
21
+ }
22
+
23
+ return authClientFunction;
24
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
+
26
+
27
+ exports.getAuthClientFunction = getAuthClientFunction;
28
+
29
+ const handleAuthentication = async (chatSDK, chatConfig, getAuthToken) => {
30
+ const authClientFunction = getAuthClientFunction(chatConfig);
31
+
32
+ if (getAuthToken && authClientFunction) {
33
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
34
+ Event: _TelemetryConstants.TelemetryEvent.GetAuthTokenCalled
35
+ });
36
+
37
+ const token = await getAuthToken(authClientFunction);
38
+
39
+ if (!(0, _utils.isNullOrEmptyString)(token)) {
40
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
+ chatSDK.setAuthTokenProvider(async () => {
42
+ return token;
43
+ });
44
+ return true;
45
+ } else {
46
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
47
+ Event: _TelemetryConstants.TelemetryEvent.ReceivedNullOrEmptyToken
48
+ });
49
+
50
+ return false;
51
+ }
52
+ }
53
+
54
+ return false;
55
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
56
+
57
+
58
+ exports.handleAuthentication = handleAuthentication;
59
+
60
+ const removeAuthTokenProvider = chatSDK => {
61
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
62
+ chatSDK.authenticatedUserToken = null;
63
+ };
64
+
65
+ exports.removeAuthTokenProvider = removeAuthTokenProvider;
@@ -16,26 +16,17 @@ var _componentController = require("../../../controller/componentController");
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
 
18
18
  const createFooter = (props, state) => {
19
- var _props$footerProps, _props$controlProps, _props$componentOverr, _props$componentOverr2;
20
-
21
- const footerPropsHidden = { ...props.footerProps,
22
- controlProps: { ...((_props$footerProps = props.footerProps) === null || _props$footerProps === void 0 ? void 0 : _props$footerProps.controlProps),
23
- hideDownloadTranscriptButton: true,
24
- hideEmailTranscriptButton: true,
25
- hideAudioNotificationButton: true
26
- }
27
- };
28
- const footer = !((_props$controlProps = props.controlProps) !== null && _props$controlProps !== void 0 && _props$controlProps.hideFooter) && (0, _componentController.shouldShowFooter)(state) ? (0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr = props.componentOverrides) === null || _props$componentOverr === void 0 ? void 0 : _props$componentOverr.footer) || /*#__PURE__*/_react.default.createElement(_FooterStateful.default, {
19
+ var _props$controlProps, _props$componentOverr;
20
+
21
+ const hideFooterDisplay = !((_props$controlProps = props.controlProps) !== null && _props$controlProps !== void 0 && _props$controlProps.hideFooter) && (0, _componentController.shouldShowFooter)(state) ? false : true;
22
+
23
+ const footer = (0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr = props.componentOverrides) === null || _props$componentOverr === void 0 ? void 0 : _props$componentOverr.footer) || /*#__PURE__*/_react.default.createElement(_FooterStateful.default, {
29
24
  footerProps: props.footerProps,
30
25
  downloadTranscriptProps: props.downloadTranscriptProps,
31
26
  audioNotificationProps: props.audioNotificationProps,
32
- hideFooterDisplay: false
33
- }) : (0, _omnichannelChatComponents.decodeComponentString)((_props$componentOverr2 = props.componentOverrides) === null || _props$componentOverr2 === void 0 ? void 0 : _props$componentOverr2.footer) || /*#__PURE__*/_react.default.createElement(_FooterStateful.default, {
34
- footerProps: footerPropsHidden,
35
- downloadTranscriptProps: props.downloadTranscriptProps,
36
- audioNotificationProps: props.audioNotificationProps,
37
- hideFooterDisplay: true
27
+ hideFooterDisplay: hideFooterDisplay
38
28
  });
29
+
39
30
  return footer;
40
31
  };
41
32
 
@@ -13,6 +13,10 @@ var _NotificationScenarios = require("../../webchatcontainerstateful/webchatcont
13
13
 
14
14
  var _defaultMiddlewareLocalizedTexts = require("../../webchatcontainerstateful/common/defaultProps/defaultMiddlewareLocalizedTexts");
15
15
 
16
+ var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
17
+
18
+ var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
19
+
16
20
  const isInternetConnected = async () => {
17
21
  try {
18
22
  const response = await fetch(_Constants.Constants.internetConnectionTestUrl);
@@ -28,8 +32,16 @@ const createInternetConnectionChangeHandler = async () => {
28
32
  const connected = await isInternetConnected();
29
33
 
30
34
  if (!connected) {
35
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.WARN, {
36
+ Event: _TelemetryConstants.TelemetryEvent.NetworkDisconnected
37
+ });
38
+
31
39
  _NotificationHandler.NotificationHandler.notifyError(_NotificationScenarios.NotificationScenarios.InternetConnection, _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.MIDDLEWARE_BANNER_NO_INTERNET_CONNECTION);
32
40
  } else {
41
+ _TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.WARN, {
42
+ Event: _TelemetryConstants.TelemetryEvent.NetworkReconnected
43
+ });
44
+
33
45
  _NotificationHandler.NotificationHandler.notifySuccess(_NotificationScenarios.NotificationScenarios.InternetConnection, _defaultMiddlewareLocalizedTexts.defaultMiddlewareLocalizedTexts.MIDDLEWARE_BANNER_INTERNET_BACK_ONLINE);
34
46
  }
35
47
  }; // Checking connection status on online & offline events due to possible false positives
@@ -339,7 +339,8 @@ const dummyDefaultProps = {
339
339
  hideChatTitle: false,
340
340
  hideNotificationBubble: true,
341
341
  unreadMessageString: "new messages",
342
- largeUnreadMessageString: "99+"
342
+ largeUnreadMessageString: "99+",
343
+ ariaLabelUnreadMessageString: "you have new messages"
343
344
  },
344
345
  styleProps: {
345
346
  generalStyleProps: {
@@ -890,7 +891,7 @@ const dummyDefaultProps = {
890
891
  className: undefined
891
892
  },
892
893
  closeButtonProps: {
893
- id: "oc-lcw-header-minimize-button",
894
+ id: "oc-lcw-header-close-button",
894
895
  type: "icon",
895
896
  iconName: "ChromeClose",
896
897
  ariaLabel: "Close",
@@ -1206,7 +1207,17 @@ const dummyDefaultProps = {
1206
1207
  hideSubtitle: false,
1207
1208
  subtitleText: "Live chat support!",
1208
1209
  hideCloseButton: false,
1209
- closeButtonAriaLabel: "Close Button",
1210
+ closeButtonProps: {
1211
+ id: "oc-lcw-proactivechat-closebutton",
1212
+ type: "icon",
1213
+ iconName: "ChromeClose",
1214
+ ariaLabel: "Close",
1215
+ imageIconProps: undefined,
1216
+ text: "Close",
1217
+ onClick: undefined,
1218
+ className: undefined,
1219
+ hideButtonTitle: true
1220
+ },
1210
1221
  isBodyContainerHorizantal: false,
1211
1222
  hideBodyTitle: false,
1212
1223
  bodyTitleText: "Hi! Have any questions? I am here to help.",
@@ -1675,6 +1686,9 @@ const dummyDefaultProps = {
1675
1686
  },
1676
1687
  attachmentSizeStyles: {
1677
1688
  display: "none"
1689
+ },
1690
+ receivedMessageAnchorStyles: {
1691
+ color: "white"
1678
1692
  }
1679
1693
  },
1680
1694
  localizedTexts: {
@@ -1702,6 +1716,10 @@ const dummyDefaultProps = {
1702
1716
  botMagicCode: {
1703
1717
  disabled: false,
1704
1718
  fwdUrl: ""
1719
+ },
1720
+ adaptiveCardStyles: {
1721
+ background: "white",
1722
+ color: "black"
1705
1723
  }
1706
1724
  },
1707
1725
  telemetryConfig: undefined,
@@ -125,6 +125,10 @@ const initWebChatComposer = (props, chatSDK, state, dispatch, setWebChatStyles)
125
125
  });
126
126
  }
127
127
  } else {
128
+ dispatch({
129
+ type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_STATE,
130
+ payload: _ConversationState.ConversationState.InActive
131
+ });
128
132
  dispatch({
129
133
  type: _LiveChatWidgetActionType.LiveChatWidgetActionType.SET_CONVERSATION_ENDED_BY_AGENT,
130
134
  payload: true