X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fshared%2Fshared-search%2Fsearch.service.ts;h=fdfab0e0e18aa3a253a0b679a12b5f5081615ed7;hb=3da38d6e9f8d600476be276666ac7223aa5f172c;hp=96b954c99359ff43d2d1c5d87880cf6e7349a221;hpb=1942f11d5ee6926ad93dc1b79fae18325ba5de18;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 96b954c99..fdfab0e0e 100644 --- a/client/src/app/shared/shared-search/search.service.ts +++ b/client/src/app/shared/shared-search/search.service.ts @@ -3,10 +3,16 @@ 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 { peertubeLocalStorage } from '@app/helpers' import { Video, VideoChannel, VideoChannelService, VideoService } from '@app/shared/shared-main' -import { ResultList, SearchTargetType, Video as VideoServerModel, VideoChannel as VideoChannelServerModel } from '@shared/models' +import { peertubeLocalStorage } from '@root-helpers/peertube-web-storage' +import { + ResultList, + Video as VideoServerModel, + VideoChannel as VideoChannelServerModel, + VideoPlaylist as VideoPlaylistServerModel +} from '@shared/models' import { environment } from '../../../environments/environment' +import { VideoPlaylist, VideoPlaylistService } from '../shared-video-playlist' import { AdvancedSearch } from './advanced-search.model' @Injectable() @@ -17,7 +23,8 @@ export class SearchService { private authHttp: HttpClient, private restExtractor: RestExtractor, private restService: RestService, - private videoService: VideoService + 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') @@ -25,11 +32,12 @@ export class SearchService { } searchVideos (parameters: { - search: string, - componentPagination?: ComponentPaginationLight, + search?: string + componentPagination?: ComponentPaginationLight advancedSearch?: AdvancedSearch + uuids?: string[] }): Observable> { - const { search, componentPagination, advancedSearch } = parameters + const { search, uuids, componentPagination, advancedSearch } = parameters const url = SearchService.BASE_SEARCH_URL + 'videos' let pagination: RestPagination @@ -42,9 +50,10 @@ export class SearchService { 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.toAPIObject() + const advancedSearchObject = advancedSearch.toVideosAPIObject() params = this.restService.addObjectParams(params, advancedSearchObject) } @@ -57,11 +66,12 @@ export class SearchService { } searchVideoChannels (parameters: { - search: string, - searchTarget?: SearchTargetType, + search?: string + advancedSearch?: AdvancedSearch componentPagination?: ComponentPaginationLight + handles?: string[] }): Observable> { - const { search, componentPagination, searchTarget } = parameters + const { search, advancedSearch, componentPagination, handles } = parameters const url = SearchService.BASE_SEARCH_URL + 'video-channels' @@ -72,10 +82,13 @@ export class SearchService { let params = new HttpParams() params = this.restService.addRestGetParams(params, pagination) - params = params.append('search', search) - if (searchTarget) { - params = params.append('searchTarget', searchTarget as string) + if (search) params = params.append('search', search) + if (handles) params = this.restService.addArrayParams(params, 'handles', handles) + + if (advancedSearch) { + const advancedSearchObject = advancedSearch.toChannelAPIObject() + params = this.restService.addObjectParams(params, advancedSearchObject) } return this.authHttp @@ -85,4 +98,38 @@ export class SearchService { catchError(err => this.restExtractor.handleError(err)) ) } + + searchVideoPlaylists (parameters: { + search?: string + advancedSearch?: AdvancedSearch + componentPagination?: ComponentPaginationLight + uuids?: string[] + }): Observable> { + const { search, advancedSearch, componentPagination, uuids } = parameters + + const url = SearchService.BASE_SEARCH_URL + 'video-playlists' + + let pagination: RestPagination + if (componentPagination) { + pagination = this.restService.componentPaginationToRestPagination(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.toPlaylistAPIObject() + params = this.restService.addObjectParams(params, advancedSearchObject) + } + + return this.authHttp + .get>(url, { params }) + .pipe( + switchMap(res => this.playlistService.extractPlaylists(res)), + catchError(err => this.restExtractor.handleError(err)) + ) + } }