diff options
Diffstat (limited to 'client/src/app/header')
-rw-r--r-- | client/src/app/header/header.component.html | 2 | ||||
-rw-r--r-- | client/src/app/header/header.component.scss | 1 | ||||
-rw-r--r-- | client/src/app/header/header.component.ts | 36 |
3 files changed, 36 insertions, 3 deletions
diff --git a/client/src/app/header/header.component.html b/client/src/app/header/header.component.html index 8ee41c4de..4b3d5e105 100644 --- a/client/src/app/header/header.component.html +++ b/client/src/app/header/header.component.html | |||
@@ -4,7 +4,7 @@ | |||
4 | > | 4 | > |
5 | <span (click)="doSearch()" class="icon icon-search"></span> | 5 | <span (click)="doSearch()" class="icon icon-search"></span> |
6 | 6 | ||
7 | <a class="upload-button" routerLink="/videos/upload"> | 7 | <a class="upload-button" (click)="goToUpload()"> |
8 | <my-global-icon iconName="upload"></my-global-icon> | 8 | <my-global-icon iconName="upload"></my-global-icon> |
9 | <span i18n class="upload-button-label">Upload</span> | 9 | <span i18n class="upload-button-label">Upload</span> |
10 | </a> | 10 | </a> |
diff --git a/client/src/app/header/header.component.scss b/client/src/app/header/header.component.scss index 736035b72..2bbde74bc 100644 --- a/client/src/app/header/header.component.scss +++ b/client/src/app/header/header.component.scss | |||
@@ -53,6 +53,7 @@ | |||
53 | @include orange-button; | 53 | @include orange-button; |
54 | @include button-with-icon(22px, 3px, -1px); | 54 | @include button-with-icon(22px, 3px, -1px); |
55 | 55 | ||
56 | color: var(--mainBackgroundColor) !important; | ||
56 | margin-right: 25px; | 57 | margin-right: 25px; |
57 | 58 | ||
58 | @media screen and (max-width: 800px) { | 59 | @media screen and (max-width: 800px) { |
diff --git a/client/src/app/header/header.component.ts b/client/src/app/header/header.component.ts index c6e942e0e..192d6945b 100644 --- a/client/src/app/header/header.component.ts +++ b/client/src/app/header/header.component.ts | |||
@@ -2,8 +2,9 @@ import { filter, first, map, tap } from 'rxjs/operators' | |||
2 | import { Component, OnInit } from '@angular/core' | 2 | import { Component, OnInit } from '@angular/core' |
3 | import { ActivatedRoute, NavigationEnd, Params, Router } from '@angular/router' | 3 | import { ActivatedRoute, NavigationEnd, Params, Router } from '@angular/router' |
4 | import { getParameterByName } from '../shared/misc/utils' | 4 | import { getParameterByName } from '../shared/misc/utils' |
5 | import { AuthService } from '@app/core' | 5 | import { AuthService, ServerService, Notifier } from '@app/core' |
6 | import { of } from 'rxjs' | 6 | import { of } from 'rxjs' |
7 | import { ServerConfig } from '@shared/models' | ||
7 | 8 | ||
8 | @Component({ | 9 | @Component({ |
9 | selector: 'my-header', | 10 | selector: 'my-header', |
@@ -14,10 +15,15 @@ import { of } from 'rxjs' | |||
14 | export class HeaderComponent implements OnInit { | 15 | export class HeaderComponent implements OnInit { |
15 | searchValue = '' | 16 | searchValue = '' |
16 | 17 | ||
18 | private serverConfig: ServerConfig | ||
19 | |||
17 | constructor ( | 20 | constructor ( |
18 | private router: Router, | 21 | private router: Router, |
19 | private route: ActivatedRoute, | 22 | private route: ActivatedRoute, |
20 | private auth: AuthService | 23 | private auth: AuthService, |
24 | private serverService: ServerService, | ||
25 | private authService: AuthService, | ||
26 | private notifier: Notifier | ||
21 | ) {} | 27 | ) {} |
22 | 28 | ||
23 | ngOnInit () { | 29 | ngOnInit () { |
@@ -27,6 +33,13 @@ export class HeaderComponent implements OnInit { | |||
27 | map(() => getParameterByName('search', window.location.href)) | 33 | map(() => getParameterByName('search', window.location.href)) |
28 | ) | 34 | ) |
29 | .subscribe(searchQuery => this.searchValue = searchQuery || '') | 35 | .subscribe(searchQuery => this.searchValue = searchQuery || '') |
36 | |||
37 | this.serverConfig = this.serverService.getTmpConfig() | ||
38 | this.serverService.getConfig().subscribe( | ||
39 | config => this.serverConfig = config, | ||
40 | |||
41 | err => this.notifier.error(err.message) | ||
42 | ) | ||
30 | } | 43 | } |
31 | 44 | ||
32 | doSearch () { | 45 | doSearch () { |
@@ -45,6 +58,25 @@ export class HeaderComponent implements OnInit { | |||
45 | o.subscribe(() => this.router.navigate([ '/search' ], { queryParams })) | 58 | o.subscribe(() => this.router.navigate([ '/search' ], { queryParams })) |
46 | } | 59 | } |
47 | 60 | ||
61 | isUserLoggedIn () { | ||
62 | return this.authService.isLoggedIn() | ||
63 | } | ||
64 | |||
65 | isRegistrationAllowed () { | ||
66 | return this.serverConfig.signup.allowed && | ||
67 | this.serverConfig.signup.allowedForCurrentIP | ||
68 | } | ||
69 | |||
70 | goToUpload () { | ||
71 | if (this.isUserLoggedIn()) { | ||
72 | this.router.navigate([ '/videos/upload' ]) | ||
73 | } else if (this.isRegistrationAllowed()) { | ||
74 | this.router.navigate([ '/signup' ]) | ||
75 | } else { | ||
76 | this.router.navigate([ '/login', { fromUpload: true } ]) | ||
77 | } | ||
78 | } | ||
79 | |||
48 | private loadUserLanguagesIfNeeded (queryParams: any) { | 80 | private loadUserLanguagesIfNeeded (queryParams: any) { |
49 | if (queryParams && queryParams.languageOneOf) return of(queryParams) | 81 | if (queryParams && queryParams.languageOneOf) return of(queryParams) |
50 | 82 | ||