diff options
Diffstat (limited to 'client/src/app/menu/menu.component.ts')
-rw-r--r-- | client/src/app/menu/menu.component.ts | 50 |
1 files changed, 35 insertions, 15 deletions
diff --git a/client/src/app/menu/menu.component.ts b/client/src/app/menu/menu.component.ts index ce209457c..37702e975 100644 --- a/client/src/app/menu/menu.component.ts +++ b/client/src/app/menu/menu.component.ts | |||
@@ -23,8 +23,10 @@ export class MenuComponent implements OnInit { | |||
23 | 23 | ||
24 | userHasAdminAccess = false | 24 | userHasAdminAccess = false |
25 | helpVisible = false | 25 | helpVisible = false |
26 | languages: VideoConstant<string>[] = [] | ||
27 | 26 | ||
27 | videoLanguages: string[] = [] | ||
28 | |||
29 | private languages: VideoConstant<string>[] = [] | ||
28 | private serverConfig: ServerConfig | 30 | private serverConfig: ServerConfig |
29 | private routesPerRight: { [ role in UserRight ]?: string } = { | 31 | private routesPerRight: { [ role in UserRight ]?: string } = { |
30 | [UserRight.MANAGE_USERS]: '/admin/users', | 32 | [UserRight.MANAGE_USERS]: '/admin/users', |
@@ -71,30 +73,32 @@ export class MenuComponent implements OnInit { | |||
71 | } | 73 | } |
72 | ) | 74 | ) |
73 | 75 | ||
74 | this.hotkeysService.cheatSheetToggle.subscribe(isOpen => this.helpVisible = isOpen) | 76 | this.hotkeysService.cheatSheetToggle |
77 | .subscribe(isOpen => this.helpVisible = isOpen) | ||
78 | |||
79 | this.serverService.getVideoLanguages() | ||
80 | .subscribe(languages => { | ||
81 | this.languages = languages | ||
75 | 82 | ||
76 | this.serverService.getVideoLanguages().subscribe(languages => this.languages = languages) | 83 | this.authService.userInformationLoaded |
84 | .subscribe(() => this.buildUserLanguages()) | ||
85 | }) | ||
77 | } | 86 | } |
78 | 87 | ||
79 | get language () { | 88 | get language () { |
80 | return this.languageChooserModal.getCurrentLanguage() | 89 | return this.languageChooserModal.getCurrentLanguage() |
81 | } | 90 | } |
82 | 91 | ||
83 | get videoLanguages (): string[] { | ||
84 | if (!this.user) return | ||
85 | if (!this.user.videoLanguages) return [this.i18n('any language')] | ||
86 | return this.user.videoLanguages | ||
87 | .map(locale => this.langForLocale(locale)) | ||
88 | .map(value => value === undefined ? '?' : value) | ||
89 | } | ||
90 | |||
91 | get nsfwPolicy () { | 92 | get nsfwPolicy () { |
92 | if (!this.user) return | 93 | if (!this.user) return |
94 | |||
93 | switch (this.user.nsfwPolicy) { | 95 | switch (this.user.nsfwPolicy) { |
94 | case 'do_not_list': | 96 | case 'do_not_list': |
95 | return this.i18n('hide') | 97 | return this.i18n('hide') |
98 | |||
96 | case 'blur': | 99 | case 'blur': |
97 | return this.i18n('blur') | 100 | return this.i18n('blur') |
101 | |||
98 | case 'display': | 102 | case 'display': |
99 | return this.i18n('display') | 103 | return this.i18n('display') |
100 | } | 104 | } |
@@ -156,13 +160,29 @@ export class MenuComponent implements OnInit { | |||
156 | toggleUseP2P () { | 160 | toggleUseP2P () { |
157 | if (!this.user) return | 161 | if (!this.user) return |
158 | this.user.webTorrentEnabled = !this.user.webTorrentEnabled | 162 | this.user.webTorrentEnabled = !this.user.webTorrentEnabled |
159 | this.userService.updateMyProfile({ | 163 | |
160 | webTorrentEnabled: this.user.webTorrentEnabled | 164 | this.userService.updateMyProfile({ webTorrentEnabled: this.user.webTorrentEnabled }) |
161 | }).subscribe(() => this.authService.refreshUserInformation()) | 165 | .subscribe(() => this.authService.refreshUserInformation()) |
162 | } | 166 | } |
163 | 167 | ||
164 | langForLocale (localeId: string) { | 168 | langForLocale (localeId: string) { |
165 | return this.languages.find(lang => lang.id = localeId).label | 169 | return this.languages.find(lang => lang.id === localeId).label |
170 | } | ||
171 | |||
172 | private buildUserLanguages () { | ||
173 | if (!this.user) { | ||
174 | this.videoLanguages = [] | ||
175 | return | ||
176 | } | ||
177 | |||
178 | if (!this.user.videoLanguages) { | ||
179 | this.videoLanguages = [ this.i18n('any language') ] | ||
180 | return | ||
181 | } | ||
182 | |||
183 | this.videoLanguages = this.user.videoLanguages | ||
184 | .map(locale => this.langForLocale(locale)) | ||
185 | .map(value => value === undefined ? '?' : value) | ||
166 | } | 186 | } |
167 | 187 | ||
168 | private computeIsUserHasAdminAccess () { | 188 | private computeIsUserHasAdminAccess () { |