@vouchfor/embeds 0.0.0-experiment.4ea86a2 → 0.0.0-experiment.4eb5f06

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": "@vouchfor/embeds",
3
- "version": "0.0.0-experiment.4ea86a2",
3
+ "version": "0.0.0-experiment.4eb5f06",
4
4
  "license": "MIT",
5
5
  "author": "Aaron Williams",
6
6
  "main": "dist/es/embeds.js",
@@ -36,7 +36,7 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@lit/task": "^1.0.0",
39
- "@vouchfor/media-player": "0.0.0-experiment.4ea86a2",
39
+ "@vouchfor/media-player": "0.0.0-experiment.4eb5f06",
40
40
  "uuid": "^9.0.1"
41
41
  },
42
42
  "peerDependencies": {
@@ -7,7 +7,8 @@ import type { ReactiveController, ReactiveControllerHost } from 'lit';
7
7
 
8
8
  import { getEnvUrls } from '~/utils/env';
9
9
 
10
- const STREAMED_THROTTLE = 10000;
10
+ // In seconds due to checking against node.currentTime
11
+ const STREAMED_THROTTLE = 10;
11
12
 
12
13
  type EmbedHost = ReactiveControllerHost & Embed;
13
14
 
@@ -39,7 +40,6 @@ class TrackingController implements ReactiveController {
39
40
  private _answersViewed: BooleanMap = {};
40
41
  private _streamedTime: TimeMap = {};
41
42
  private _streamLatestTime: TimeMap = {};
42
- private _streamedPrevTimestamp: TimeMap = {};
43
43
 
44
44
  constructor(host: EmbedHost) {
45
45
  this.host = host;
@@ -203,28 +203,6 @@ class TrackingController implements ReactiveController {
203
203
 
204
204
  this._streamedTime[key] = node.currentTime;
205
205
  this._streamLatestTime[key] = node.currentTime;
206
- this._streamedPrevTimestamp[key] = Date.now();
207
- };
208
-
209
- private _handleVideoSeeking = ({ detail: { id, key } }: CustomEvent<VideoEventDetail>) => {
210
- const vouchId = this._findVouchId();
211
-
212
- if (!vouchId) {
213
- return;
214
- }
215
-
216
- if (this._streamLatestTime[key]) {
217
- this._sendTrackingEvent('VIDEO_STREAMED', {
218
- vouchId,
219
- answerId: id,
220
- streamStart: this._streamedTime[key],
221
- streamEnd: this._streamLatestTime[key]
222
- });
223
- }
224
-
225
- delete this._streamedTime[key];
226
- delete this._streamLatestTime[key];
227
- delete this._streamedPrevTimestamp[key];
228
206
  };
229
207
 
230
208
  private _handleVideoTimeUpdate = ({ detail: { id, key, node } }: CustomEvent<VideoEventDetail>) => {
@@ -234,7 +212,6 @@ class TrackingController implements ReactiveController {
234
212
  return;
235
213
  }
236
214
 
237
- const currentTimestamp = Date.now();
238
215
  if (
239
216
  node.currentTime &&
240
217
  !node.paused &&
@@ -242,7 +219,7 @@ class TrackingController implements ReactiveController {
242
219
  // Only fire the video seeked event when this video is the active one
243
220
  id === this.host.scene?.video?.id &&
244
221
  // Throttle the frequency that we send streamed events while playing
245
- currentTimestamp - this._streamedPrevTimestamp[key] > STREAMED_THROTTLE
222
+ node.currentTime - this._streamedTime[key] > STREAMED_THROTTLE
246
223
  ) {
247
224
  this._sendTrackingEvent('VIDEO_STREAMED', {
248
225
  vouchId,
@@ -251,13 +228,14 @@ class TrackingController implements ReactiveController {
251
228
  streamEnd: node.currentTime
252
229
  });
253
230
  this._streamedTime[key] = node.currentTime;
254
- this._streamedPrevTimestamp[key] = currentTimestamp;
255
231
  }
256
232
 
257
- this._streamLatestTime[key] = node.currentTime;
233
+ if (!this.host.paused) {
234
+ this._streamLatestTime[key] = node.currentTime;
235
+ }
258
236
  };
259
237
 
260
- private _handleVideoPause = ({ detail: { id, key, node } }: CustomEvent<VideoEventDetail>) => {
238
+ private _handleVideoPause = ({ detail: { id, key } }: CustomEvent<VideoEventDetail>) => {
261
239
  const vouchId = this._findVouchId();
262
240
 
263
241
  if (!vouchId) {
@@ -265,7 +243,7 @@ class TrackingController implements ReactiveController {
265
243
  }
266
244
 
267
245
  // Don't send a tracking event if the video pauses when seeking backwards
268
- if (node.currentTime > this._streamedTime[key]) {
246
+ if (this._streamLatestTime[key] > this._streamedTime[key] + 0.5) {
269
247
  // Send a video streamed event any time the video pauses then reset the streamed state
270
248
  // We do this to capture the last bit of time that the video was played between the previous
271
249
  // stream event and the video being paused manually or stopping because it ended
@@ -273,13 +251,12 @@ class TrackingController implements ReactiveController {
273
251
  vouchId,
274
252
  answerId: id,
275
253
  streamStart: this._streamedTime[key],
276
- streamEnd: node.currentTime
254
+ streamEnd: this._streamLatestTime[key]
277
255
  });
278
256
  }
279
257
 
280
258
  delete this._streamedTime[key];
281
259
  delete this._streamLatestTime[key];
282
- delete this._streamedPrevTimestamp[key];
283
260
  };
284
261
 
285
262
  hostConnected() {
@@ -287,7 +264,6 @@ class TrackingController implements ReactiveController {
287
264
  this.host.addEventListener('vouch:loaded', this._handleVouchLoaded);
288
265
  this.host.mediaPlayer?.addEventListener('play', this._handlePlay);
289
266
  this.host.mediaPlayer?.addEventListener('video:play', this._handleVideoPlay);
290
- this.host.mediaPlayer?.addEventListener('video:seeking', this._handleVideoSeeking);
291
267
  this.host.mediaPlayer?.addEventListener('video:pause', this._handleVideoPause);
292
268
  this.host.mediaPlayer?.addEventListener('video:timeupdate', this._handleVideoTimeUpdate);
293
269
  });
@@ -297,7 +273,6 @@ class TrackingController implements ReactiveController {
297
273
  this.host.removeEventListener('vouch:loaded', this._handleVouchLoaded);
298
274
  this.host.mediaPlayer?.removeEventListener('play', this._handlePlay);
299
275
  this.host.mediaPlayer?.removeEventListener('video:play', this._handleVideoPlay);
300
- this.host.mediaPlayer?.removeEventListener('video:seeking', this._handleVideoSeeking);
301
276
  this.host.mediaPlayer?.removeEventListener('video:pause', this._handleVideoPause);
302
277
  this.host.mediaPlayer?.removeEventListener('video:timeupdate', this._handleVideoTimeUpdate);
303
278
  }