})
this.player.on('seeked', () => {
- // Don't take into account small seek events
- if (Math.abs(this.player.currentTime() - lastCurrentTime) < 3) return
+ const diff = Math.floor(this.player.currentTime()) - lastCurrentTime
+
+ // Don't take into account small forwards
+ if (diff > 0 && diff < 3) return
lastViewEvent = 'seek'
})
.catch(err => logger.error('Cannot notify user is watching.', err))
lastViewEvent = undefined
-
- // Server won't save history, so save the video position in local storage
- if (!this.authorizationHeader()) {
- saveVideoWatchHistory(this.videoUUID, currentTime)
- }
}, this.videoViewIntervalMs)
}
private notifyUserIsWatching (currentTime: number, viewEvent: VideoViewEvent) {
- if (!this.videoViewUrl) return Promise.resolve(undefined)
-
- const body: VideoView = {
- currentTime,
- viewEvent
+ // Server won't save history, so save the video position in local storage
+ if (!this.authorizationHeader()) {
+ saveVideoWatchHistory(this.videoUUID, currentTime)
}
- const headers = new Headers({
- 'Content-type': 'application/json; charset=UTF-8'
- })
+ if (!this.videoViewUrl) return Promise.resolve(true)
+
+ const body: VideoView = { currentTime, viewEvent }
+ const headers = new Headers({ 'Content-type': 'application/json; charset=UTF-8' })
if (this.authorizationHeader()) headers.set('Authorization', this.authorizationHeader())
return fetch(this.videoViewUrl, { method: 'POST', body: JSON.stringify(body), headers })