]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/search/search.service.ts
Update translations
[github/Chocobozzz/PeerTube.git] / client / src / app / search / search.service.ts
index 02d5f5915c18032d12ffbdcfffe7df9c0181d942..a37c4916122bc585b1fb7220a883ae4cdab7fbaf 100644 (file)
@@ -8,6 +8,7 @@ import { RestExtractor, RestService } from '@app/shared'
 import { environment } from 'environments/environment'
 import { ResultList, Video } from '../../../../shared'
 import { Video as VideoServerModel } from '@app/shared/video/video.model'
+import { AdvancedSearch } from '@app/search/advanced-search.model'
 
 export type SearchResult = {
   videosResult: { totalVideos: number, videos: Video[] }
@@ -26,7 +27,8 @@ export class SearchService {
 
   searchVideos (
     search: string,
-    componentPagination: ComponentPagination
+    componentPagination: ComponentPagination,
+    advancedSearch: AdvancedSearch
   ): Observable<{ videos: Video[], totalVideos: number }> {
     const url = SearchService.BASE_SEARCH_URL + 'videos'
 
@@ -34,7 +36,21 @@ export class SearchService {
 
     let params = new HttpParams()
     params = this.restService.addRestGetParams(params, pagination)
-    params = params.append('search', search)
+
+    if (search) params = params.append('search', search)
+
+    const advancedSearchObject = advancedSearch.toAPIObject()
+
+    for (const name of Object.keys(advancedSearchObject)) {
+      const value = advancedSearchObject[name]
+      if (!value) continue
+
+      if (Array.isArray(value) && value.length !== 0) {
+        for (const v of value) params = params.append(name, v)
+      } else {
+        params = params.append(name, value)
+      }
+    }
 
     return this.authHttp
                .get<ResultList<VideoServerModel>>(url, { params })