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