X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fshared%2Fshared-search%2Fsearch.service.ts;h=ad2de0f37f54dcb5741121a2d46dccddbe4e2d8b;hb=474542d7ac60f7860daf9ea34d1c31968f43ab29;hp=2c26eb2e55afa4ac5147148d833b2c09aa0bafac;hpb=af7fd04a6706fb781e4622167b08dc6c9376f06a;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/shared/shared-search/search.service.ts b/client/src/app/shared/shared-search/search.service.ts index 2c26eb2e5..ad2de0f37 100644 --- a/client/src/app/shared/shared-search/search.service.ts +++ b/client/src/app/shared/shared-search/search.service.ts @@ -1,10 +1,9 @@ -import { Observable } from 'rxjs' +import { Observable, of } from 'rxjs' import { catchError, map, switchMap } from 'rxjs/operators' import { HttpClient, HttpParams } from '@angular/common/http' import { Injectable } from '@angular/core' import { ComponentPaginationLight, RestExtractor, RestPagination, RestService } from '@app/core' import { Video, VideoChannel, VideoChannelService, VideoService } from '@app/shared/shared-main' -import { peertubeLocalStorage } from '@root-helpers/peertube-web-storage' import { ResultList, Video as VideoServerModel, @@ -25,30 +24,32 @@ export class SearchService { private restService: RestService, private videoService: VideoService, private playlistService: VideoPlaylistService - ) { - // Add ability to override search endpoint if the user updated this local storage key - const searchUrl = peertubeLocalStorage.getItem('search-url') - if (searchUrl) SearchService.BASE_SEARCH_URL = searchUrl - } + ) { } searchVideos (parameters: { - search: string + search?: string componentPagination?: ComponentPaginationLight advancedSearch?: AdvancedSearch + uuids?: string[] }): Observable> { - const { search, componentPagination, advancedSearch } = parameters + const { search, uuids, componentPagination, advancedSearch } = parameters + + if (advancedSearch?.resultType !== undefined && advancedSearch.resultType !== 'videos') { + return of({ total: 0, data: [] }) + } const url = SearchService.BASE_SEARCH_URL + 'videos' let pagination: RestPagination if (componentPagination) { - pagination = this.restService.componentPaginationToRestPagination(componentPagination) + pagination = this.restService.componentToRestPagination(componentPagination) } let params = new HttpParams() params = this.restService.addRestGetParams(params, pagination) if (search) params = params.append('search', search) + if (uuids) params = this.restService.addArrayParams(params, 'uuids', uuids) if (advancedSearch) { const advancedSearchObject = advancedSearch.toVideosAPIObject() @@ -64,22 +65,29 @@ export class SearchService { } searchVideoChannels (parameters: { - search: string + search?: string advancedSearch?: AdvancedSearch componentPagination?: ComponentPaginationLight + handles?: string[] }): Observable> { - const { search, advancedSearch, componentPagination } = parameters + const { search, advancedSearch, componentPagination, handles } = parameters + + if (advancedSearch?.resultType !== undefined && advancedSearch.resultType !== 'channels') { + return of({ total: 0, data: [] }) + } const url = SearchService.BASE_SEARCH_URL + 'video-channels' let pagination: RestPagination if (componentPagination) { - pagination = this.restService.componentPaginationToRestPagination(componentPagination) + pagination = this.restService.componentToRestPagination(componentPagination) } let params = new HttpParams() params = this.restService.addRestGetParams(params, pagination) - params = params.append('search', search) + + if (search) params = params.append('search', search) + if (handles) params = this.restService.addArrayParams(params, 'handles', handles) if (advancedSearch) { const advancedSearchObject = advancedSearch.toChannelAPIObject() @@ -95,22 +103,29 @@ export class SearchService { } searchVideoPlaylists (parameters: { - search: string + search?: string advancedSearch?: AdvancedSearch componentPagination?: ComponentPaginationLight + uuids?: string[] }): Observable> { - const { search, advancedSearch, componentPagination } = parameters + const { search, advancedSearch, componentPagination, uuids } = parameters + + if (advancedSearch?.resultType !== undefined && advancedSearch.resultType !== 'playlists') { + return of({ total: 0, data: [] }) + } const url = SearchService.BASE_SEARCH_URL + 'video-playlists' let pagination: RestPagination if (componentPagination) { - pagination = this.restService.componentPaginationToRestPagination(componentPagination) + pagination = this.restService.componentToRestPagination(componentPagination) } let params = new HttpParams() params = this.restService.addRestGetParams(params, pagination) - params = params.append('search', search) + + if (search) params = params.append('search', search) + if (uuids) params = this.restService.addArrayParams(params, 'uuids', uuids) if (advancedSearch) { const advancedSearchObject = advancedSearch.toPlaylistAPIObject()