From 09700934b90e2ac7b1b9ed1694d9d4d52735e2e1 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 19 Mar 2018 11:04:40 +0100 Subject: BEARKING CHANGE: Update videos API response before beta --- client/src/app/shared/video/video-details.model.ts | 52 ++++++---------------- client/src/app/shared/video/video-edit.model.ts | 8 ++-- client/src/app/shared/video/video.model.ts | 13 ++---- .../videos/+video-edit/video-update.component.ts | 2 +- .../modal/video-download.component.html | 4 +- .../+video-watch/modal/video-download.component.ts | 10 ++--- .../videos/+video-watch/video-watch.component.html | 8 ++-- .../src/assets/player/peertube-videojs-plugin.ts | 21 ++++----- 8 files changed, 45 insertions(+), 73 deletions(-) (limited to 'client/src') diff --git a/client/src/app/shared/video/video-details.model.ts b/client/src/app/shared/video/video-details.model.ts index 1882a8165..9fc326beb 100644 --- a/client/src/app/shared/video/video-details.model.ts +++ b/client/src/app/shared/video/video-details.model.ts @@ -1,57 +1,33 @@ import { - UserRight, VideoChannel, VideoDetails as VideoDetailsServerModel, VideoFile, VideoPrivacy, + UserRight, + VideoChannel, + VideoDetails as VideoDetailsServerModel, + VideoFile, + VideoPrivacy, VideoResolution } from '../../../../../shared' import { Account } from '../../../../../shared/models/actors' +import { VideoConstant } from '../../../../../shared/models/videos/video.model' import { AuthUser } from '../../core' import { Video } from '../../shared/video/video.model' export class VideoDetails extends Video implements VideoDetailsServerModel { - accountName: string - by: string - createdAt: Date - updatedAt: Date - categoryLabel: string - category: number - licenceLabel: string - licence: number - languageLabel: string - language: number - description: string + privacy: VideoConstant + descriptionPath: string support: string - duration: number - durationLabel: string - id: number - uuid: string - isLocal: boolean - name: string - serverHost: string + channel: VideoChannel tags: string[] - thumbnailPath: string - thumbnailUrl: string - previewPath: string - previewUrl: string - embedPath: string - embedUrl: string - views: number - likes: number - dislikes: number - nsfw: boolean - descriptionPath: string files: VideoFile[] - channel: VideoChannel - privacy: VideoPrivacy - privacyLabel: string account: Account + commentsEnabled: boolean + likesPercent: number dislikesPercent: number - commentsEnabled: boolean constructor (hash: VideoDetailsServerModel) { super(hash) this.privacy = hash.privacy - this.privacyLabel = hash.privacyLabel this.descriptionPath = hash.descriptionPath this.files = hash.files this.channel = hash.channel @@ -72,14 +48,14 @@ export class VideoDetails extends Video implements VideoDetailsServerModel { // If the download speed is too bad, return the lowest resolution we have if (betterResolutionFile === undefined) { - betterResolutionFile = this.files.find(f => f.resolution === VideoResolution.H_240P) + betterResolutionFile = this.files.find(f => f.resolution.id === VideoResolution.H_240P) } return betterResolutionFile.magnetUri } isRemovableBy (user: AuthUser) { - return user && this.isLocal === true && (this.accountName === user.username || user.hasRight(UserRight.REMOVE_ANY_VIDEO)) + return user && this.isLocal === true && (this.account.name === user.username || user.hasRight(UserRight.REMOVE_ANY_VIDEO)) } isBlackistableBy (user: AuthUser) { @@ -87,7 +63,7 @@ export class VideoDetails extends Video implements VideoDetailsServerModel { } isUpdatableBy (user: AuthUser) { - return user && this.isLocal === true && (this.accountName === user.username || user.hasRight(UserRight.UPDATE_ANY_VIDEO)) + return user && this.isLocal === true && (this.account.name === user.username || user.hasRight(UserRight.UPDATE_ANY_VIDEO)) } buildLikeAndDislikePercents () { diff --git a/client/src/app/shared/video/video-edit.model.ts b/client/src/app/shared/video/video-edit.model.ts index a8bbb63eb..c1a70d1b3 100644 --- a/client/src/app/shared/video/video-edit.model.ts +++ b/client/src/app/shared/video/video-edit.model.ts @@ -24,16 +24,16 @@ export class VideoEdit { if (videoDetails) { this.id = videoDetails.id this.uuid = videoDetails.uuid - this.category = videoDetails.category - this.licence = videoDetails.licence - this.language = videoDetails.language + this.category = videoDetails.category.id + this.licence = videoDetails.licence.id + this.language = videoDetails.language.id this.description = videoDetails.description this.name = videoDetails.name this.tags = videoDetails.tags this.nsfw = videoDetails.nsfw this.commentsEnabled = videoDetails.commentsEnabled this.channel = videoDetails.channel.id - this.privacy = videoDetails.privacy + this.privacy = videoDetails.privacy.id this.support = videoDetails.support this.thumbnailUrl = videoDetails.thumbnailUrl this.previewUrl = videoDetails.previewUrl diff --git a/client/src/app/shared/video/video.model.ts b/client/src/app/shared/video/video.model.ts index 50ca9eb99..7b68933a1 100644 --- a/client/src/app/shared/video/video.model.ts +++ b/client/src/app/shared/video/video.model.ts @@ -2,18 +2,16 @@ import { Account } from '@app/shared/account/account.model' import { User } from '../' import { Video as VideoServerModel } from '../../../../../shared' import { Avatar } from '../../../../../shared/models/avatars/avatar.model' +import { VideoConstant } from '../../../../../shared/models/videos/video.model' import { getAbsoluteAPIUrl } from '../misc/utils' export class Video implements VideoServerModel { by: string createdAt: Date updatedAt: Date - categoryLabel: string - category: number - licenceLabel: string - licence: number - languageLabel: string - language: number + category: VideoConstant + licence: VideoConstant + language: VideoConstant description: string duration: number durationLabel: string @@ -58,11 +56,8 @@ export class Video implements VideoServerModel { const absoluteAPIUrl = getAbsoluteAPIUrl() this.createdAt = new Date(hash.createdAt.toString()) - this.categoryLabel = hash.categoryLabel this.category = hash.category - this.licenceLabel = hash.licenceLabel this.licence = hash.licence - this.languageLabel = hash.languageLabel this.language = hash.language this.description = hash.description this.duration = hash.duration diff --git a/client/src/app/videos/+video-edit/video-update.component.ts b/client/src/app/videos/+video-edit/video-update.component.ts index 2fc09278c..6cd204f72 100644 --- a/client/src/app/videos/+video-edit/video-update.component.ts +++ b/client/src/app/videos/+video-edit/video-update.component.ts @@ -72,7 +72,7 @@ export class VideoUpdateComponent extends FormReactive implements OnInit { ] // We cannot set private a video that was not private - if (video.privacy !== VideoPrivacy.PRIVATE) { + if (video.privacy.id !== VideoPrivacy.PRIVATE) { const newVideoPrivacies = [] for (const p of this.videoPrivacies) { if (p.id !== VideoPrivacy.PRIVATE) newVideoPrivacies.push(p) diff --git a/client/src/app/videos/+video-watch/modal/video-download.component.html b/client/src/app/videos/+video-watch/modal/video-download.component.html index f8f17a471..617892b11 100644 --- a/client/src/app/videos/+video-watch/modal/video-download.component.html +++ b/client/src/app/videos/+video-watch/modal/video-download.component.html @@ -9,8 +9,8 @@ @@ -131,7 +131,7 @@ Category - {{ video.categoryLabel }} + {{ video.category.label }} @@ -140,7 +140,7 @@ Licence - {{ video.licenceLabel }} + {{ video.licence.label }} @@ -149,7 +149,7 @@ Language - {{ video.languageLabel }} + {{ video.language.label }} diff --git a/client/src/assets/player/peertube-videojs-plugin.ts b/client/src/assets/player/peertube-videojs-plugin.ts index a96f6d1a1..c99363fb5 100644 --- a/client/src/assets/player/peertube-videojs-plugin.ts +++ b/client/src/assets/player/peertube-videojs-plugin.ts @@ -2,6 +2,7 @@ import * as videojs from 'video.js' import * as WebTorrent from 'webtorrent' +import { VideoConstant, VideoResolution } from '../../../../shared/models/videos' import { VideoFile } from '../../../../shared/models/videos/video.model' import { renderVideo } from './video-renderer' @@ -52,8 +53,8 @@ class ResolutionMenuItem extends MenuItem { options.selectable = true super(player, options) - const currentResolution = this.player_.peertube().getCurrentResolution() - this.selected(this.options_.id === currentResolution) + const currentResolutionId = this.player_.peertube().getCurrentResolutionId() + this.selected(this.options_.id === currentResolutionId) } handleClick (event) { @@ -89,10 +90,10 @@ class ResolutionMenuButton extends MenuButton { menuItems.push(new ResolutionMenuItem( this.player_, { - id: videoFile.resolution, - label: videoFile.resolutionLabel, + id: videoFile.resolution.id, + label: videoFile.resolution.label, src: videoFile.magnetUri, - selected: videoFile.resolution === this.currentSelection + selected: videoFile.resolution.id === this.currentSelectionId }) ) } @@ -269,12 +270,12 @@ class PeerTubePlugin extends Plugin { this.flushVideoFile(this.currentVideoFile, false) } - getCurrentResolution () { - return this.currentVideoFile ? this.currentVideoFile.resolution : -1 + getCurrentResolutionId () { + return this.currentVideoFile ? this.currentVideoFile.resolution.id : -1 } getCurrentResolutionLabel () { - return this.currentVideoFile ? this.currentVideoFile.resolutionLabel : '' + return this.currentVideoFile ? this.currentVideoFile.resolution.label : '' } updateVideoFile (videoFile?: VideoFile, done?: () => void) { @@ -339,7 +340,7 @@ class PeerTubePlugin extends Plugin { this.trigger('videoFileUpdate') } - updateResolution (resolution) { + updateResolution (resolutionId: number) { // Remember player state const currentTime = this.player.currentTime() const isPaused = this.player.paused() @@ -352,7 +353,7 @@ class PeerTubePlugin extends Plugin { this.player.bigPlayButton.hide() } - const newVideoFile = this.videoFiles.find(f => f.resolution === resolution) + const newVideoFile = this.videoFiles.find(f => f.resolution.id === resolutionId) this.updateVideoFile(newVideoFile, () => { this.player.currentTime(currentTime) this.player.handleTechSeeked_() -- cgit v1.2.3