Fix search with account video languages
authorChocobozzz <me@florianbigard.com>
Mon, 21 Oct 2019 11:31:58 +0000 (13:31 +0200)
committerChocobozzz <me@florianbigard.com>
Mon, 21 Oct 2019 11:31:58 +0000 (13:31 +0200)
client/src/app/header/header.component.ts
client/src/app/search/advanced-search.model.ts
client/src/app/search/search-filters.component.ts
client/src/app/search/search.component.ts

index 88cd652e276070432ee9d91d62aefd01d8a1c986..c6e942e0e5c2368c024f661c3786c42bfd64da93 100644 (file)
@@ -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(),
index 5b713e14550120785bff6dca2ee3604883d25eb9..e2a0253f44bb98c4a117005ffd6d9fac4254282b 100644 (file)
@@ -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(',')
 
index e13aa91bf09729ca497d7a86d2fe50336cd2af08..14a05b721e7cd2e5ac94730eedd11fdf5451d621 100644 (file)
@@ -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()
index 5c4bb9379358f8efd5f8134b69316e989c17ef01..202b97ab30847fba5b75ee6489ad348ef1d38da6 100644 (file)
@@ -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 () {