senza-sdk 4.3.1-e113d43.0 → 4.3.2-2e967be.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.js +1 -1
- package/package.json +9 -8
- package/src/api.js +14 -2
- package/src/implementation/alarmManager.js +21 -0
- package/src/implementation/api.js +14 -13
- package/src/implementation/deviceManager.js +20 -1
- package/src/implementation/lifecycle.js +66 -57
- package/src/implementation/messageManager.js +17 -30
- package/src/implementation/platformManager.js +0 -19
- package/src/implementation/remotePlayer.js +86 -272
- package/src/implementation/senzaShakaPlayer.js +104 -127
- package/src/interface/alarmManager.js +29 -22
- package/src/interface/devSequence.js +35 -0
- package/src/interface/deviceManager.js +30 -20
- package/src/interface/lifecycle.js +46 -40
- package/src/interface/messageManager.js +36 -28
- package/src/interface/platformManager.js +13 -6
- package/src/interface/remotePlayer.js +208 -180
- package/src/interface/senzaShakaPlayer.js +2 -5
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "senza-sdk",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.2-2e967be.0",
|
|
4
4
|
"main": "./src/api.js",
|
|
5
5
|
"description": "API for Senza application",
|
|
6
6
|
"license": "MIT",
|
|
@@ -46,18 +46,19 @@
|
|
|
46
46
|
"global": {
|
|
47
47
|
"branches": 88,
|
|
48
48
|
"functions": 92.36,
|
|
49
|
-
"lines": 93.
|
|
50
|
-
"statements": 93.
|
|
49
|
+
"lines": 93.47,
|
|
50
|
+
"statements": 93.46
|
|
51
51
|
},
|
|
52
52
|
"src/interface": {
|
|
53
|
-
"branches":
|
|
54
|
-
"functions":
|
|
55
|
-
"lines":
|
|
56
|
-
"statements":
|
|
53
|
+
"branches": 68.42,
|
|
54
|
+
"functions": 40.74,
|
|
55
|
+
"lines": 65.96,
|
|
56
|
+
"statements": 66.32
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"shaka-player": "^4.12.5"
|
|
61
|
+
"shaka-player": "^4.12.5",
|
|
62
|
+
"moment": "^2.30.1"
|
|
62
63
|
}
|
|
63
64
|
}
|
package/src/api.js
CHANGED
|
@@ -4,6 +4,11 @@ import { Lifecycle, RemotePlayer, DeviceManager, PlatformManager, AlarmManager,
|
|
|
4
4
|
|
|
5
5
|
const { version } = pack;
|
|
6
6
|
|
|
7
|
+
typeof document !== "undefined" && document.addEventListener("keydown", (event) => {
|
|
8
|
+
sdkLogger.log(`Got ${event.key} key`);
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
|
|
7
12
|
let authToken;
|
|
8
13
|
|
|
9
14
|
/** @namespace auth
|
|
@@ -193,6 +198,7 @@ export function getClientAssertion() {
|
|
|
193
198
|
|
|
194
199
|
/**
|
|
195
200
|
* @module
|
|
201
|
+
* @private
|
|
196
202
|
* @type {Lifecycle}
|
|
197
203
|
* @example
|
|
198
204
|
* import { lifecycle } from "senza-sdk";
|
|
@@ -203,6 +209,7 @@ let lifecycle;
|
|
|
203
209
|
|
|
204
210
|
/**
|
|
205
211
|
* @module
|
|
212
|
+
* @private
|
|
206
213
|
* @type {RemotePlayer}
|
|
207
214
|
* @example
|
|
208
215
|
* import { init, remotePlayer } from "senza-sdk";
|
|
@@ -221,6 +228,7 @@ let remotePlayer;
|
|
|
221
228
|
|
|
222
229
|
/**
|
|
223
230
|
* @module
|
|
231
|
+
* @private
|
|
224
232
|
* @type {AlarmManager}
|
|
225
233
|
* @example
|
|
226
234
|
* import { alarmManager } from "senza-sdk";
|
|
@@ -231,6 +239,7 @@ let alarmManager;
|
|
|
231
239
|
|
|
232
240
|
/**
|
|
233
241
|
* @module
|
|
242
|
+
* @private
|
|
234
243
|
* @type {DeviceManager}
|
|
235
244
|
* @example
|
|
236
245
|
* import { deviceManager } from "senza-sdk";
|
|
@@ -246,6 +255,7 @@ let deviceManager;
|
|
|
246
255
|
|
|
247
256
|
/**
|
|
248
257
|
* @module
|
|
258
|
+
* @private
|
|
249
259
|
* @type {PlatformManager}
|
|
250
260
|
* @example
|
|
251
261
|
* import { platformManager } from "senza-sdk";
|
|
@@ -254,11 +264,11 @@ let deviceManager;
|
|
|
254
264
|
*
|
|
255
265
|
* @return {PlatformManager} pointer to the PlatformManager singleton
|
|
256
266
|
*/
|
|
257
|
-
|
|
258
|
-
|
|
259
267
|
let platformManager;
|
|
268
|
+
|
|
260
269
|
/**
|
|
261
270
|
* @module
|
|
271
|
+
* @private
|
|
262
272
|
* @type {MessageManager}
|
|
263
273
|
* @example
|
|
264
274
|
* import { MessageManager } from "senza-sdk";
|
|
@@ -272,6 +282,7 @@ let messageManager;
|
|
|
272
282
|
* ShakaPlayer subclass of Shaka that handles both local and remote playback.
|
|
273
283
|
*
|
|
274
284
|
* @class ShakaPlayer
|
|
285
|
+
* @private
|
|
275
286
|
* @type {new|ShakaPlayer}
|
|
276
287
|
* @example
|
|
277
288
|
* import { ShakaPlayer } from "senza-sdk";
|
|
@@ -291,6 +302,7 @@ let ShakaPlayerImplementation;
|
|
|
291
302
|
|
|
292
303
|
/**
|
|
293
304
|
* @module
|
|
305
|
+
* @private
|
|
294
306
|
* @type {shaka}
|
|
295
307
|
*/
|
|
296
308
|
let shakaImplementation;
|
|
@@ -16,6 +16,27 @@ class AlarmManager extends AlarmManagerInterface {
|
|
|
16
16
|
timeoutMs: 15000 // Default timeout of 15 seconds, can be overridden by _setDefaultTimeout
|
|
17
17
|
});
|
|
18
18
|
|
|
19
|
+
/**
|
|
20
|
+
* @type {boolean}
|
|
21
|
+
* @private
|
|
22
|
+
*/
|
|
23
|
+
this._isInitialized = false;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @private
|
|
28
|
+
*/
|
|
29
|
+
_init() {
|
|
30
|
+
if (!this._isInitialized) {
|
|
31
|
+
this._isInitialized = true;
|
|
32
|
+
this._addSenzaEventListeners();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @private Add event listeners for system events
|
|
38
|
+
*/
|
|
39
|
+
_addSenzaEventListeners() {
|
|
19
40
|
typeof document !== "undefined" && document.addEventListener("hs/alarmFiredEvent", async (e) => {
|
|
20
41
|
|
|
21
42
|
if (e.detail?.alarmName) {
|
|
@@ -2,16 +2,22 @@ import { getFCID, sdkLogger, getVersion } from "./utils.js";
|
|
|
2
2
|
import { sessionInfo } from "./SessionInfo.js";
|
|
3
3
|
import { lifecycle } from "./lifecycle.js";
|
|
4
4
|
import { alarmManager } from "./alarmManager.js";
|
|
5
|
+
import { remotePlayer } from "./remotePlayer.js";
|
|
6
|
+
import { deviceManager } from "./deviceManager.js";
|
|
7
|
+
import { messageManager } from "./messageManager.js";
|
|
5
8
|
|
|
9
|
+
export { remotePlayer };
|
|
10
|
+
export { lifecycle } from "./lifecycle.js";
|
|
11
|
+
export { deviceManager };
|
|
12
|
+
export { platformManager } from "./platformManager.js";
|
|
13
|
+
export { alarmManager };
|
|
14
|
+
export { messageManager };
|
|
15
|
+
export { SenzaShakaPlayer as ShakaPlayer, shaka } from "./senzaShakaPlayer.js";
|
|
6
16
|
let authToken;
|
|
7
17
|
|
|
8
18
|
const API_VERSION = "1.0";
|
|
9
19
|
let interfaceVersion;
|
|
10
20
|
|
|
11
|
-
typeof document !== "undefined" && document.addEventListener("keydown", (event) => {
|
|
12
|
-
sdkLogger.log(`Got ${event.key} key`);
|
|
13
|
-
});
|
|
14
|
-
|
|
15
21
|
/** @namespace auth
|
|
16
22
|
*@example
|
|
17
23
|
* import { auth } from "senza-sdk";
|
|
@@ -28,8 +34,6 @@ export const auth = {
|
|
|
28
34
|
|
|
29
35
|
};
|
|
30
36
|
|
|
31
|
-
import { remotePlayer } from "./remotePlayer.js";
|
|
32
|
-
export { remotePlayer };
|
|
33
37
|
|
|
34
38
|
/** Should be called once to init the library
|
|
35
39
|
*@example
|
|
@@ -127,6 +131,10 @@ export async function init(interfaceApiVersion, showSequenceFunc, initSequenceFu
|
|
|
127
131
|
// Initialize lifecycle first to make sure the state is updated.
|
|
128
132
|
await lifecycle._init(sessionInfoObj?.settings?.["ui-streamer"], triggerEvent);
|
|
129
133
|
await remotePlayer._init(sessionInfoObj?.settings?.["ui-streamer"], triggerEvent);
|
|
134
|
+
alarmManager._init();
|
|
135
|
+
deviceManager._init();
|
|
136
|
+
messageManager._init();
|
|
137
|
+
|
|
130
138
|
|
|
131
139
|
const devSequence = sessionInfoObj?.settings?.["ui-streamer"]?.devSequence;
|
|
132
140
|
if (devSequence) {
|
|
@@ -259,13 +267,6 @@ export function uiReady() {
|
|
|
259
267
|
}
|
|
260
268
|
}
|
|
261
269
|
|
|
262
|
-
export { lifecycle } from "./lifecycle.js";
|
|
263
|
-
export { deviceManager } from "./deviceManager.js";
|
|
264
|
-
export { platformManager } from "./platformManager.js";
|
|
265
|
-
export { alarmManager };
|
|
266
|
-
export { messageManager } from "./messageManager.js";
|
|
267
|
-
export { SenzaShakaPlayer as ShakaPlayer, shaka } from "./senzaShakaPlayer.js";
|
|
268
|
-
|
|
269
270
|
import "./devHelper.js";
|
|
270
271
|
|
|
271
272
|
/**
|
|
@@ -43,7 +43,27 @@ class DeviceManager extends DeviceManagerInterface {
|
|
|
43
43
|
wifiInfo.quality = 0;
|
|
44
44
|
wifiInfo.ssid = "unknown";
|
|
45
45
|
wifiInfo.bssid = "unknown";
|
|
46
|
+
/**
|
|
47
|
+
* @type {boolean}
|
|
48
|
+
* @private
|
|
49
|
+
*/
|
|
50
|
+
this._isInitialized = false;
|
|
51
|
+
}
|
|
46
52
|
|
|
53
|
+
/**
|
|
54
|
+
* @private
|
|
55
|
+
*/
|
|
56
|
+
_init() {
|
|
57
|
+
if (!this._isInitialized) {
|
|
58
|
+
this._isInitialized = true;
|
|
59
|
+
this._addSenzaEventListeners();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @private Add event listeners for system events
|
|
65
|
+
*/
|
|
66
|
+
_addSenzaEventListeners() {
|
|
47
67
|
typeof document !== "undefined" && document.addEventListener("wifiSignalReport", (e) => {
|
|
48
68
|
wifiInfo.level = e.detail.level;
|
|
49
69
|
wifiInfo.quality = e.detail.quality;
|
|
@@ -51,7 +71,6 @@ class DeviceManager extends DeviceManagerInterface {
|
|
|
51
71
|
wifiInfo.bssid = e.detail.bssid;
|
|
52
72
|
this.dispatchEvent(new Event("wifiInfoUpdated"));
|
|
53
73
|
});
|
|
54
|
-
|
|
55
74
|
}
|
|
56
75
|
|
|
57
76
|
get deviceInfo() {
|
|
@@ -20,12 +20,6 @@ const DEFAULT_AUTO_BACKGROUND_VIDEO_DELAY = 30;
|
|
|
20
20
|
const DEFAULT_AUTO_BACKGROUND_UI_DELAY = -1;
|
|
21
21
|
const DEFAULT_AUTO_BACKGROUND_ENABLED = false;
|
|
22
22
|
|
|
23
|
-
/**
|
|
24
|
-
* Lifecycle is a singleton class that manages the application lifecycle states.<br>
|
|
25
|
-
* @fires onstatechange
|
|
26
|
-
* @fires userinactivity
|
|
27
|
-
* @fires userdisconnected
|
|
28
|
-
*/
|
|
29
23
|
class Lifecycle extends LifecycleInterface {
|
|
30
24
|
constructor() {
|
|
31
25
|
super();
|
|
@@ -63,56 +57,10 @@ class Lifecycle extends LifecycleInterface {
|
|
|
63
57
|
* @private
|
|
64
58
|
*/
|
|
65
59
|
this._autoBackgroundOnUIDelay = DEFAULT_AUTO_BACKGROUND_UI_DELAY;
|
|
66
|
-
|
|
67
|
-
typeof document !== "undefined" && document.addEventListener("hs/uistatechange", (e) => {
|
|
68
|
-
sdkLogger.log("Got hs/uistatechange", e.detail);
|
|
69
|
-
const event = new Event("onstatechange");
|
|
70
|
-
event.state = e.detail;
|
|
71
|
-
this._state = event.state;
|
|
72
|
-
if (this._isAutoBackgroundEnabled() && this.state === this.UiState.FOREGROUND) {
|
|
73
|
-
this._startCountdown();
|
|
74
|
-
}
|
|
75
|
-
this.dispatchEvent(event);
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
typeof document !== "undefined" && document.addEventListener("hs/systemInactivity", (e) => {
|
|
79
|
-
sdkLogger.log("Got hs/systemInactivity", e.detail);
|
|
80
|
-
const event = new Event("userinactivity");
|
|
81
|
-
event.timeout = e.detail.timeout;
|
|
82
|
-
this.dispatchEvent(event);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
typeof document !== "undefined" && document.addEventListener("hs/endOfSession", async () => {
|
|
86
|
-
// Create the event
|
|
87
|
-
const event = new Event("userdisconnected");
|
|
88
|
-
|
|
89
|
-
// Use the event manager to dispatch the event and wait for all listeners
|
|
90
|
-
await this._eventManager.dispatch("userdisconnected", event);
|
|
91
|
-
|
|
92
|
-
this._sendTerminatingMessage();
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
typeof document !== "undefined" && document.addEventListener("keydown", () => {
|
|
96
|
-
if (this._isAutoBackgroundEnabled()) {
|
|
97
|
-
if (this.state === this.UiState.BACKGROUND ||
|
|
98
|
-
this.state === this.UiState.IN_TRANSITION_TO_BACKGROUND) {
|
|
99
|
-
this.moveToForeground();
|
|
100
|
-
} else {
|
|
101
|
-
this._startCountdown();
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
// Add playModeChange listener
|
|
107
|
-
remotePlayer.addEventListener("playModeChange", (event) => {
|
|
108
|
-
if (this._isAutoBackgroundEnabled() && this.state === this.UiState.FOREGROUND) {
|
|
109
|
-
sdkLogger.log("Resetting auto background timer due to play mode change", event.detail.isPlaying);
|
|
110
|
-
this._startCountdown(event.detail.isPlaying);
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
60
|
}
|
|
114
61
|
|
|
115
|
-
/**
|
|
62
|
+
/**
|
|
63
|
+
* @private Initialize the lifecycle
|
|
116
64
|
* @param {Object} uiStreamerSettings - UI-streamer portion of the settings taken from session info
|
|
117
65
|
* @param {Object} [uiStreamerSettings.autoBackground] - Auto background mode configuration
|
|
118
66
|
* @param {boolean} [uiStreamerSettings.autoBackground.enabled=false] - Enable/disable auto background
|
|
@@ -191,6 +139,11 @@ class Lifecycle extends LifecycleInterface {
|
|
|
191
139
|
this._triggerEventFcid = triggerEvent.fcid;
|
|
192
140
|
}
|
|
193
141
|
|
|
142
|
+
// Make sure that the event listeners are registered only once
|
|
143
|
+
if (!this._isInitialized) {
|
|
144
|
+
this._addSenzaEventListeners();
|
|
145
|
+
}
|
|
146
|
+
|
|
194
147
|
this._isInitialized = true;
|
|
195
148
|
this._remotePlayerConfirmationTimeout = uiStreamerSettings?.remotePlayerConfirmationTimeout ?? DEFAULT_REMOTE_PLAYER_CONFIRMATION_TIMEOUT;
|
|
196
149
|
this._remotePlayerApiVersion = uiStreamerSettings?.remotePlayerApiVersion || 1;
|
|
@@ -209,14 +162,68 @@ class Lifecycle extends LifecycleInterface {
|
|
|
209
162
|
}
|
|
210
163
|
}
|
|
211
164
|
|
|
212
|
-
/**
|
|
165
|
+
/**
|
|
166
|
+
* @private Add event listeners for system events
|
|
167
|
+
*/
|
|
168
|
+
_addSenzaEventListeners() {
|
|
169
|
+
typeof document !== "undefined" && document.addEventListener("hs/uistatechange", (e) => {
|
|
170
|
+
sdkLogger.log("Got hs/uistatechange", e.detail);
|
|
171
|
+
const event = new Event("onstatechange");
|
|
172
|
+
event.state = e.detail;
|
|
173
|
+
this._state = event.state;
|
|
174
|
+
if (this._isAutoBackgroundEnabled() && this.state === this.UiState.FOREGROUND) {
|
|
175
|
+
this._startCountdown();
|
|
176
|
+
}
|
|
177
|
+
this.dispatchEvent(event);
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
typeof document !== "undefined" && document.addEventListener("hs/systemInactivity", (e) => {
|
|
181
|
+
sdkLogger.log("Got hs/systemInactivity", e.detail);
|
|
182
|
+
const event = new Event("userinactivity");
|
|
183
|
+
event.timeout = e.detail.timeout;
|
|
184
|
+
this.dispatchEvent(event);
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
typeof document !== "undefined" && document.addEventListener("hs/endOfSession", async () => {
|
|
188
|
+
// Create the event
|
|
189
|
+
const event = new Event("userdisconnected");
|
|
190
|
+
|
|
191
|
+
// Use the event manager to dispatch the event and wait for all listeners
|
|
192
|
+
await this._eventManager.dispatch("userdisconnected", event);
|
|
193
|
+
|
|
194
|
+
this._sendTerminatingMessage();
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
typeof document !== "undefined" && document.addEventListener("keydown", () => {
|
|
198
|
+
if (this._isAutoBackgroundEnabled()) {
|
|
199
|
+
if (this.state === this.UiState.BACKGROUND ||
|
|
200
|
+
this.state === this.UiState.IN_TRANSITION_TO_BACKGROUND) {
|
|
201
|
+
this.moveToForeground();
|
|
202
|
+
} else {
|
|
203
|
+
this._startCountdown();
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
// Add playModeChange listener
|
|
209
|
+
remotePlayer.addEventListener("playModeChange", (event) => {
|
|
210
|
+
if (this._isAutoBackgroundEnabled() && this.state === this.UiState.FOREGROUND) {
|
|
211
|
+
sdkLogger.log("Resetting auto background timer due to play mode change", event.detail.isPlaying);
|
|
212
|
+
this._startCountdown(event.detail.isPlaying);
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* @private Checks if auto background is enabled including overrides.
|
|
213
219
|
* @returns {boolean}
|
|
214
220
|
*/
|
|
215
221
|
_isAutoBackgroundEnabled() {
|
|
216
222
|
return this._autoBackgroundOverrides?.enabled ?? this._autoBackground;
|
|
217
223
|
}
|
|
218
224
|
|
|
219
|
-
/**
|
|
225
|
+
/**
|
|
226
|
+
* @private Gets the auto background video delay including overrides.
|
|
220
227
|
* @returns {number}
|
|
221
228
|
*/
|
|
222
229
|
_getAutoBackgroundOnVideoDelay() {
|
|
@@ -227,7 +234,8 @@ class Lifecycle extends LifecycleInterface {
|
|
|
227
234
|
return this._autoBackgroundOnVideoDelay;
|
|
228
235
|
}
|
|
229
236
|
|
|
230
|
-
/**
|
|
237
|
+
/**
|
|
238
|
+
* @private Gets the auto background UI delay including overrides.
|
|
231
239
|
* @returns {number}
|
|
232
240
|
*/
|
|
233
241
|
_getAutoBackgroundOnUIDelay() {
|
|
@@ -290,6 +298,7 @@ class Lifecycle extends LifecycleInterface {
|
|
|
290
298
|
}
|
|
291
299
|
|
|
292
300
|
/**
|
|
301
|
+
* @private
|
|
293
302
|
* This method moves the application into standby mode, i.e. last ui frame is displayed and ui resources are released.
|
|
294
303
|
* It should be called whenever the application wishes to go into standby mode and release resources.
|
|
295
304
|
* @example
|
|
@@ -1,49 +1,36 @@
|
|
|
1
1
|
import { MessageManager as MessageManagerInterface } from "../interface/messageManager";
|
|
2
2
|
import { getFCID, sdkLogger } from "./utils";
|
|
3
3
|
|
|
4
|
-
/**
|
|
5
|
-
* MessageManager is a singleton class that manages the external messages received by the application. It fires custom events as "message" with the payload as the content
|
|
6
|
-
* @fires MessageManager#message
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
4
|
class MessageManager extends MessageManagerInterface {
|
|
10
5
|
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
/**
|
|
9
|
+
* @type {boolean}
|
|
10
|
+
* @private
|
|
11
|
+
*/
|
|
12
|
+
this._isInitialized = false;
|
|
13
|
+
}
|
|
11
14
|
/**
|
|
12
|
-
* @
|
|
13
|
-
* @property {string} eventName - The name of the event message, a property of MessageDetails
|
|
14
|
-
* @property {object} payload - The payload for this event, a property of MessageDetails
|
|
15
|
-
* @property {string} fcid - The flow context for this message, a property of MessageDetails
|
|
15
|
+
* @private
|
|
16
16
|
*/
|
|
17
|
+
_init() {
|
|
18
|
+
if (!this._isInitialized) {
|
|
19
|
+
this._isInitialized = true;
|
|
20
|
+
this._addSenzaEventListeners();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
17
23
|
|
|
18
24
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* @event MessageManager#message
|
|
22
|
-
* @type {CustomEvent}
|
|
23
|
-
* @property {MessageDetails} detail - object containing data related to the event:
|
|
24
|
-
|
|
25
|
-
*
|
|
26
|
-
* @description Fired when an external event arrives. This is a generic handler for all messages received for any registered group <br>
|
|
27
|
-
* @example
|
|
28
|
-
* messageManager.addEventListener("message", (e) => {
|
|
29
|
-
* console.log("message arrived with data", e.detail);
|
|
30
|
-
* });
|
|
31
|
-
*
|
|
25
|
+
* @private Add event listeners for system events
|
|
32
26
|
*/
|
|
33
|
-
|
|
34
|
-
super();
|
|
27
|
+
_addSenzaEventListeners() {
|
|
35
28
|
typeof document !== "undefined" && document.addEventListener("hs/externalEvent", (e) => {
|
|
36
29
|
sdkLogger.log("Got hs/externalEvent", JSON.stringify(e.detail));
|
|
37
30
|
this.dispatchEvent(new CustomEvent("message", { detail: { eventName: e.detail.eventName, payload: e.detail.payload, fcid: e.detail.fcid } }));
|
|
38
31
|
});
|
|
39
32
|
}
|
|
40
33
|
|
|
41
|
-
/** Register to specific group(s). This function replaces the previously registered groups
|
|
42
|
-
* @param {Array<String>} groups group events to receive messages.
|
|
43
|
-
* @return {Promise} Promise which is resolved when the registerGroups command has been successfully processed.
|
|
44
|
-
* Failure to process the registerGroups command will result in the promise being rejected.
|
|
45
|
-
* messageManager.registerGroups(["A","B"]);
|
|
46
|
-
* */
|
|
47
34
|
async registerGroups(groups) {
|
|
48
35
|
sdkLogger.log(`register called for ${groups}`);
|
|
49
36
|
return new Promise((resolve, reject) => {
|
|
@@ -2,24 +2,12 @@ import { PlatformManager as PlatformManagerInterface } from "../interface/platfo
|
|
|
2
2
|
import { sdkLogger } from "./utils";
|
|
3
3
|
import { sessionInfo } from "./SessionInfo";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* PlatformManager is a singleton class that manages the platform
|
|
8
|
-
*/
|
|
9
5
|
class PlatformManager extends PlatformManagerInterface {
|
|
10
6
|
|
|
11
7
|
constructor() {
|
|
12
8
|
super();
|
|
13
9
|
}
|
|
14
10
|
|
|
15
|
-
/**
|
|
16
|
-
* @returns {Object} appConfig object
|
|
17
|
-
* @property {String[]} territories - a list of territories configured for the tenant.
|
|
18
|
-
* if the list is undefined or empty - there are no restrictions.
|
|
19
|
-
* @example
|
|
20
|
-
* import { platformManager } from "senza-sdk";
|
|
21
|
-
* const appConfig = platformManager.appConfig
|
|
22
|
-
* */
|
|
23
11
|
get appConfig() {
|
|
24
12
|
const sessionInfoObj = sessionInfo.sessionInfoObj;
|
|
25
13
|
const appConfig = sessionInfoObj.homeSessionInfo?.["appConfig"] || {};
|
|
@@ -27,13 +15,6 @@ class PlatformManager extends PlatformManagerInterface {
|
|
|
27
15
|
return appConfig;
|
|
28
16
|
}
|
|
29
17
|
|
|
30
|
-
/**
|
|
31
|
-
*
|
|
32
|
-
* @param {string} timezone the timezone to set to
|
|
33
|
-
* the format of the timezone is according to the standard TZ identifier
|
|
34
|
-
* (e.g. America/Los_Angeles, Asia/Tokyo, Europe/Brussels)
|
|
35
|
-
* for a full list of TZ identifiers, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
|
36
|
-
*/
|
|
37
18
|
setTimezone(timezone) {
|
|
38
19
|
if (window.cefQuery) {
|
|
39
20
|
const request = { message: JSON.stringify({ type: "setTimeZone", timezone }), waitForResponse: false, target: "UI-Streamer" };
|