diff --git a/client/src/app/header/header.component.ts b/client/src/app/header/header.component.ts index 88cd652e2..c6e942e0e 100644 --- a/client/src/app/header/header.component.ts +++ b/client/src/app/header/header.component.ts @@ -1,6 +1,6 @@ import { filter, first, map, tap } from 'rxjs/operators' import { Component, OnInit } from '@angular/core' -import { NavigationEnd, Router } from '@angular/router' +import { ActivatedRoute, NavigationEnd, Params, Router } from '@angular/router' import { getParameterByName } from '../shared/misc/utils' import { AuthService } from '@app/core' import { of } from 'rxjs' @@ -16,6 +16,7 @@ export class HeaderComponent implements OnInit { constructor ( private router: Router, + private route: ActivatedRoute, private auth: AuthService ) {} @@ -29,18 +30,24 @@ export class HeaderComponent implements OnInit { } doSearch () { - const queryParams: any = { - search: this.searchValue + 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.loadUserLanguages(queryParams) + ? this.loadUserLanguagesIfNeeded(queryParams) : of(true) o.subscribe(() => this.router.navigate([ '/search' ], { queryParams })) } - private loadUserLanguages (queryParams: any) { + private loadUserLanguagesIfNeeded (queryParams: any) { + if (queryParams && queryParams.languageOneOf) return of(queryParams) + return this.auth.userInformationLoaded .pipe( first(), diff --git a/client/src/app/search/advanced-search.model.ts b/client/src/app/search/advanced-search.model.ts index 5b713e145..e2a0253f4 100644 --- a/client/src/app/search/advanced-search.model.ts +++ b/client/src/app/search/advanced-search.model.ts @@ -139,6 +139,7 @@ export class AdvancedSearch { private intoArray (value: any) { if (!value) return undefined + if (Array.isArray(value)) return value if (typeof value === 'string') return value.split(',') diff --git a/client/src/app/search/search-filters.component.ts b/client/src/app/search/search-filters.component.ts index e13aa91bf..14a05b721 100644 --- a/client/src/app/search/search-filters.component.ts +++ b/client/src/app/search/search-filters.component.ts @@ -83,9 +83,9 @@ export class SearchFiltersComponent implements OnInit { } ngOnInit () { - this.videoCategories = this.serverService.getVideoCategories() - this.videoLicences = this.serverService.getVideoLicences() - this.videoLanguages = this.serverService.getVideoLanguages() + this.serverService.videoCategoriesLoaded.subscribe(() => this.videoCategories = this.serverService.getVideoCategories()) + this.serverService.videoLicencesLoaded.subscribe(() => this.videoLicences = this.serverService.getVideoLicences()) + this.serverService.videoLanguagesLoaded.subscribe(() => this.videoLanguages = this.serverService.getVideoLanguages()) this.loadFromDurationRange() this.loadFromPublishedRange() diff --git a/client/src/app/search/search.component.ts b/client/src/app/search/search.component.ts index 5c4bb9379..202b97ab3 100644 --- a/client/src/app/search/search.component.ts +++ b/client/src/app/search/search.component.ts @@ -11,7 +11,6 @@ import { VideoChannel } from '@app/shared/video-channel/video-channel.model' import { immutableAssign } from '@app/shared/misc/utils' import { Video } from '@app/shared/video/video.model' import { HooksService } from '@app/core/plugins/hooks.service' -import { PluginService } from '@app/core/plugins/plugin.service' @Component({ selector: 'my-search', @@ -44,8 +43,7 @@ export class SearchComponent implements OnInit, OnDestroy { private notifier: Notifier, private searchService: SearchService, private authService: AuthService, - private hooks: HooksService, - private pluginService: PluginService + private hooks: HooksService ) { } get user () {