- return false
- } else if (event.keyCode === ENTER) {
- // when we hit enter, the keyboardManager should call the selectItem method of the `ListItemComponent`
- // this.keyboardEventsManager.activeItem
- return false
- }
+ break
+ }
+ }
+
+ isOnSearch () {
+ return window.location.pathname === '/search'
+ }
+
+ doSearch (searchTarget?: SearchTargetType) {
+ this.areSuggestionsOpened = false
+ const queryParams: Params = {}
+
+ if (this.isOnSearch() && this.route.snapshot.queryParams) {
+ Object.assign(queryParams, this.route.snapshot.queryParams)
+ }
+
+ if (!searchTarget) {
+ searchTarget = this.buildSearchTarget(this.keyboardEventsManager.activeItem.result)
+ }
+
+ Object.assign(queryParams, { search: this.search, searchTarget })
+
+ const o = this.authService.isLoggedIn()
+ ? this.loadUserLanguagesIfNeeded(queryParams)
+ : of(true)
+
+ o.subscribe(() => this.router.navigate([ '/search' ], { queryParams }))
+ }
+
+ private loadUserLanguagesIfNeeded (queryParams: any) {
+ if (queryParams && queryParams.languageOneOf) return of(queryParams)
+
+ return this.authService.userInformationLoaded
+ .pipe(
+ first(),
+ tap(() => Object.assign(queryParams, { languageOneOf: this.authService.getUser().videoLanguages }))
+ )
+ }
+
+ private buildSearchTarget (result: SuggestionPayload): SearchTargetType {
+ if (result.type === 'search-index') {
+ return 'search-index'