@reactoo/watchtogether-sdk-js 2.5.68 → 2.5.69

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": "@reactoo/watchtogether-sdk-js",
3
- "version": "2.5.68",
3
+ "version": "2.5.69",
4
4
  "description": "Javascript SDK for Reactoo",
5
5
  "main": "src/index.js",
6
6
  "unpkg": "dist/watchtogether-sdk.min.js",
@@ -24,12 +24,13 @@ const syncModule = function ({room, emitter} = {}) {
24
24
  let syncNextWaitTime = null;
25
25
  let stopFlag = false;
26
26
  let isSyncing = false;
27
-
27
+ let safeSpace = 2;
28
28
  let playbackRate = 2;
29
29
  let isPlaying = false;
30
30
  let isPreloading = true;
31
31
  let isProgrammaticallySeeked = false;
32
-
32
+
33
+
33
34
  const startSyncLoop = () => {
34
35
 
35
36
  if(!isConnected()) {
@@ -68,6 +69,21 @@ const syncModule = function ({room, emitter} = {}) {
68
69
  };
69
70
 
70
71
  loop();
72
+
73
+ //TODO: push sync
74
+ // const loop2 = () => {
75
+ // seekForward()
76
+ // .then(() => {
77
+ // setNextWaitTime(false);
78
+ // })
79
+ // .catch((e) => {
80
+ // setNextWaitTime(true);
81
+ // console.log('Sync failed', e);
82
+ // });
83
+ // syncWaitId = setTimeout(loop2, syncNextWaitTime);
84
+ // };
85
+ //
86
+ // loop2();
71
87
 
72
88
  };
73
89
 
@@ -234,6 +250,37 @@ const syncModule = function ({room, emitter} = {}) {
234
250
  }
235
251
  };
236
252
 
253
+ const seekForward = () => {
254
+ return new Promise((resolve, reject) => {
255
+ let diff = _playerInterface.buffered.end(0) - _playerInterface.currentTime;
256
+ let diff_target = diff - safeSpace;
257
+
258
+ let __ = () => {
259
+ _playerInterface.setPlaybackRate(1);
260
+ isProgrammaticallySeeked = false;
261
+ isSyncing = false;
262
+ reject('Stalled');
263
+ };
264
+
265
+ console.log('Users stream is behind behind live by:',diff);
266
+ if(diff_target > 0) {
267
+ _emitter.once('stalled', __);
268
+ setExactTimeout(() => {
269
+ _playerInterface.setPlaybackRate(1);
270
+ isProgrammaticallySeeked = false;
271
+ isSyncing = false;
272
+ _emitter.off('stalled', __);
273
+ resolve();
274
+ }, (diff_target * 1000) / playbackRate, 20);
275
+ isProgrammaticallySeeked = true;
276
+ isSyncing = true;
277
+ _playerInterface.setPlaybackRate(playbackRate);
278
+ } else {
279
+ resolve();
280
+ }
281
+ });
282
+ };
283
+
237
284
  const seekBy = (time) => {
238
285
  return new Promise((resolve, reject) => {
239
286
  if(_playerInterface.currentTime !== time) {
@@ -163,7 +163,7 @@ class Iot {
163
163
  if(payload.display) {
164
164
  const decodedDisplay = decodeJanusDisplay(payload.display);
165
165
  if(decodedDisplay.userId) {
166
- payload = {...payload, userId: decodedDisplay.userId, role: decodedDisplay.role};
166
+ payload = {...payload, userId: decodedDisplay.userId, role: decodedDisplay.role, start: decodedDisplay.start};
167
167
  }
168
168
  }
169
169