]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/videos/video-watch/video-watch.component.ts
Dirty update to Angular RC6
[github/Chocobozzz/PeerTube.git] / client / src / app / videos / video-watch / video-watch.component.ts
index 05e844f60e5be0569ade01a93de61400c85e2a5a..2a60e932770be3903495644004ae0ed518df48a7 100644 (file)
@@ -1,21 +1,16 @@
-import { Component, ElementRef, OnInit } from '@angular/core';
-import { CanDeactivate, ComponentInstruction, RouteParams } from '@angular/router-deprecated';
+import { Component, ElementRef, NgZone, OnDestroy, OnInit } from '@angular/core';
+import { ActivatedRoute } from '@angular/router';
 
-import { BytesPipe } from 'angular-pipes/src/math/bytes.pipe';
-
-import { LoaderComponent, Video, VideoService } from '../shared';
+import { Video, VideoService } from '../shared';
 import { WebTorrentService } from './webtorrent.service';
 
 @Component({
   selector: 'my-video-watch',
   template: require('./video-watch.component.html'),
-  styles: [ require('./video-watch.component.scss') ],
-  providers: [ WebTorrentService ],
-  directives: [ LoaderComponent ],
-  pipes: [ BytesPipe ]
+  styles: [ require('./video-watch.component.scss') ]
 })
 
-export class VideoWatchComponent implements OnInit, CanDeactivate {
+export class VideoWatchComponent implements OnInit, OnDestroy {
   private static LOADTIME_TOO_LONG: number = 30000;
 
   downloadSpeed: number;
@@ -26,11 +21,13 @@ export class VideoWatchComponent implements OnInit, CanDeactivate {
   video: Video;
 
   private errorTimer: NodeJS.Timer;
+  private sub: any;
   private torrentInfosInterval: NodeJS.Timer;
 
   constructor(
     private elementRef: ElementRef,
-    private routeParams: RouteParams,
+    private ngZone: NgZone,
+    private route: ActivatedRoute,
     private videoService: VideoService,
     private webTorrentService: WebTorrentService
   ) {}
@@ -64,35 +61,44 @@ export class VideoWatchComponent implements OnInit, CanDeactivate {
         }
       });
 
-      // Refresh each second
-      this.torrentInfosInterval = setInterval(() => {
-        this.downloadSpeed = torrent.downloadSpeed;
-        this.numPeers = torrent.numPeers;
-        this.uploadSpeed = torrent.uploadSpeed;
-      }, 1000);
+      this.runInProgress(torrent);
     });
   }
 
-  ngOnInit() {
-    let id = this.routeParams.get('id');
-    this.videoService.getVideo(id).subscribe(
-      video => {
-        this.video = video;
-        this.loadVideo();
-      },
-      error => alert(error)
-    );
-  }
-
-  routerCanDeactivate(next: ComponentInstruction, prev: ComponentInstruction) {
+  ngOnDestroy() {
     console.log('Removing video from webtorrent.');
     clearInterval(this.torrentInfosInterval);
     this.webTorrentService.remove(this.video.magnetUri);
-    return true;
+
+    this.sub.unsubscribe();
+  }
+
+  ngOnInit() {
+    this.sub = this.route.params.subscribe(routeParams => {
+      let id = routeParams['id'];
+      this.videoService.getVideo(id).subscribe(
+        video => {
+          this.video = video;
+          this.loadVideo();
+        },
+        error => alert(error.text)
+      );
+    });
   }
 
   private loadTooLong() {
     this.error = true;
     console.error('The video load seems to be abnormally long.');
   }
+
+  private runInProgress(torrent: any) {
+    // Refresh each second
+    this.torrentInfosInterval = setInterval(() => {
+      this.ngZone.run(() => {
+        this.downloadSpeed = torrent.downloadSpeed;
+        this.numPeers = torrent.numPeers;
+        this.uploadSpeed = torrent.uploadSpeed;
+      });
+    }, 1000);
+  }
 }