import { ActivatedRoute, Router } from '@angular/router'
import { AuthService, HooksService, MetaService, Notifier, ServerService, User, UserService } from '@app/core'
import { immutableAssign } from '@app/helpers'
+import { validateHost } from '@app/shared/form-validators/host-validators'
import { Video, VideoChannel } from '@app/shared/shared-main'
import { AdvancedSearch, SearchService } from '@app/shared/shared-search'
import { MiniatureDisplayOptions } from '@app/shared/shared-video-miniature'
templateUrl: './search.component.html'
})
export class SearchComponent implements OnInit, OnDestroy {
+ error: string
+
results: (Video | VideoChannel)[] = []
pagination = {
this.advancedSearch.searchTarget = this.getDefaultSearchTarget()
}
- // Don't hide filters if we have some of them AND the user just came on the webpage
- this.isSearchFilterCollapsed = this.isInitialLoad === false || !this.advancedSearch.containsValues()
+ this.error = this.checkFieldsAndGetError()
+
+ // Don't hide filters if we have some of them AND the user just came on the webpage, or we have an error
+ this.isSearchFilterCollapsed = !this.error && (this.isInitialLoad === false || !this.advancedSearch.containsValues())
this.isInitialLoad = false
this.search()
}
search () {
+ this.error = this.checkFieldsAndGetError()
+ if (this.error) return
+
this.isSearching = true
forkJoin([
const params = {
search: this.currentSearch,
componentPagination: immutableAssign(this.pagination, { itemsPerPage: this.channelsPerPage }),
- searchTarget: this.advancedSearch.searchTarget
+ advancedSearch: this.advancedSearch
}
return this.hooks.wrapObsFun(
const params = {
search: this.currentSearch,
componentPagination: immutableAssign(this.pagination, { itemsPerPage: this.playlistsPerPage }),
- searchTarget: this.advancedSearch.searchTarget
+ advancedSearch: this.advancedSearch
}
return this.hooks.wrapObsFun(
return 'local'
}
+
+ private checkFieldsAndGetError () {
+ if (this.advancedSearch.host && !validateHost(this.advancedSearch.host)) {
+ return $localize`PeerTube instance host filter is invalid`
+ }
+
+ return undefined
+ }
}