ae86bc96f035bf2baea5ee669bef5504aed8d74c
[oweals/peertube.git] / client / src / app / app.component.ts
1 import { Component, OnInit, ViewContainerRef } from '@angular/core'
2 import { Router } from '@angular/router'
3
4 import { AuthService, ConfigService } from './core'
5 import { VideoService } from './videos'
6 import { UserService } from './shared'
7
8 @Component({
9   selector: 'my-app',
10   templateUrl: './app.component.html',
11   styleUrls: [ './app.component.scss' ]
12 })
13 export class AppComponent implements OnInit {
14   notificationOptions = {
15     timeOut: 3000,
16     lastOnBottom: true,
17     clickToClose: true,
18     maxLength: 0,
19     maxStack: 7,
20     showProgressBar: false,
21     pauseOnHover: false,
22     preventDuplicates: false,
23     preventLastDuplicates: 'visible',
24     rtl: false
25   }
26
27   isMenuDisplayed = true
28
29   constructor (
30     private router: Router,
31     private authService: AuthService,
32     private configService: ConfigService,
33     private userService: UserService,
34     private videoService: VideoService
35   ) {}
36
37   ngOnInit () {
38     this.authService.loadClientCredentials()
39
40     if (this.authService.isLoggedIn()) {
41       // The service will automatically redirect to the login page if the token is not valid anymore
42       this.userService.checkTokenValidity()
43     }
44
45     this.configService.loadConfig()
46     this.videoService.loadVideoCategories()
47     this.videoService.loadVideoLicences()
48     this.videoService.loadVideoLanguages()
49
50     // Do not display menu on small screens
51     if (window.innerWidth < 600) {
52       this.isMenuDisplayed = false
53     }
54   }
55
56   isInAdmin () {
57     return this.router.url.indexOf('/admin/') !== -1
58   }
59
60   toggleMenu () {
61     this.isMenuDisplayed = !this.isMenuDisplayed
62   }
63
64   getMainColClasses () {
65     const colSizes = {
66       md: 10,
67       sm: 9,
68       xs: 9
69     }
70
71     // Take all width is the menu is not displayed
72     if (this.isMenuDisplayed === false) {
73       Object.keys(colSizes).forEach(col => colSizes[col] = 12)
74     }
75
76     const classes = [ 'main-col' ]
77     Object.keys(colSizes).forEach(col => classes.push(`col-${col}-${colSizes[col]}`))
78
79     return classes
80   }
81 }