]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/shared/video/video.service.ts
Correctly handle error when remote instance is down
[github/Chocobozzz/PeerTube.git] / client / src / app / shared / video / video.service.ts
index 2da36ff1b721fb8f8afa6621262fbd8cec3d4a61..b4c1f10f93dd96834e54f41ed4ae9f7878f982b4 100644 (file)
@@ -28,8 +28,8 @@ import { ServerService } from '@app/core'
 
 @Injectable()
 export class VideoService {
-  private static BASE_VIDEO_URL = environment.apiUrl + '/api/v1/videos/'
-  private static BASE_FEEDS_URL = environment.apiUrl + '/feeds/videos.'
+  static BASE_VIDEO_URL = environment.apiUrl + '/api/v1/videos/'
+  static BASE_FEEDS_URL = environment.apiUrl + '/feeds/videos.'
 
   constructor (
     private authHttp: HttpClient,
@@ -50,7 +50,7 @@ export class VideoService {
                               .pipe(map(videoHash => ({ videoHash, translations })))
                  }),
                  map(({ videoHash, translations }) => new VideoDetails(videoHash, translations)),
-                 catchError(res => this.restExtractor.handleError(res))
+                 catchError(err => this.restExtractor.handleError(err))
                )
   }
 
@@ -58,7 +58,7 @@ export class VideoService {
     return this.authHttp.post(this.getVideoViewUrl(uuid), {})
                .pipe(
                  map(this.restExtractor.extractDataBool),
-                 catchError(this.restExtractor.handleError)
+                 catchError(err => this.restExtractor.handleError(err))
                )
   }
 
@@ -93,7 +93,7 @@ export class VideoService {
     return this.authHttp.put(VideoService.BASE_VIDEO_URL + video.id, data)
                .pipe(
                  map(this.restExtractor.extractDataBool),
-                 catchError(this.restExtractor.handleError)
+                 catchError(err => this.restExtractor.handleError(err))
                )
   }
 
@@ -102,7 +102,7 @@ export class VideoService {
 
     return this.authHttp
                .request<{ video: { id: number, uuid: string } }>(req)
-               .pipe(catchError(this.restExtractor.handleError))
+               .pipe(catchError(err => this.restExtractor.handleError(err)))
   }
 
   getMyVideos (videoPagination: ComponentPagination, sort: VideoSortField): Observable<{ videos: Video[], totalVideos: number }> {
@@ -115,7 +115,7 @@ export class VideoService {
                .get<ResultList<Video>>(UserService.BASE_USERS_URL + '/me/videos', { params })
                .pipe(
                  switchMap(res => this.extractVideos(res)),
-                 catchError(res => this.restExtractor.handleError(res))
+                 catchError(err => this.restExtractor.handleError(err))
                )
   }
 
@@ -133,7 +133,7 @@ export class VideoService {
                .get<ResultList<Video>>(AccountService.BASE_ACCOUNT_URL + account.nameWithHost + '/videos', { params })
                .pipe(
                  switchMap(res => this.extractVideos(res)),
-                 catchError(res => this.restExtractor.handleError(res))
+                 catchError(err => this.restExtractor.handleError(err))
                )
   }
 
@@ -151,14 +151,15 @@ export class VideoService {
                .get<ResultList<Video>>(VideoChannelService.BASE_VIDEO_CHANNEL_URL + videoChannel.uuid + '/videos', { params })
                .pipe(
                  switchMap(res => this.extractVideos(res)),
-                 catchError(res => this.restExtractor.handleError(res))
+                 catchError(err => this.restExtractor.handleError(err))
                )
   }
 
   getVideos (
     videoPagination: ComponentPagination,
     sort: VideoSortField,
-    filter?: VideoFilter
+    filter?: VideoFilter,
+    category?: number
   ): Observable<{ videos: Video[], totalVideos: number }> {
     const pagination = this.restService.componentPaginationToRestPagination(videoPagination)
 
@@ -169,11 +170,15 @@ export class VideoService {
       params = params.set('filter', filter)
     }
 
+    if (category) {
+      params = params.set('category', category + '')
+    }
+
     return this.authHttp
                .get<ResultList<Video>>(VideoService.BASE_VIDEO_URL, { params })
                .pipe(
                  switchMap(res => this.extractVideos(res)),
-                 catchError(res => this.restExtractor.handleError(res))
+                 catchError(err => this.restExtractor.handleError(err))
                )
   }
 
@@ -202,11 +207,13 @@ export class VideoService {
     return feeds
   }
 
-  getVideoFeedUrls (sort: VideoSortField, filter?: VideoFilter) {
+  getVideoFeedUrls (sort: VideoSortField, filter?: VideoFilter, category?: number) {
     let params = this.restService.addRestGetParams(new HttpParams(), undefined, sort)
 
     if (filter) params = params.set('filter', filter)
 
+    if (category) params = params.set('category', category + '')
+
     return this.buildBaseFeedUrls(params)
   }
 
@@ -241,7 +248,7 @@ export class VideoService {
                .get<ResultList<VideoServerModel>>(url, { params })
                .pipe(
                  switchMap(res => this.extractVideos(res)),
-                 catchError(res => this.restExtractor.handleError(res))
+                 catchError(err => this.restExtractor.handleError(err))
                )
   }
 
@@ -250,7 +257,7 @@ export class VideoService {
                .delete(VideoService.BASE_VIDEO_URL + id)
                .pipe(
                  map(this.restExtractor.extractDataBool),
-                 catchError(res => this.restExtractor.handleError(res))
+                 catchError(err => this.restExtractor.handleError(err))
                )
   }
 
@@ -259,7 +266,7 @@ export class VideoService {
                .get(environment.apiUrl + descriptionPath)
                .pipe(
                  map(res => res[ 'description' ]),
-                 catchError(res => this.restExtractor.handleError(res))
+                 catchError(err => this.restExtractor.handleError(err))
                )
   }
 
@@ -279,7 +286,7 @@ export class VideoService {
     const url = UserService.BASE_USERS_URL + 'me/videos/' + id + '/rating'
 
     return this.authHttp.get<UserVideoRate>(url)
-               .pipe(catchError(res => this.restExtractor.handleError(res)))
+               .pipe(catchError(err => this.restExtractor.handleError(err)))
   }
 
   private setVideoRate (id: number, rateType: VideoRateType) {
@@ -292,7 +299,7 @@ export class VideoService {
                .put(url, body)
                .pipe(
                  map(this.restExtractor.extractDataBool),
-                 catchError(res => this.restExtractor.handleError(res))
+                 catchError(err => this.restExtractor.handleError(err))
                )
   }