Better webtorrent error handling

pull/76/head
Chocobozzz 2017-07-23 11:07:30 +02:00
parent 407c4473ad
commit 0c31c33dcb
1 changed files with 18 additions and 5 deletions

View File

@ -81,10 +81,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
self.player = this
})
this.errorsSub = this.webTorrentService.errors.subscribe(err => {
const message = typeof err === 'string' ? err : err.message
this.notificationsService.error('Error', message)
})
this.errorsSub = this.webTorrentService.errors.subscribe(err => this.handleError(err))
}
ngOnDestroy () {
@ -117,7 +114,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
// So we create a timer to inform the user the load is abnormally long
this.errorTimer = window.setTimeout(() => this.loadTooLong(), VideoWatchComponent.LOADTIME_TOO_LONG)
this.webTorrentService.add(this.video.magnetUri, torrent => {
const torrent = this.webTorrentService.add(this.video.magnetUri, torrent => {
// Clear the error timer
window.clearTimeout(this.errorTimer)
// Maybe the error was fired by the timer, so reset it
@ -143,6 +140,9 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
this.runInProgress(torrent)
})
torrent.on('error', err => this.handleError(err))
torrent.on('warning', err => this.handleError(err))
}
setLike () {
@ -250,6 +250,19 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
return this.video.isBlackistableBy(this.authService.getUser())
}
private handleError (err: any) {
const errorMessage: string = typeof err === 'string' ? err : err.message
let message = ''
if (errorMessage.indexOf('http error') !== -1) {
message = 'Cannot fetch video from server, maybe down.'
} else {
message = errorMessage
}
this.notificationsService.error('Error', message)
}
private checkUserRating () {
// Unlogged users do not have ratings
if (this.isUserLoggedIn() === false) return