From 2243730c8edf210c0a3ffc161bac89785f6a52f0 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 19 Apr 2018 14:52:10 +0200 Subject: [PATCH] Add information concerning video privacy in my videos list --- .../account-videos.component.html | 1 + .../account-videos.component.scss | 6 +++++- client/src/app/core/auth/auth-user.model.ts | 8 ++++---- .../app/shared/video/video-details.model.ts | 11 +---------- client/src/app/shared/video/video.model.ts | 4 +++- server/initializers/constants.ts | 2 +- server/models/video/video.ts | 19 +++++++++++-------- server/tests/utils/videos/videos.ts | 4 ++-- shared/models/videos/video.model.ts | 2 +- 9 files changed, 29 insertions(+), 28 deletions(-) diff --git a/client/src/app/account/account-videos/account-videos.component.html b/client/src/app/account/account-videos/account-videos.component.html index d7e2230b0..66ce3a77b 100644 --- a/client/src/app/account/account-videos/account-videos.component.html +++ b/client/src/app/account/account-videos/account-videos.component.html @@ -18,6 +18,7 @@
{{ video.name }} {{ video.createdAt | myFromNow }} - {{ video.views | myNumberFormatter }} views +
{{ video.privacy.label }}
diff --git a/client/src/app/account/account-videos/account-videos.component.scss b/client/src/app/account/account-videos/account-videos.component.scss index 449cc6af4..f276ea389 100644 --- a/client/src/app/account/account-videos/account-videos.component.scss +++ b/client/src/app/account/account-videos/account-videos.component.scss @@ -79,8 +79,12 @@ font-weight: $font-semibold; } - .video-info-date-views { + .video-info-date-views, .video-info-private { font-size: 13px; + + &.video-info-private { + font-weight: $font-semibold; + } } } diff --git a/client/src/app/core/auth/auth-user.model.ts b/client/src/app/core/auth/auth-user.model.ts index 60fe57899..74ed1c580 100644 --- a/client/src/app/core/auth/auth-user.model.ts +++ b/client/src/app/core/auth/auth-user.model.ts @@ -71,7 +71,7 @@ export class AuthUser extends User { ROLE: 'role', EMAIL: 'email', USERNAME: 'username', - DEFAULT_NSFW_POLICY: 'nsfw_policy', + NSFW_POLICY: 'nsfw_policy', AUTO_PLAY_VIDEO: 'auto_play_video' } @@ -86,7 +86,7 @@ export class AuthUser extends User { username: peertubeLocalStorage.getItem(this.KEYS.USERNAME), email: peertubeLocalStorage.getItem(this.KEYS.EMAIL), role: parseInt(peertubeLocalStorage.getItem(this.KEYS.ROLE), 10) as UserRole, - nsfwPolicy: peertubeLocalStorage.getItem(this.KEYS.DEFAULT_NSFW_POLICY) as NSFWPolicyType, + nsfwPolicy: peertubeLocalStorage.getItem(this.KEYS.NSFW_POLICY) as NSFWPolicyType, autoPlayVideo: peertubeLocalStorage.getItem(this.KEYS.AUTO_PLAY_VIDEO) === 'true' }, Tokens.load() @@ -100,7 +100,7 @@ export class AuthUser extends User { peertubeLocalStorage.removeItem(this.KEYS.USERNAME) peertubeLocalStorage.removeItem(this.KEYS.ID) peertubeLocalStorage.removeItem(this.KEYS.ROLE) - peertubeLocalStorage.removeItem(this.KEYS.DEFAULT_NSFW_POLICY) + peertubeLocalStorage.removeItem(this.KEYS.NSFW_POLICY) peertubeLocalStorage.removeItem(this.KEYS.AUTO_PLAY_VIDEO) peertubeLocalStorage.removeItem(this.KEYS.EMAIL) Tokens.flush() @@ -137,7 +137,7 @@ export class AuthUser extends User { peertubeLocalStorage.setItem(AuthUser.KEYS.USERNAME, this.username) peertubeLocalStorage.setItem(AuthUser.KEYS.EMAIL, this.email) peertubeLocalStorage.setItem(AuthUser.KEYS.ROLE, this.role.toString()) - peertubeLocalStorage.setItem(AuthUser.KEYS.DEFAULT_NSFW_POLICY, this.nsfwPolicy.toString()) + peertubeLocalStorage.setItem(AuthUser.KEYS.NSFW_POLICY, this.nsfwPolicy.toString()) peertubeLocalStorage.setItem(AuthUser.KEYS.AUTO_PLAY_VIDEO, JSON.stringify(this.autoPlayVideo)) this.tokens.save() } diff --git a/client/src/app/shared/video/video-details.model.ts b/client/src/app/shared/video/video-details.model.ts index a1f7207a2..5397aa37f 100644 --- a/client/src/app/shared/video/video-details.model.ts +++ b/client/src/app/shared/video/video-details.model.ts @@ -1,17 +1,9 @@ -import { - UserRight, - VideoChannel, - VideoDetails as VideoDetailsServerModel, - VideoFile, - VideoPrivacy -} from '../../../../../shared' +import { UserRight, VideoChannel, VideoDetails as VideoDetailsServerModel, VideoFile } 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 { - privacy: VideoConstant descriptionPath: string support: string channel: VideoChannel @@ -26,7 +18,6 @@ export class VideoDetails extends Video implements VideoDetailsServerModel { constructor (hash: VideoDetailsServerModel) { super(hash) - this.privacy = hash.privacy this.descriptionPath = hash.descriptionPath this.files = hash.files this.channel = hash.channel diff --git a/client/src/app/shared/video/video.model.ts b/client/src/app/shared/video/video.model.ts index adc248a1e..e25c172e0 100644 --- a/client/src/app/shared/video/video.model.ts +++ b/client/src/app/shared/video/video.model.ts @@ -1,6 +1,6 @@ import { Account } from '@app/shared/account/account.model' import { User } from '../' -import { Video as VideoServerModel } from '../../../../../shared' +import { Video as VideoServerModel, VideoPrivacy } from '../../../../../shared' import { Avatar } from '../../../../../shared/models/avatars/avatar.model' import { VideoConstant } from '../../../../../shared/models/videos/video.model' import { getAbsoluteAPIUrl } from '../misc/utils' @@ -14,6 +14,7 @@ export class Video implements VideoServerModel { category: VideoConstant licence: VideoConstant language: VideoConstant + privacy: VideoConstant description: string duration: number durationLabel: string @@ -62,6 +63,7 @@ export class Video implements VideoServerModel { this.category = hash.category this.licence = hash.licence this.language = hash.language + this.privacy = hash.privacy this.description = hash.description this.duration = hash.duration this.durationLabel = Video.createDurationString(hash.duration) diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index d1915586a..fb436366c 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -168,7 +168,7 @@ const CONFIG = { get DESCRIPTION () { return config.get('instance.description') }, get TERMS () { return config.get('instance.terms') }, get DEFAULT_CLIENT_ROUTE () { return config.get('instance.default_client_route') }, - get DEFAULT_NSFW_POLICY () { return config.get('instance.default_nsfw_policy') }, + get NSFW_POLICY () { return config.get('instance.default_nsfw_policy') }, CUSTOMIZATIONS: { get JAVASCRIPT () { return config.get('instance.customizations.javascript') }, get CSS () { return config.get('instance.customizations.css') } diff --git a/server/models/video/video.ts b/server/models/video/video.ts index 2e66f9aa7..c08d18b71 100644 --- a/server/models/video/video.ts +++ b/server/models/video/video.ts @@ -884,6 +884,13 @@ export class VideoModel extends Model { return languageLabel } + private static getPrivacyLabel (id: number) { + let privacyLabel = VIDEO_PRIVACIES[id] + if (!privacyLabel) privacyLabel = 'Unknown' + + return privacyLabel + } + getOriginalFile () { if (Array.isArray(this.VideoFiles) === false) return undefined @@ -990,6 +997,10 @@ export class VideoModel extends Model { id: this.language, label: VideoModel.getLanguageLabel(this.language) }, + privacy: { + id: this.privacy, + label: VideoModel.getPrivacyLabel(this.privacy) + }, nsfw: this.nsfw, description: this.getTruncatedDescription(), isLocal: this.isOwned(), @@ -1016,15 +1027,7 @@ export class VideoModel extends Model { toFormattedDetailsJSON (): VideoDetails { const formattedJson = this.toFormattedJSON() - // Maybe our server is not up to date and there are new privacy settings since our version - let privacyLabel = VIDEO_PRIVACIES[this.privacy] - if (!privacyLabel) privacyLabel = 'Unknown' - const detailsJson = { - privacy: { - id: this.privacy, - label: privacyLabel - }, support: this.support, descriptionPath: this.getDescriptionPath(), channel: this.VideoChannel.toFormattedJSON(), diff --git a/server/tests/utils/videos/videos.ts b/server/tests/utils/videos/videos.ts index df9071c29..5e186147e 100644 --- a/server/tests/utils/videos/videos.ts +++ b/server/tests/utils/videos/videos.ts @@ -442,6 +442,8 @@ async function completeVideoCheck ( expect(video.licence.label).to.equal(VIDEO_LICENCES[attributes.licence] || 'Unknown') expect(video.language.id).to.equal(attributes.language) expect(video.language.label).to.equal(VIDEO_LANGUAGES[attributes.language] || 'Unknown') + expect(video.privacy.id).to.deep.equal(attributes.privacy) + expect(video.privacy.label).to.deep.equal(VIDEO_PRIVACIES[attributes.privacy]) expect(video.nsfw).to.equal(attributes.nsfw) expect(video.description).to.equal(attributes.description) expect(video.account.host).to.equal(attributes.account.host) @@ -459,8 +461,6 @@ async function completeVideoCheck ( expect(videoDetails.files).to.have.lengthOf(attributes.files.length) expect(videoDetails.tags).to.deep.equal(attributes.tags) - expect(videoDetails.privacy.id).to.deep.equal(attributes.privacy) - expect(videoDetails.privacy.label).to.deep.equal(VIDEO_PRIVACIES[attributes.privacy]) expect(videoDetails.account.name).to.equal(attributes.account.name) expect(videoDetails.account.host).to.equal(attributes.account.host) expect(videoDetails.commentsEnabled).to.equal(attributes.commentsEnabled) diff --git a/shared/models/videos/video.model.ts b/shared/models/videos/video.model.ts index 1b5f1a09c..70132c050 100644 --- a/shared/models/videos/video.model.ts +++ b/shared/models/videos/video.model.ts @@ -26,6 +26,7 @@ export interface Video { category: VideoConstant licence: VideoConstant language: VideoConstant + privacy: VideoConstant description: string duration: number isLocal: boolean @@ -48,7 +49,6 @@ export interface Video { } export interface VideoDetails extends Video { - privacy: VideoConstant descriptionPath: string support: string channel: VideoChannel