// Big thanks to: https://github.com/kmoskwiak/videojs-resolution-switcher
-import videojs, { Player } from 'video.js'
+import * as videojs from 'video.js'
import * as WebTorrent from 'webtorrent'
-import { VideoFile } from '../../../../shared'
+import { VideoFile } from '../../../../shared/models/videos/video.model'
import { renderVideo } from './video-renderer'
const MenuItem = videojsUntyped.getComponent('MenuItem')
const ResolutionMenuItem = videojsUntyped.extend(MenuItem, {
- constructor: function (player: Player, options) {
+ constructor: function (player: videojs.Player, options) {
options.selectable = true
MenuItem.call(this, player, options)
createEl: function () {
const div = document.createElement('div')
+ const subDiv = document.createElement('div')
+ div.appendChild(subDiv)
const downloadIcon = document.createElement('span')
downloadIcon.classList.add('icon', 'icon-download')
- div.appendChild(downloadIcon)
+ subDiv.appendChild(downloadIcon)
const downloadSpeedText = document.createElement('span')
downloadSpeedText.classList.add('download-speed-text')
const downloadSpeedUnit = document.createElement('span')
downloadSpeedText.appendChild(downloadSpeedNumber)
downloadSpeedText.appendChild(downloadSpeedUnit)
- div.appendChild(downloadSpeedText)
+ subDiv.appendChild(downloadSpeedText)
const uploadIcon = document.createElement('span')
uploadIcon.classList.add('icon', 'icon-upload')
- div.appendChild(uploadIcon)
+ subDiv.appendChild(uploadIcon)
const uploadSpeedText = document.createElement('span')
uploadSpeedText.classList.add('upload-speed-text')
const uploadSpeedUnit = document.createElement('span')
uploadSpeedText.appendChild(uploadSpeedNumber)
uploadSpeedText.appendChild(uploadSpeedUnit)
- div.appendChild(uploadSpeedText)
+ subDiv.appendChild(uploadSpeedText)
const peersText = document.createElement('span')
peersText.textContent = ' peers'
peersText.classList.add('peers-text')
const peersNumber = document.createElement('span')
peersNumber.classList.add('peers-number')
- div.appendChild(peersNumber)
- div.appendChild(peersText)
+ subDiv.appendChild(peersNumber)
+ subDiv.appendChild(peersText)
div.className = 'vjs-webtorrent'
// Hide the stats before we get the info
- div.style.display = 'none'
+ subDiv.className = 'vjs-webtorrent-hidden'
this.player_.on('torrentInfo', (event, data) => {
const downloadSpeed = bytes(data.downloadSpeed)
peersNumber.textContent = numPeers
- div.style.display = 'block'
+ subDiv.className = 'vjs-webtorrent-displayed'
})
return div
if (err) return handleError(err)
this.renderer = renderer
- player.play()
-
- return done()
+ player.play().then(done)
})
})
}
}
+ player.setVideoFiles = function (files: VideoFile[]) {
+ player.videoFiles = files
+
+ player.updateVideoFile(undefined, () => player.play())
+ }
+
player.ready(function () {
const controlBar = player.controlBar
player.updateVideoFile()
} else {
player.one('play', () => {
- // Pause, we wait the video to load before
- player.pause()
-
- player.updateVideoFile(undefined, () => player.play())
+ // On firefox, we need to wait to load the video before playing
+ if (navigator.userAgent.toLowerCase().indexOf('firefox') !== -1) {
+ player.pause()
+ player.updateVideoFile(undefined, () => player.play())
+ return
+ }
+
+ player.updateVideoFile(undefined)
})
}