@microsoft/omnichannel-chat-widget 0.1.0-main.99b5123 → 0.1.0-main.a27ec4b
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.
- package/lib/cjs/common/storage/default/defaultCacheManager.js +34 -0
- package/lib/cjs/common/storage/default/defaultClientDataStoreProvider.js +114 -0
- package/lib/cjs/common/storage/default/defaultInMemoryDataStore.js +86 -0
- package/lib/cjs/common/telemetry/TelemetryConstants.js +6 -0
- package/lib/cjs/components/footerstateful/FooterStateful.js +1 -8
- package/lib/cjs/components/livechatwidget/common/authHelper.js +16 -3
- package/lib/cjs/components/livechatwidget/common/createFooter.js +7 -16
- package/lib/cjs/components/livechatwidget/common/createInternetConnectionChangeHandler.js +12 -0
- package/lib/cjs/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +15 -2
- package/lib/cjs/components/livechatwidget/common/startChat.js +12 -3
- package/lib/cjs/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +81 -44
- package/lib/cjs/components/webchatcontainerstateful/WebChatContainerStateful.js +6 -3
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +2 -1
- package/lib/cjs/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +10 -0
- package/lib/cjs/contexts/common/LiveChatWidgetContextInitialState.js +10 -3
- package/lib/esm/common/storage/default/defaultCacheManager.js +19 -0
- package/lib/esm/common/storage/default/defaultClientDataStoreProvider.js +102 -0
- package/lib/esm/common/storage/default/defaultInMemoryDataStore.js +71 -0
- package/lib/esm/common/telemetry/TelemetryConstants.js +6 -0
- package/lib/esm/components/footerstateful/FooterStateful.js +1 -8
- package/lib/esm/components/livechatwidget/common/authHelper.js +14 -3
- package/lib/esm/components/livechatwidget/common/createFooter.js +4 -15
- package/lib/esm/components/livechatwidget/common/createInternetConnectionChangeHandler.js +8 -0
- package/lib/esm/components/livechatwidget/common/defaultProps/dummyDefaultProps.js +15 -2
- package/lib/esm/components/livechatwidget/common/startChat.js +13 -4
- package/lib/esm/components/livechatwidget/livechatwidgetstateful/LiveChatWidgetStateful.js +81 -44
- package/lib/esm/components/webchatcontainerstateful/WebChatContainerStateful.js +5 -3
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.js +2 -1
- package/lib/esm/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.js +3 -0
- package/lib/esm/contexts/common/LiveChatWidgetContextInitialState.js +8 -3
- package/lib/types/common/storage/default/defaultCacheManager.d.ts +4 -0
- package/lib/types/common/storage/default/defaultClientDataStoreProvider.d.ts +2 -0
- package/lib/types/common/storage/default/defaultInMemoryDataStore.d.ts +6 -0
- package/lib/types/common/telemetry/TelemetryConstants.d.ts +5 -1
- package/lib/types/components/livechatwidget/common/authHelper.d.ts +3 -2
- package/lib/types/components/webchatcontainerstateful/interfaces/IRenderingMiddlewareProps.d.ts +2 -1
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/activityStatusMiddleware.d.ts +1 -1
- package/lib/types/components/webchatcontainerstateful/webchatcontroller/middlewares/renderingmiddlewares/defaultStyles/defaultReceivedMessageAnchorStyles.d.ts +2 -0
- package/lib/types/contexts/common/LiveChatWidgetContextInitialState.d.ts +1 -2
- 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,6 +173,8 @@ 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 {
|
|
@@ -217,6 +221,8 @@ class TelemetryConstants {
|
|
|
217
221
|
case TelemetryEvent.MessageReceived:
|
|
218
222
|
case TelemetryEvent.CustomContextReceived:
|
|
219
223
|
case TelemetryEvent.BrowserUnloadEventStarted:
|
|
224
|
+
case TelemetryEvent.NetworkDisconnected:
|
|
225
|
+
case TelemetryEvent.NetworkReconnected:
|
|
220
226
|
return ScenarioType.ACTIONS;
|
|
221
227
|
|
|
222
228
|
case TelemetryEvent.StartChatSDKCall:
|
|
@@ -110,14 +110,7 @@ const FooterStateful = props => {
|
|
|
110
110
|
isAudioMuted: state.appStates.isAudioMuted
|
|
111
111
|
}
|
|
112
112
|
};
|
|
113
|
-
|
|
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
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.removeAuthTokenProvider = exports.handleAuthentication = void 0;
|
|
6
|
+
exports.removeAuthTokenProvider = exports.handleAuthentication = exports.getAuthClientFunction = void 0;
|
|
7
7
|
|
|
8
8
|
var _TelemetryConstants = require("../../../common/telemetry/TelemetryConstants");
|
|
9
9
|
|
|
@@ -11,8 +11,7 @@ var _TelemetryHelper = require("../../../common/telemetry/TelemetryHelper");
|
|
|
11
11
|
|
|
12
12
|
var _utils = require("../../../common/utils");
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
const handleAuthentication = async (chatSDK, chatConfig, getAuthToken) => {
|
|
14
|
+
const getAuthClientFunction = chatConfig => {
|
|
16
15
|
let authClientFunction = undefined;
|
|
17
16
|
|
|
18
17
|
if (chatConfig !== null && chatConfig !== void 0 && chatConfig.LiveChatConfigAuthSettings) {
|
|
@@ -21,6 +20,15 @@ const handleAuthentication = async (chatSDK, chatConfig, getAuthToken) => {
|
|
|
21
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;
|
|
22
21
|
}
|
|
23
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
|
+
|
|
24
32
|
if (getAuthToken && authClientFunction) {
|
|
25
33
|
_TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.INFO, {
|
|
26
34
|
Event: _TelemetryConstants.TelemetryEvent.GetAuthTokenCalled
|
|
@@ -33,12 +41,17 @@ const handleAuthentication = async (chatSDK, chatConfig, getAuthToken) => {
|
|
|
33
41
|
chatSDK.setAuthTokenProvider(async () => {
|
|
34
42
|
return token;
|
|
35
43
|
});
|
|
44
|
+
return true;
|
|
36
45
|
} else {
|
|
37
46
|
_TelemetryHelper.TelemetryHelper.logActionEvent(_TelemetryConstants.LogLevel.ERROR, {
|
|
38
47
|
Event: _TelemetryConstants.TelemetryEvent.ReceivedNullOrEmptyToken
|
|
39
48
|
});
|
|
49
|
+
|
|
50
|
+
return false;
|
|
40
51
|
}
|
|
41
52
|
}
|
|
53
|
+
|
|
54
|
+
return false;
|
|
42
55
|
}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
43
56
|
|
|
44
57
|
|
|
@@ -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$
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
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:
|
|
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
|
|
@@ -891,7 +891,7 @@ const dummyDefaultProps = {
|
|
|
891
891
|
className: undefined
|
|
892
892
|
},
|
|
893
893
|
closeButtonProps: {
|
|
894
|
-
id: "oc-lcw-header-
|
|
894
|
+
id: "oc-lcw-header-close-button",
|
|
895
895
|
type: "icon",
|
|
896
896
|
iconName: "ChromeClose",
|
|
897
897
|
ariaLabel: "Close",
|
|
@@ -1207,7 +1207,17 @@ const dummyDefaultProps = {
|
|
|
1207
1207
|
hideSubtitle: false,
|
|
1208
1208
|
subtitleText: "Live chat support!",
|
|
1209
1209
|
hideCloseButton: false,
|
|
1210
|
-
|
|
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
|
+
},
|
|
1211
1221
|
isBodyContainerHorizantal: false,
|
|
1212
1222
|
hideBodyTitle: false,
|
|
1213
1223
|
bodyTitleText: "Hi! Have any questions? I am here to help.",
|
|
@@ -1676,6 +1686,9 @@ const dummyDefaultProps = {
|
|
|
1676
1686
|
},
|
|
1677
1687
|
attachmentSizeStyles: {
|
|
1678
1688
|
display: "none"
|
|
1689
|
+
},
|
|
1690
|
+
receivedMessageAnchorStyles: {
|
|
1691
|
+
color: "white"
|
|
1679
1692
|
}
|
|
1680
1693
|
},
|
|
1681
1694
|
localizedTexts: {
|
|
@@ -121,6 +121,17 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
|
|
|
121
121
|
try {
|
|
122
122
|
var _newAdapter$activity$, _TelemetryTimers$Widg;
|
|
123
123
|
|
|
124
|
+
const authClientFunction = (0, _authHelper.getAuthClientFunction)(chatConfig);
|
|
125
|
+
|
|
126
|
+
if (getAuthToken && authClientFunction) {
|
|
127
|
+
// set auth token to chat sdk before start chat
|
|
128
|
+
const authSuccess = await (0, _authHelper.handleAuthentication)(chatSDK, chatConfig, getAuthToken);
|
|
129
|
+
|
|
130
|
+
if (!authSuccess) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
124
135
|
let isStartChatSuccessful = false; //Check if chat retrieved from cache
|
|
125
136
|
|
|
126
137
|
if (persistedState || params !== null && params !== void 0 && params.liveChatContext) {
|
|
@@ -145,9 +156,7 @@ const initStartChat = async (chatSDK, chatConfig, getAuthToken, dispatch, setAda
|
|
|
145
156
|
|
|
146
157
|
|
|
147
158
|
setCustomContextParams(chatSDK);
|
|
148
|
-
optionalParams = Object.assign({}, params, optionalParams);
|
|
149
|
-
|
|
150
|
-
await (0, _authHelper.handleAuthentication)(chatSDK, chatConfig, getAuthToken);
|
|
159
|
+
optionalParams = Object.assign({}, params, optionalParams);
|
|
151
160
|
await chatSDK.startChat(optionalParams);
|
|
152
161
|
isStartChatSuccessful = true;
|
|
153
162
|
} catch (error) {
|