From e030bfb59dd5ee65f20a64686ec9b22ca39f70ae Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 2 Jun 2021 18:15:41 +0200 Subject: Refactor server errors handler --- .../+video-edit/video-add-components/video-go-live.component.ts | 8 +++++--- .../video-add-components/video-import-torrent.component.ts | 6 ++++-- client/src/app/+videos/+video-watch/video-watch.component.ts | 8 +++++--- 3 files changed, 14 insertions(+), 8 deletions(-) (limited to 'client/src/app/+videos') diff --git a/client/src/app/+videos/+video-edit/video-add-components/video-go-live.component.ts b/client/src/app/+videos/+video-edit/video-add-components/video-go-live.component.ts index 727bbc32f..15178a267 100644 --- a/client/src/app/+videos/+video-edit/video-add-components/video-go-live.component.ts +++ b/client/src/app/+videos/+video-edit/video-add-components/video-go-live.component.ts @@ -8,7 +8,7 @@ import { FormValidatorService } from '@app/shared/shared-forms' import { VideoCaptionService, VideoEdit, VideoService } from '@app/shared/shared-main' import { LiveVideoService } from '@app/shared/shared-video-live' import { LoadingBarService } from '@ngx-loading-bar/core' -import { LiveVideo, LiveVideoCreate, LiveVideoUpdate, ServerErrorCode, VideoPrivacy } from '@shared/models' +import { LiveVideo, LiveVideoCreate, LiveVideoUpdate, PeerTubeProblemDocument, ServerErrorCode, VideoPrivacy } from '@shared/models' import { VideoSend } from './video-send' @Component({ @@ -92,9 +92,11 @@ export class VideoGoLiveComponent extends VideoSend implements OnInit, AfterView let message = err.message - if (err.body?.code === ServerErrorCode.MAX_INSTANCE_LIVES_LIMIT_REACHED) { + const error = err.body as PeerTubeProblemDocument + + if (error?.code === ServerErrorCode.MAX_INSTANCE_LIVES_LIMIT_REACHED) { message = $localize`Cannot create live because this instance have too many created lives` - } else if (err.body?.code) { + } else if (error?.code === ServerErrorCode.MAX_USER_LIVES_LIMIT_REACHED) { message = $localize`Cannot create live because you created too many lives` } diff --git a/client/src/app/+videos/+video-edit/video-add-components/video-import-torrent.component.ts b/client/src/app/+videos/+video-edit/video-add-components/video-import-torrent.component.ts index 23bd5ef76..2837b30c1 100644 --- a/client/src/app/+videos/+video-edit/video-add-components/video-import-torrent.component.ts +++ b/client/src/app/+videos/+video-edit/video-add-components/video-import-torrent.component.ts @@ -5,7 +5,7 @@ import { scrollToTop } from '@app/helpers' import { FormValidatorService } from '@app/shared/shared-forms' import { VideoCaptionService, VideoEdit, VideoImportService, VideoService } from '@app/shared/shared-main' import { LoadingBarService } from '@ngx-loading-bar/core' -import { ServerErrorCode, VideoPrivacy, VideoUpdate } from '@shared/models' +import { PeerTubeProblemDocument, ServerErrorCode, VideoPrivacy, VideoUpdate } from '@shared/models' import { hydrateFormFromVideo } from '../shared/video-edit-utils' import { VideoSend } from './video-send' @@ -115,7 +115,9 @@ export class VideoImportTorrentComponent extends VideoSend implements OnInit, Af this.firstStepError.emit() let message = err.message - if (err.body?.code === ServerErrorCode.INCORRECT_FILES_IN_TORRENT) { + + const error = err.body as PeerTubeProblemDocument + if (error?.code === ServerErrorCode.INCORRECT_FILES_IN_TORRENT) { message = $localize`Torrents with only 1 file are supported.` } diff --git a/client/src/app/+videos/+video-watch/video-watch.component.ts b/client/src/app/+videos/+video-watch/video-watch.component.ts index 8034ccebf..540b568ed 100644 --- a/client/src/app/+videos/+video-watch/video-watch.component.ts +++ b/client/src/app/+videos/+video-watch/video-watch.component.ts @@ -28,7 +28,7 @@ import { VideoActionsDisplayType, VideoDownloadComponent } from '@app/shared/sha import { VideoPlaylist, VideoPlaylistService } from '@app/shared/shared-video-playlist' import { peertubeLocalStorage } from '@root-helpers/peertube-web-storage' import { HttpStatusCode } from '@shared/core-utils/miscs/http-error-codes' -import { ServerConfig, ServerErrorCode, UserVideoRateType, VideoCaption, VideoPrivacy, VideoState } from '@shared/models' +import { PeerTubeProblemDocument, ServerConfig, ServerErrorCode, UserVideoRateType, VideoCaption, VideoPrivacy, VideoState } from '@shared/models' import { cleanupVideoWatch, getStoredP2PEnabled, @@ -431,9 +431,11 @@ export class VideoWatchComponent implements OnInit, OnDestroy { .pipe( // If 400, 403 or 404, the video is private or blocked so redirect to 404 catchError(err => { - if (err.body.type === ServerErrorCode.DOES_NOT_RESPECT_FOLLOW_CONSTRAINTS && err.body.originUrl) { + const errorBody = err.body as PeerTubeProblemDocument + + if (errorBody.code === ServerErrorCode.DOES_NOT_RESPECT_FOLLOW_CONSTRAINTS && errorBody.originUrl) { const search = window.location.search - let originUrl = err.body.originUrl + let originUrl = errorBody.originUrl if (search) originUrl += search this.confirmService.confirm( -- cgit v1.2.3