Log play attempt separately for each file
This commit is contained in:
@@ -1,7 +1,5 @@
|
|||||||
const electron = require('electron')
|
const {ipcRenderer} = require('electron')
|
||||||
|
const telemetry = require('../lib/telemetry')
|
||||||
const ipcRenderer = electron.ipcRenderer
|
|
||||||
|
|
||||||
const Playlist = require('../lib/playlist')
|
const Playlist = require('../lib/playlist')
|
||||||
|
|
||||||
// Controls local play back: the <video>/<audio> tag and VLC
|
// Controls local play back: the <video>/<audio> tag and VLC
|
||||||
@@ -12,7 +10,7 @@ module.exports = class MediaController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mediaSuccess () {
|
mediaSuccess () {
|
||||||
this.state.playing.result = 'success'
|
telemetry.logPlayAttempt('success')
|
||||||
}
|
}
|
||||||
|
|
||||||
mediaStalled () {
|
mediaStalled () {
|
||||||
@@ -22,7 +20,7 @@ module.exports = class MediaController {
|
|||||||
mediaError (error) {
|
mediaError (error) {
|
||||||
const state = this.state
|
const state = this.state
|
||||||
if (state.location.url() === 'player') {
|
if (state.location.url() === 'player') {
|
||||||
state.playing.result = 'error'
|
telemetry.logPlayAttempt('error')
|
||||||
state.playing.location = 'error'
|
state.playing.location = 'error'
|
||||||
ipcRenderer.send('checkForExternalPlayer', state.saved.prefs.externalPlayerPath)
|
ipcRenderer.send('checkForExternalPlayer', state.saved.prefs.externalPlayerPath)
|
||||||
ipcRenderer.once('checkForExternalPlayer', function (e, isInstalled) {
|
ipcRenderer.once('checkForExternalPlayer', function (e, isInstalled) {
|
||||||
|
|||||||
@@ -211,6 +211,7 @@ module.exports = class PlaybackController {
|
|||||||
const torrentSummary = TorrentSummary.getByKey(state, infoHash)
|
const torrentSummary = TorrentSummary.getByKey(state, infoHash)
|
||||||
|
|
||||||
state.playing.infoHash = torrentSummary.infoHash
|
state.playing.infoHash = torrentSummary.infoHash
|
||||||
|
state.playing.isReady = false
|
||||||
|
|
||||||
// update UI to show pending playback
|
// update UI to show pending playback
|
||||||
sound.play('PLAY')
|
sound.play('PLAY')
|
||||||
@@ -232,6 +233,7 @@ module.exports = class PlaybackController {
|
|||||||
|
|
||||||
function onTorrentReady () {
|
function onTorrentReady () {
|
||||||
ipcRenderer.send('wt-start-server', torrentSummary.infoHash)
|
ipcRenderer.send('wt-start-server', torrentSummary.infoHash)
|
||||||
|
ipcRenderer.once('wt-server-running', () => state.playing.isReady = true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -320,12 +322,7 @@ module.exports = class PlaybackController {
|
|||||||
// Save volume (this session only, not in state.saved)
|
// Save volume (this session only, not in state.saved)
|
||||||
state.previousVolume = state.playing.volume
|
state.previousVolume = state.playing.volume
|
||||||
|
|
||||||
// Telemetry: track what happens after the user clicks play
|
if (!state.playing.isReady) telemetry.logPlayAttempt('abandoned') // user gave up waiting
|
||||||
const result = state.playing.result // 'success' or 'error'
|
|
||||||
if (result === 'success') telemetry.logPlayAttempt('success') // first frame displayed
|
|
||||||
else if (result === 'error') telemetry.logPlayAttempt('error') // codec missing, etc
|
|
||||||
else if (result === undefined) telemetry.logPlayAttempt('abandoned') // user gave up waiting
|
|
||||||
else console.error('Unknown state.playing.result', state.playing.result)
|
|
||||||
|
|
||||||
// Reset the window contents back to the home screen
|
// Reset the window contents back to the home screen
|
||||||
state.playing = State.getDefaultPlayState()
|
state.playing = State.getDefaultPlayState()
|
||||||
|
|||||||
@@ -91,7 +91,8 @@ function getDefaultPlayState () {
|
|||||||
location: 'local', /* 'local', 'chromecast', 'airplay' */
|
location: 'local', /* 'local', 'chromecast', 'airplay' */
|
||||||
type: null, /* 'audio' or 'video', could be 'other' if ever support eg streaming to VLC */
|
type: null, /* 'audio' or 'video', could be 'other' if ever support eg streaming to VLC */
|
||||||
currentTime: 0, /* seconds */
|
currentTime: 0, /* seconds */
|
||||||
duration: 1, /* seconds */
|
duration: 1, /* seconds */,
|
||||||
|
isReady: false,
|
||||||
isPaused: true,
|
isPaused: true,
|
||||||
isStalled: false,
|
isStalled: false,
|
||||||
lastTimeUpdate: 0, /* Unix time in ms */
|
lastTimeUpdate: 0, /* Unix time in ms */
|
||||||
|
|||||||
Reference in New Issue
Block a user