Playlist videos component
[oweals/peertube.git] / client / src / app / +my-account / my-account.component.ts
1 import { Component } from '@angular/core'
2 import { ServerService } from '@app/core'
3 import { I18n } from '@ngx-translate/i18n-polyfill'
4 import { TopMenuDropdownParam } from '@app/shared/menu/top-menu-dropdown.component'
5
6 @Component({
7   selector: 'my-my-account',
8   templateUrl: './my-account.component.html',
9   styleUrls: [ './my-account.component.scss' ]
10 })
11 export class MyAccountComponent {
12   menuEntries: TopMenuDropdownParam[] = []
13
14   constructor (
15     private serverService: ServerService,
16     private i18n: I18n
17   ) {
18
19     const libraryEntries: TopMenuDropdownParam = {
20       label: this.i18n('My library'),
21       children: [
22         {
23           label: this.i18n('My channels'),
24           routerLink: '/my-account/video-channels'
25         },
26         {
27           label: this.i18n('My videos'),
28           routerLink: '/my-account/videos'
29         },
30         {
31           label: this.i18n('My playlists'),
32           routerLink: '/my-account/video-playlists'
33         },
34         {
35           label: this.i18n('My subscriptions'),
36           routerLink: '/my-account/subscriptions'
37         },
38         {
39           label: this.i18n('My history'),
40           routerLink: '/my-account/history/videos'
41         }
42       ]
43     }
44
45     if (this.isVideoImportEnabled()) {
46       libraryEntries.children.push({
47         label: 'My imports',
48         routerLink: '/my-account/video-imports'
49       })
50     }
51
52     const miscEntries: TopMenuDropdownParam = {
53       label: this.i18n('Misc'),
54       children: [
55         {
56           label: this.i18n('Muted accounts'),
57           routerLink: '/my-account/blocklist/accounts'
58         },
59         {
60           label: this.i18n('Muted instances'),
61           routerLink: '/my-account/blocklist/servers'
62         },
63         {
64           label: this.i18n('Ownership changes'),
65           routerLink: '/my-account/ownership'
66         }
67       ]
68     }
69
70     this.menuEntries = [
71       {
72         label: this.i18n('My settings'),
73         routerLink: '/my-account/settings'
74       },
75       {
76         label: this.i18n('My notifications'),
77         routerLink: '/my-account/notifications'
78       },
79       libraryEntries,
80       miscEntries
81     ]
82   }
83
84   isVideoImportEnabled () {
85     const importConfig = this.serverService.getConfig().import.videos
86
87     return importConfig.http.enabled || importConfig.torrent.enabled
88   }
89
90 }