]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/videos/video-watch/video-watch.component.ts
Remove ng2 file upload module
[github/Chocobozzz/PeerTube.git] / client / src / app / videos / video-watch / video-watch.component.ts
index 05a2c296cb002ace648d00269823f8da9669aa6e..f5a47199d197030ab0a72390ae8be9453311a481 100644 (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 () {
@@ -93,8 +90,8 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
     window.clearInterval(this.torrentInfosInterval)
     window.clearTimeout(this.errorTimer)
 
-    if (this.video !== null && this.webTorrentService.has(this.video.magnetUri)) {
-      this.webTorrentService.remove(this.video.magnetUri)
+    if (this.video !== null && this.webTorrentService.has(this.video.getDefaultMagnetUri())) {
+      this.webTorrentService.remove(this.video.getDefaultMagnetUri())
     }
 
     // Remove player
@@ -111,13 +108,13 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
     // We are loading the video
     this.loading = true
 
-    console.log('Adding ' + this.video.magnetUri + '.')
+    console.log('Adding ' + this.video.getDefaultMagnetUri() + '.')
 
     // The callback might never return if there are network issues
     // 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.getDefaultMagnetUri(), torrent => {
       // Clear the error timer
       window.clearTimeout(this.errorTimer)
       // Maybe the error was fired by the timer, so reset it
@@ -126,7 +123,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
       // We are not loading the video anymore
       this.loading = false
 
-      console.log('Added ' + this.video.magnetUri + '.')
+      console.log('Added ' + this.video.getDefaultMagnetUri() + '.')
       torrent.files[0].renderTo(this.playerElement, (err) => {
         if (err) {
           this.notificationsService.error('Error', 'Cannot append the file in the video element.')
@@ -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 () {
@@ -158,7 +158,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
                         this.userRating = 'like'
                       },
 
-                      err => this.notificationsService.error('Error', err.text)
+                      err => this.notificationsService.error('Error', err.message)
                      )
   }
 
@@ -175,7 +175,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
                         this.userRating = 'dislike'
                       },
 
-                      err => this.notificationsService.error('Error', err.text)
+                      err => this.notificationsService.error('Error', err.message)
                      )
   }
 
@@ -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
@@ -262,7 +275,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
                          }
                        },
 
-                       err => this.notificationsService.error('Error', err.text)
+                       err => this.notificationsService.error('Error', err.message)
                       )
   }