Implement user requests autorizations in the client side
[oweals/peertube.git] / client / angular / app / app.component.ts
1 import { Component, ElementRef } from 'angular2/core';
2 import { RouteConfig, ROUTER_DIRECTIVES, ROUTER_PROVIDERS, Router } from 'angular2/router';
3 import { HTTP_PROVIDERS } from 'angular2/http';
4
5 import { VideosAddComponent } from '../videos/components/add/videos-add.component';
6 import { VideosListComponent } from '../videos/components/list/videos-list.component';
7 import { VideosWatchComponent } from '../videos/components/watch/videos-watch.component';
8 import { VideosService } from '../videos/services/videos.service';
9 import { FriendsService } from '../friends/services/friends.service';
10 import { UserLoginComponent } from '../users/components/login/login.component';
11 import { AuthService } from '../users/services/auth.service';
12 import { AuthStatus } from '../users/models/authStatus';
13
14 @RouteConfig([
15   {
16     path: '/users/login',
17     name: 'UserLogin',
18     component: UserLoginComponent
19   },
20   {
21     path: '/videos/list',
22     name: 'VideosList',
23     component: VideosListComponent,
24     useAsDefault: true
25   },
26   {
27     path: '/videos/watch/:id',
28     name: 'VideosWatch',
29     component: VideosWatchComponent
30   },
31   {
32     path: '/videos/add',
33     name: 'VideosAdd',
34     component: VideosAddComponent
35   }
36 ])
37
38 @Component({
39     selector: 'my-app',
40     templateUrl: 'app/angular/app/app.component.html',
41     styleUrls: [ 'app/angular/app/app.component.css' ],
42     directives: [ ROUTER_DIRECTIVES ],
43     providers: [ ROUTER_PROVIDERS, HTTP_PROVIDERS,
44                  ElementRef, VideosService, FriendsService,
45                  AuthService
46                ]
47 })
48
49 export class AppComponent {
50   isLoggedIn: boolean;
51
52   constructor(private _friendsService: FriendsService,
53               private _authService: AuthService,
54               private _router: Router
55   ) {
56     this.isLoggedIn = this._authService.isLoggedIn();
57
58     this._authService.loginChanged$.subscribe(
59       status => {
60         if (status === AuthStatus.LoggedIn) {
61           this.isLoggedIn = true;
62         }
63       }
64     );
65   }
66
67   doSearch(search: string) {
68     if (search !== '') {
69       this._router.navigate(['VideosList', { search: search }]);
70     } else {
71       this._router.navigate(['VideosList']);
72     }
73   }
74
75   logout() {
76     // this._authService.logout();
77   }
78
79   makeFriends() {
80     this._friendsService.makeFriends().subscribe(
81       status => {
82         if (status === 409) {
83           alert('Already made friends!');
84         } else {
85           alert('Made friends!');
86         }
87       },
88       error => alert(error)
89     );
90   }
91
92   quitFriends() {
93     this._friendsService.quitFriends().subscribe(
94       status => {
95           alert('Quit friends!');
96       },
97       error => alert(error)
98     );
99   }
100 }