-export class HeaderComponent implements OnInit {
- searchValue = ''
-
- private serverConfig: ServerConfig
-
- constructor (
- private router: Router,
- private route: ActivatedRoute,
- private auth: AuthService,
- private serverService: ServerService,
- private authService: AuthService,
- private notifier: Notifier
- ) {}
-
- ngOnInit () {
- this.router.events
- .pipe(
- filter(e => e instanceof NavigationEnd),
- map(() => getParameterByName('search', window.location.href))
- )
- .subscribe(searchQuery => this.searchValue = searchQuery || '')
-
- this.serverConfig = this.serverService.getTmpConfig()
- this.serverService.getConfig().subscribe(
- config => this.serverConfig = config,
-
- err => this.notifier.error(err.message)
- )
- }
-
- doSearch () {
- const queryParams: Params = {}
-
- if (window.location.pathname === '/search' && this.route.snapshot.queryParams) {
- Object.assign(queryParams, this.route.snapshot.queryParams)
- }
-
- Object.assign(queryParams, { search: this.searchValue })
-
- const o = this.auth.isLoggedIn()
- ? this.loadUserLanguagesIfNeeded(queryParams)
- : of(true)
-
- o.subscribe(() => this.router.navigate([ '/search' ], { queryParams }))
- }
-
- isUserLoggedIn () {
- return this.authService.isLoggedIn()
- }
-
- isRegistrationAllowed () {
- return this.serverConfig.signup.allowed &&
- this.serverConfig.signup.allowedForCurrentIP
- }
-
- goToUpload () {
- if (this.isUserLoggedIn()) {
- this.router.navigate([ '/videos/upload' ])
- } else if (this.isRegistrationAllowed()) {
- this.router.navigate([ '/signup' ])
- } else {
- this.router.navigate([ '/login', { fromUpload: true } ])
- }
- }
-
- private loadUserLanguagesIfNeeded (queryParams: any) {
- if (queryParams && queryParams.languageOneOf) return of(queryParams)
-
- return this.auth.userInformationLoaded
- .pipe(
- first(),
- tap(() => Object.assign(queryParams, { languageOneOf: this.auth.getUser().videoLanguages }))
- )
- }
-}