senza-sdk 4.3.2-2e967be.0 → 4.3.2-3c99350.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "senza-sdk",
3
- "version": "4.3.2-2e967be.0",
3
+ "version": "4.3.2-3c99350.0",
4
4
  "main": "./src/api.js",
5
5
  "description": "API for Senza application",
6
6
  "license": "MIT",
@@ -51,9 +51,9 @@
51
51
  },
52
52
  "src/interface": {
53
53
  "branches": 68.42,
54
- "functions": 40.74,
55
- "lines": 65.96,
56
- "statements": 66.32
54
+ "functions": 40,
55
+ "lines": 65.28,
56
+ "statements": 65.65
57
57
  }
58
58
  }
59
59
  },
@@ -27,6 +27,7 @@ class AlarmManager extends AlarmManagerInterface {
27
27
  * @private
28
28
  */
29
29
  _init() {
30
+ sdkLogger.log("Initializing AlarmManager");
30
31
  if (!this._isInitialized) {
31
32
  this._isInitialized = true;
32
33
  this._addSenzaEventListeners();
@@ -94,6 +95,7 @@ class AlarmManager extends AlarmManagerInterface {
94
95
  }
95
96
  }
96
97
  );
98
+ sdkLogger.log("[AlarmManager] Added event listeners for system events");
97
99
  }
98
100
 
99
101
  /**
@@ -134,6 +134,7 @@ export async function init(interfaceApiVersion, showSequenceFunc, initSequenceFu
134
134
  alarmManager._init();
135
135
  deviceManager._init();
136
136
  messageManager._init();
137
+ sdkLogger.log("All submodules initialized");
137
138
 
138
139
 
139
140
  const devSequence = sessionInfoObj?.settings?.["ui-streamer"]?.devSequence;
@@ -54,6 +54,7 @@ class DeviceManager extends DeviceManagerInterface {
54
54
  * @private
55
55
  */
56
56
  _init() {
57
+ sdkLogger.log("Initializing DeviceManager");
57
58
  if (!this._isInitialized) {
58
59
  this._isInitialized = true;
59
60
  this._addSenzaEventListeners();
@@ -71,6 +72,7 @@ class DeviceManager extends DeviceManagerInterface {
71
72
  wifiInfo.bssid = e.detail.bssid;
72
73
  this.dispatchEvent(new Event("wifiInfoUpdated"));
73
74
  });
75
+ sdkLogger.log("[DeviceManager] Added event listeners for system events");
74
76
  }
75
77
 
