Move webtorrent inside a service

pull/10/head
Chocobozzz 2016-05-31 22:39:36 +02:00
parent 092fbf58cc
commit d3ef341abe
5 changed files with 42 additions and 15 deletions

View File

@ -1,3 +1,6 @@
/// <reference path="../../../typings/globals/jquery/index.d.ts" />
/// <reference path="../../../typings/globals/jquery.fileupload/index.d.ts" />
import { Component, ElementRef, OnInit } from '@angular/core'; import { Component, ElementRef, OnInit } from '@angular/core';
import { Router } from '@angular/router-deprecated'; import { Router } from '@angular/router-deprecated';
@ -6,9 +9,6 @@ import { PROGRESSBAR_DIRECTIVES } from 'ng2-bootstrap/components/progressbar';
import { AuthService, User } from '../../users/index'; import { AuthService, User } from '../../users/index';
// TODO: import it with systemjs
declare var jQuery: any;
@Component({ @Component({
selector: 'my-videos-add', selector: 'my-videos-add',
styleUrls: [ 'client/app/videos/video-add/video-add.component.css' ], styleUrls: [ 'client/app/videos/video-add/video-add.component.css' ],
@ -37,7 +37,7 @@ export class VideoAddComponent implements OnInit {
dataType: 'json', dataType: 'json',
singleFileUploads: true, singleFileUploads: true,
multipart: true, multipart: true,
autoupload: false, autoUpload: false,
add: (e, data) => { add: (e, data) => {
this.form = data; this.form = data;

View File

@ -1 +1,2 @@
export * from './video-watch.component'; export * from './video-watch.component';
export * from './webtorrent.service';

View File

@ -4,14 +4,13 @@ import { CanDeactivate, ComponentInstruction, RouteParams } from '@angular/route
import { BytesPipe } from 'angular-pipes/src/math/bytes.pipe'; import { BytesPipe } from 'angular-pipes/src/math/bytes.pipe';
import { LoaderComponent, Video, VideoService } from '../shared/index'; import { LoaderComponent, Video, VideoService } from '../shared/index';
import { WebTorrentService } from './webtorrent.service';
// TODO import it with systemjs
declare var WebTorrent: any;
@Component({ @Component({
selector: 'my-video-watch', selector: 'my-video-watch',
templateUrl: 'client/app/videos/video-watch/video-watch.component.html', templateUrl: 'client/app/videos/video-watch/video-watch.component.html',
styleUrls: [ 'client/app/videos/video-watch/video-watch.component.css' ], styleUrls: [ 'client/app/videos/video-watch/video-watch.component.css' ],
providers: [ WebTorrentService ],
directives: [ LoaderComponent ], directives: [ LoaderComponent ],
pipes: [ BytesPipe ] pipes: [ BytesPipe ]
}) })
@ -23,23 +22,21 @@ export class VideoWatchComponent implements OnInit, CanDeactivate {
uploadSpeed: number; uploadSpeed: number;
video: Video; video: Video;
private client: any;
private interval: NodeJS.Timer; private interval: NodeJS.Timer;
constructor( constructor(
private elementRef: ElementRef, private elementRef: ElementRef,
private routeParams: RouteParams, private routeParams: RouteParams,
private videoService: VideoService private videoService: VideoService,
) { private webTorrentService: WebTorrentService
// TODO: use a service ) {}
this.client = new WebTorrent({ dht: false });
}
loadVideo(video: Video) { loadVideo(video: Video) {
this.loading = true; this.loading = true;
this.video = video; this.video = video;
console.log('Adding ' + this.video.magnetUri + '.'); console.log('Adding ' + this.video.magnetUri + '.');
this.client.add(this.video.magnetUri, (torrent) => {
this.webTorrentService.add(this.video.magnetUri, (torrent) => {
this.loading = false; this.loading = false;
console.log('Added ' + this.video.magnetUri + '.'); console.log('Added ' + this.video.magnetUri + '.');
torrent.files[0].appendTo(this.elementRef.nativeElement.querySelector('.embed-responsive'), (err) => { torrent.files[0].appendTo(this.elementRef.nativeElement.querySelector('.embed-responsive'), (err) => {
@ -69,7 +66,7 @@ export class VideoWatchComponent implements OnInit, CanDeactivate {
routerCanDeactivate(next: ComponentInstruction, prev: ComponentInstruction) { routerCanDeactivate(next: ComponentInstruction, prev: ComponentInstruction) {
console.log('Removing video from webtorrent.'); console.log('Removing video from webtorrent.');
clearInterval(this.interval); clearInterval(this.interval);
this.client.remove(this.video.magnetUri); this.webTorrentService.remove(this.video.magnetUri);
return true; return true;
} }
} }

View File

@ -0,0 +1,26 @@
// Don't use webtorrent typings for now
// It misses some little things I'll fix later
// <reference path="../../../typings/globals/webtorrent/index.d.ts" />
import { Injectable } from '@angular/core';
// import WebTorrent = require('webtorrent');
declare var WebTorrent: any;
@Injectable()
export class WebTorrentService {
// private client: WebTorrent.Client;
private client: any;
constructor() {
this.client = new WebTorrent({ dht: false });
}
add(magnetUri: string, callback: Function) {
return this.client.add(magnetUri, callback);
}
remove(magnetUri: string) {
return this.client.remove(magnetUri);
}
}

View File

@ -51,9 +51,12 @@
"app/videos/video-list/video-sort.component.ts", "app/videos/video-list/video-sort.component.ts",
"app/videos/video-watch/index.ts", "app/videos/video-watch/index.ts",
"app/videos/video-watch/video-watch.component.ts", "app/videos/video-watch/video-watch.component.ts",
"app/videos/video-watch/webtorrent.service.ts",
"main.ts", "main.ts",
"typings/globals/es6-shim/index.d.ts", "typings/globals/es6-shim/index.d.ts",
"typings/globals/jasmine/index.d.ts", "typings/globals/jasmine/index.d.ts",
"typings/globals/jquery.fileupload/index.d.ts",
"typings/globals/jquery/index.d.ts",
"typings/globals/node/index.d.ts", "typings/globals/node/index.d.ts",
"typings/index.d.ts" "typings/index.d.ts"
], ],