X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fheader%2Fheader.component.ts;h=92a7eded651eea650993ca6243ec7930cf433f34;hb=7cd1b12c19d0589d1d692ed0571ca0800f028aea;hp=a903048f234188a15f04acabc846c5ce0e687a22;hpb=fada8d75550dc7365f7e18ee1569b9406251d660;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/header/header.component.ts b/client/src/app/header/header.component.ts index a903048f2..92a7eded6 100644 --- a/client/src/app/header/header.component.ts +++ b/client/src/app/header/header.component.ts @@ -1,6 +1,10 @@ +import { filter, first, map, tap } from 'rxjs/operators' import { Component, OnInit } from '@angular/core' -import { Router } from '@angular/router' +import { ActivatedRoute, NavigationEnd, Params, Router } from '@angular/router' import { getParameterByName } from '../shared/misc/utils' +import { AuthService, Notifier, ServerService } from '@app/core' +import { of } from 'rxjs' +import { I18n } from '@ngx-translate/i18n-polyfill' @Component({ selector: 'my-header', @@ -10,19 +14,52 @@ import { getParameterByName } from '../shared/misc/utils' export class HeaderComponent implements OnInit { searchValue = '' + ariaLabelTextForSearch = '' - constructor (private router: Router) {} + constructor ( + private router: Router, + private route: ActivatedRoute, + private auth: AuthService, + private serverService: ServerService, + private authService: AuthService, + private notifier: Notifier, + private i18n: I18n + ) {} ngOnInit () { - const searchQuery = getParameterByName('search', window.location.href) - if (searchQuery) this.searchValue = searchQuery + this.ariaLabelTextForSearch = this.i18n('Search videos, channels') + + this.router.events + .pipe( + filter(e => e instanceof NavigationEnd), + map(() => getParameterByName('search', window.location.href)) + ) + .subscribe(searchQuery => this.searchValue = searchQuery || '') } doSearch () { - if (!this.searchValue) return + 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 })) + } + + private loadUserLanguagesIfNeeded (queryParams: any) { + if (queryParams && queryParams.languageOneOf) return of(queryParams) - this.router.navigate([ '/videos', 'search' ], { - queryParams: { search: this.searchValue } - }) + return this.auth.userInformationLoaded + .pipe( + first(), + tap(() => Object.assign(queryParams, { languageOneOf: this.auth.getUser().videoLanguages })) + ) } }