-import { PlayerNetworkInfo } from '../peertube-videojs-typings'
import videojs from 'video.js'
+import { PeerTubeP2PInfoButtonOptions, PlayerNetworkInfo } from '../peertube-videojs-typings'
import { bytes } from '../utils'
const Button = videojs.getComponent('Button')
class P2pInfoButton extends Button {
+ constructor (player: videojs.Player, options?: PeerTubeP2PInfoButtonOptions) {
+ super(player, options as any)
+ }
+
createEl () {
const div = videojs.dom.createEl('div', {
className: 'vjs-peertube'
}) as HTMLDivElement
div.appendChild(subDivWebtorrent)
+ // Stop here if P2P is not enabled
+ const p2pEnabled = (this.options_ as PeerTubeP2PInfoButtonOptions).p2pEnabled
+ if (!p2pEnabled) return div as HTMLButtonElement
+
const downloadIcon = videojs.dom.createEl('span', {
className: 'icon icon-download'
})
const totalUploaded = bytes(p2pStats.uploaded + httpStats.uploaded)
const numPeers = p2pStats.numPeers
- subDivWebtorrent.title = this.player().localize('Total downloaded: ') + totalDownloaded.join(' ') + '\n' +
- this.player().localize('Total uploaded: ' + totalUploaded.join(' '))
+ subDivWebtorrent.title = this.player().localize('Total downloaded: ') + totalDownloaded.join(' ') + '\n'
+
+ if (data.source === 'p2p-media-loader') {
+ const downloadedFromServer = bytes(httpStats.downloaded).join(' ')
+ const downloadedFromPeers = bytes(p2pStats.downloaded).join(' ')
+
+ subDivWebtorrent.title +=
+ ' * ' + this.player().localize('From servers: ') + downloadedFromServer + '\n' +
+ ' * ' + this.player().localize('From peers: ') + downloadedFromPeers + '\n'
+ }
+ subDivWebtorrent.title += this.player().localize('Total uploaded: ') + totalUploaded.join(' ')
- downloadSpeedNumber.textContent = downloadSpeed[ 0 ]
- downloadSpeedUnit.textContent = ' ' + downloadSpeed[ 1 ]
+ downloadSpeedNumber.textContent = downloadSpeed[0]
+ downloadSpeedUnit.textContent = ' ' + downloadSpeed[1]
- uploadSpeedNumber.textContent = uploadSpeed[ 0 ]
- uploadSpeedUnit.textContent = ' ' + uploadSpeed[ 1 ]
+ uploadSpeedNumber.textContent = uploadSpeed[0]
+ uploadSpeedUnit.textContent = ' ' + uploadSpeed[1]
peersNumber.textContent = numPeers.toString()
peersText.textContent = ' ' + (numPeers > 1 ? this.player().localize('peers') : this.player_.localize('peer'))