X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fsearch%2Fsearch.component.ts;h=475fdd277628469bf1a821097612367edd3da591;hb=9a0fc8409c7a783348ec212fa9f38d0a98413467;hp=ed84e24d9fbb8cf3d512d636552066b0304b7eee;hpb=aa55a4da422330fe2816f1764b64f6607a0ca4aa;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/search/search.component.ts b/client/src/app/search/search.component.ts index ed84e24d9..475fdd277 100644 --- a/client/src/app/search/search.component.ts +++ b/client/src/app/search/search.component.ts @@ -1,16 +1,16 @@ import { Component, OnDestroy, OnInit } from '@angular/core' import { ActivatedRoute, Router } from '@angular/router' -import { RedirectService } from '@app/core' +import { AuthService, RedirectService } from '@app/core' import { NotificationsService } from 'angular2-notifications' import { forkJoin, Subscription } from 'rxjs' import { SearchService } from '@app/search/search.service' import { ComponentPagination } from '@app/shared/rest/component-pagination.model' import { I18n } from '@ngx-translate/i18n-polyfill' -import { Video } from '../../../../shared' import { MetaService } from '@ngx-meta/core' import { AdvancedSearch } from '@app/search/advanced-search.model' 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' @Component({ selector: 'my-search', @@ -18,8 +18,7 @@ import { immutableAssign } from '@app/shared/misc/utils' templateUrl: './search.component.html' }) export class SearchComponent implements OnInit, OnDestroy { - videos: Video[] = [] - videoChannels: VideoChannel[] = [] + results: (Video | VideoChannel)[] = [] pagination: ComponentPagination = { currentPage: 1, @@ -32,6 +31,7 @@ export class SearchComponent implements OnInit, OnDestroy { private subActivatedRoute: Subscription private isInitialLoad = true + private firstSearch = true private channelsPerPage = 2 @@ -42,7 +42,8 @@ export class SearchComponent implements OnInit, OnDestroy { private metaService: MetaService, private redirectService: RedirectService, private notificationsService: NotificationsService, - private searchService: SearchService + private searchService: SearchService, + private authService: AuthService ) { } ngOnInit () { @@ -79,6 +80,18 @@ export class SearchComponent implements OnInit, OnDestroy { if (this.subActivatedRoute) this.subActivatedRoute.unsubscribe() } + isVideoChannel (d: VideoChannel | Video): d is VideoChannel { + return d instanceof VideoChannel + } + + isVideo (v: VideoChannel | Video): v is Video { + return v instanceof Video + } + + isUserLoggedIn () { + return this.authService.isLoggedIn() + } + search () { forkJoin([ this.searchService.searchVideos(this.currentSearch, this.pagination, this.advancedSearch), @@ -86,18 +99,21 @@ export class SearchComponent implements OnInit, OnDestroy { ]) .subscribe( ([ videosResult, videoChannelsResult ]) => { - this.videos = this.videos.concat(videosResult.videos) + this.results = this.results + .concat(videoChannelsResult.data) + .concat(videosResult.videos) this.pagination.totalItems = videosResult.totalVideos + videoChannelsResult.total - this.videoChannels = this.videoChannels.concat(videoChannelsResult.data) - - // Focus on channels - if (this.channelsPerPage !== 10 && this.videos.length < this.pagination.itemsPerPage) { + // Focus on channels if there are no enough videos + if (this.firstSearch === true && videosResult.videos.length < this.pagination.itemsPerPage) { this.resetPagination() + this.firstSearch = false this.channelsPerPage = 10 this.search() } + + this.firstSearch = false }, error => { @@ -126,8 +142,7 @@ export class SearchComponent implements OnInit, OnDestroy { this.pagination.totalItems = null this.channelsPerPage = 2 - this.videos = [] - this.videoChannels = [] + this.results = [] } private updateTitle () {