Fix search with account video languages

This commit is contained in:
Chocobozzz 2019-10-21 13:31:58 +02:00
parent f1b3888392
commit baeb429d06
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
4 changed files with 17 additions and 11 deletions

View File

@ -1,6 +1,6 @@
import { filter, first, map, tap } from 'rxjs/operators' import { filter, first, map, tap } from 'rxjs/operators'
import { Component, OnInit } from '@angular/core' 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 { getParameterByName } from '../shared/misc/utils'
import { AuthService } from '@app/core' import { AuthService } from '@app/core'
import { of } from 'rxjs' import { of } from 'rxjs'
@ -16,6 +16,7 @@ export class HeaderComponent implements OnInit {
constructor ( constructor (
private router: Router, private router: Router,
private route: ActivatedRoute,
private auth: AuthService private auth: AuthService
) {} ) {}
@ -29,18 +30,24 @@ export class HeaderComponent implements OnInit {
} }
doSearch () { doSearch () {
const queryParams: any = { const queryParams: Params = {}
search: this.searchValue
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() const o = this.auth.isLoggedIn()
? this.loadUserLanguages(queryParams) ? this.loadUserLanguagesIfNeeded(queryParams)
: of(true) : of(true)
o.subscribe(() => this.router.navigate([ '/search' ], { queryParams })) 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 return this.auth.userInformationLoaded
.pipe( .pipe(
first(), first(),

View File

@ -139,6 +139,7 @@ export class AdvancedSearch {
private intoArray (value: any) { private intoArray (value: any) {
if (!value) return undefined if (!value) return undefined
if (Array.isArray(value)) return value
if (typeof value === 'string') return value.split(',') if (typeof value === 'string') return value.split(',')

View File

@ -83,9 +83,9 @@ export class SearchFiltersComponent implements OnInit {
} }
ngOnInit () { ngOnInit () {
this.videoCategories = this.serverService.getVideoCategories() this.serverService.videoCategoriesLoaded.subscribe(() => this.videoCategories = this.serverService.getVideoCategories())
this.videoLicences = this.serverService.getVideoLicences() this.serverService.videoLicencesLoaded.subscribe(() => this.videoLicences = this.serverService.getVideoLicences())
this.videoLanguages = this.serverService.getVideoLanguages() this.serverService.videoLanguagesLoaded.subscribe(() => this.videoLanguages = this.serverService.getVideoLanguages())
this.loadFromDurationRange() this.loadFromDurationRange()
this.loadFromPublishedRange() this.loadFromPublishedRange()

View File

@ -11,7 +11,6 @@ import { VideoChannel } from '@app/shared/video-channel/video-channel.model'
import { immutableAssign } from '@app/shared/misc/utils' import { immutableAssign } from '@app/shared/misc/utils'
import { Video } from '@app/shared/video/video.model' import { Video } from '@app/shared/video/video.model'
import { HooksService } from '@app/core/plugins/hooks.service' import { HooksService } from '@app/core/plugins/hooks.service'
import { PluginService } from '@app/core/plugins/plugin.service'
@Component({ @Component({
selector: 'my-search', selector: 'my-search',
@ -44,8 +43,7 @@ export class SearchComponent implements OnInit, OnDestroy {
private notifier: Notifier, private notifier: Notifier,
private searchService: SearchService, private searchService: SearchService,
private authService: AuthService, private authService: AuthService,
private hooks: HooksService, private hooks: HooksService
private pluginService: PluginService
) { } ) { }
get user () { get user () {