76
78
  get deviceInfo() {
@@ -71,6 +71,7 @@ class Lifecycle extends LifecycleInterface {
71
71
  * @param {number} [uiStreamerSettings.remotePlayerApiVersion=1] - Remote player API version
72
72
  */
73
73
  async _init(uiStreamerSettings, triggerEvent) {
74
+ sdkLogger.log("Initializing Lifecycle");
74
75
  if (window.cefQuery) {
75
76
 
76
77
  // Get UI state
@@ -212,6 +213,7 @@ class Lifecycle extends LifecycleInterface {
212
213
  this._startCountdown(event.detail.isPlaying);
213
214
  }
214
215
  });
216
+ sdkLogger.log("[Lifecycle] Added event listeners for system events");
215
217
  }
216
218
 
217
219
  /**
@@ -15,6 +15,7 @@ class MessageManager extends MessageManagerInterface {
15
15
  * @private
16
16
  */
17
17
  _init() {
18
+ sdkLogger.log("Initializing MessageManager");
18
19
  if (!this._isInitialized) {
19
20
  this._isInitialized = true;
20
21
  this._addSenzaEventListeners();
@@ -29,6 +30,7 @@ class MessageManager extends MessageManagerInterface {
29
30
  sdkLogger.log("Got hs/externalEvent", JSON.stringify(e.detail));
30
31
  this.dispatchEvent(new CustomEvent("message", { detail: { eventName: e.detail.eventName, payload: e.detail.payload, fcid: e.detail.fcid } }));
31
32
  });
33
+ sdkLogger.log("[MessageManager] Added event listeners for system events");
32
34
  }
33
35
 
34
36
  async registerGroups(groups) {
@@ -146,9 +146,7 @@ class RemotePlayer extends RemotePlayerInterface {
146
146
  * @param {Object} uiStreamerSettings ui-streamer portion of the settings taken from session info
147
147
  * */
148
148
  async _init(uiStreamerSettings, triggerEvent) {
149
- if (!this._systemEventListenersAdded) {
150
- this._systemEventListenersAdded = true;
151
- }
149
+ sdkLogger.info("Initializing RemotePlayer");
152
150
  let playerState = {
153
151
  isLoaded: false,
154
152
  playbackUrl: ""
@@ -212,6 +210,7 @@ class RemotePlayer extends RemotePlayerInterface {
212
210
  * @private Add event listeners for system events
213
211
  */
214
212
  _addSenzaEventListeners() {
213
+
215
214
  typeof document !== "undefined" && document.addEventListener("hs/remotePlayerEvent", (e) => {
216
215
  sdkLogger.info("Got hs/remotePlayerEvent event with detail", JSON.stringify(e?.detail));
217
216
  this.dispatchEvent(new Event(e?.detail?.eventName));
@@ -294,6 +293,7 @@ class RemotePlayer extends RemotePlayerInterface {
294
293
  };
295
294
  this.dispatchEvent(licenseRequestEvent);
296
295
  });
296
+ sdkLogger.log("[RemotePlayer] Added event listeners for system events");
297
297
  }
298
298
 
299
299
  /** @private update audio and text tracks
@@ -1367,6 +1367,43 @@ class RemotePlayer extends RemotePlayerInterface {
1367
1367
  }
1368
1368
  }
1369
1369
 
1370
+ setScreenBlackout(date) {
1371
+
1372
+ if (!this._isInitialized) {
1373
+ throw new RemotePlayerError(6500, "Cannot call setScreenBlackout() if remote player is not initialized");
1374
+ }
1375
+
1376
+ if (this._loadMode !== this.LoadMode.LOADED) {
1377
+ throw new RemotePlayerError(6001, "Cannot call setScreenBlackout() if player is not loaded");
1378
+ }
1379
+
1380
+ if (!(date instanceof Date)) {
1381
+ throw new RemotePlayerError(6503, `date param must be a ${typeof new Date()} object but got ${typeof date}`);
1382
+ }
1383
+
1384
+ if (this._remotePlayerApiVersion < 2) {
1385
+ throw new RemotePlayerError(6504, `setScreenBlackout is not supported in remotePlayerApiVersion=${this._remotePlayerApiVersion}. remotePlayerApiVersion >= 2 required`);
1386
+ }
1387
+
1388
+ const blackoutTime = (date.getTime()/1000).toFixed(2);
1389
+ return this._setScreenBlackout(blackoutTime);
1390
+ }
1391
+
1392
+ resetScreenBlackout() {
1393
+ if (!this._isInitialized) {
1394
+ throw new RemotePlayerError(6500, "Cannot call resetScreenBlackout() if remote player is not initialized");
1395
+ }
1396
+
1397
+ if (this._loadMode !== this.LoadMode.LOADED) {
1398
+ throw new RemotePlayerError(6001, "Cannot call resetScreenBlackout() if player is not loaded");
1399
+ }
1400
+
1401
+ if (this._remotePlayerApiVersion < 2) {
1402
+ throw new RemotePlayerError(6504, `resetScreenBlackout is not supported in remotePlayerApiVersion=${this._remotePlayerApiVersion}. remotePlayerApiVersion >= 2 required`);
1403
+ }
1404
+ return this._setScreenBlackout(0);
1405
+ }
1406
+
1370
1407
  /**
1371
1408
  * Getter/Setter for currentTime
1372
1409
  */
@@ -1718,6 +1755,53 @@ class RemotePlayer extends RemotePlayerInterface {
1718
1755
  sdkLogger.log(`remotePlayer _atomicSetSubtitleLanguage: textTrackId=${textTrackId} ended.`);
1719
1756
  return setLanguageError ? Promise.reject(setLanguageError) : Promise.resolve();
1720
1757
  }
1758
+
1759
+ _setScreenBlackout(blackoutTime) {
1760
+ const functionName = blackoutTime === 0 ? "resetScreenBlackout" : "setScreenBlackout";
1761
+ if (window.cefQuery) {
1762
+ const FCID = getFCID();
1763
+ const logger = sdkLogger.withFields({ FCID });
1764
+ logger.log(`remotePlayer ${functionName}: sending screenBlackout action at ${blackoutTime}`);
1765
+ const message = {
1766
+ type: "remotePlayer.screenBlackout",
1767
+ class: "remotePlayer",
1768
+ action: "screenBlackout",
1769
+ fcid: FCID,
1770
+ blackoutTime
1771
+ };
1772
+ const request = { target: "TC", waitForResponse: true, message: JSON.stringify(message) };
1773
+ return new Promise((resolve, reject) => {
1774
+ let timerId = 0;
1775
+ const timeBeforeSendingRequest = Date.now();
1776
+ const queryId = window.cefQuery({
1777
+ request: JSON.stringify(request),
1778
+ persistent: false,
1779
+ onSuccess: () => {
1780
+ const duration = Date.now() - timeBeforeSendingRequest;
1781
+ logger.withFields({ duration }).log(`setBlackoutTime completed successfully after ${duration} ms`);
1782
+ timerId = clearTimer(timerId);
1783
+ resolve();
1784
+ },
1785
+ onFailure: (code, msg) => {
1786
+ const duration = Date.now() - timeBeforeSendingRequest;
1787
+ logger.withFields({ duration }).log(`setBlackoutTime failed after ${duration} ms. Error code: ${code}, error message: ${msg}`);
1788
+ timerId = clearTimer(timerId);
1789
+ reject(new RemotePlayerError(code, msg));
1790
+ }
1791
+ });
1792
+
1793
+ logger.log(`window.cefQuery for ${functionName} returned query id ${queryId}`);
1794
+ const timeout = this._remotePlayerConfirmationTimeout + 1000;
1795
+ timerId = setTimeout(() => {
1796
+ logger.log(`${functionName} reached timeout of ${timeout} ms, canceling query id ${queryId}`);
1797
+ window.cefQueryCancel(queryId);
1798
+ reject(new RemotePlayerError(6000, `${functionName} reached timeout of ${timeout} ms`));
1799
+ }, timeout, queryId);
1800
+ });
1801
+ }
1802
+ sdkLogger.error(`remotePlayer ${functionName}: window.cefQuery is undefined`);
1803
+ return Promise.resolve(undefined);
1804
+ }
1721
1805
  }
1722
1806
  /**
1723
1807
  *
@@ -116,6 +116,8 @@ export class RemotePlayerError extends Error {
116
116
  * | 6500 | Player | remotePlayer api was called before initializing remotePlayer |
117
117
  * | 6501 | Player | load() was called while previous load/unload was still in progress |
118
118
  * | 6502 | Player | unload() was called while previous unload/load was still in progress |
119
+ * | 6503 | Player | The remote player api call has invalid parameters |
120
+ * | 6504 | Player | The remote player api call has invalid api version |
119
121
  * | 8001 | Player | Error pulling manifest. bad parameters |
120
122
  * | 8002 | Player | Error pulling manifest. filters returned no data |
121
123
  * | 8003 | Player | Error pulling manifest. fetch error |
@@ -397,6 +399,25 @@ class RemotePlayer extends EventTarget {
397
399
  return noop("RemotePlayer.setTextTrackVisibility", visible);
398
400
  }
399
401
 
402
+ /**
403
+ *
404
+ * @param {Date} date
405
+ * @returns {Promise<void>} A Promise that resolves once the blackout time is set.
406
+ * @throws {RemotePlayerError} If the player is not initialized or not loaded. if date is not a Date object or if the remote player api version is less than 2
407
+ */
408
+ setScreenBlackout(date) {
409
+ return noop("RemotePlayer.setScreenBlackout", date);
410
+ }
411
+
412
+ /**
413
+ *
414
+ * @returns {Promise<void>} A Promise that resolves once the blackout time is reset.
415
+ * @throws {RemotePlayerError} If the player is not initialized or not loaded. if the remote player api version is less than 2
416
+ */
417
+ resetScreenBlackout() {
418
+ return noop("RemotePlayer.resetScreenBlackout");
419
+ }
420
+
400
421
  /**
401
422
  * Getter/Setter for currentTime
402
423
  */