Move webtorrent inside a service
This commit is contained in:
parent
092fbf58cc
commit
d3ef341abe
5 changed files with 42 additions and 15 deletions
|
@ -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;
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
export * from './video-watch.component';
|
export * from './video-watch.component';
|
||||||
|
export * from './webtorrent.service';
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
26
client/app/videos/video-watch/webtorrent.service.ts
Normal file
26
client/app/videos/video-watch/webtorrent.service.ts
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -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"
|
||||||
],
|
],
|
||||||
|
|
Loading…
Reference in a new issue