mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-03 17:59:37 +02:00
Remove shocking/disturbing nsfw flag
It's too vague
This commit is contained in:
parent
51aa83406e
commit
b84f203459
11 changed files with 8 additions and 56 deletions
|
@ -44,7 +44,6 @@ type CommonUpdateForm =
|
||||||
|
|
||||||
nsfwFlagViolent?: boolean
|
nsfwFlagViolent?: boolean
|
||||||
nsfwFlagSex?: boolean
|
nsfwFlagSex?: boolean
|
||||||
nsfwFlagShocking?: boolean
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type LiveUpdateForm = Omit<LiveVideoUpdate, 'replaySettings'> & {
|
type LiveUpdateForm = Omit<LiveVideoUpdate, 'replaySettings'> & {
|
||||||
|
@ -462,12 +461,6 @@ export class VideoEdit {
|
||||||
: this.common.nsfwFlags & ~NSFWFlag.EXPLICIT_SEX
|
: this.common.nsfwFlags & ~NSFWFlag.EXPLICIT_SEX
|
||||||
}
|
}
|
||||||
|
|
||||||
if (values.nsfwFlagShocking !== undefined) {
|
|
||||||
this.common.nsfwFlags = values.nsfwFlagShocking
|
|
||||||
? this.common.nsfwFlags | NSFWFlag.SHOCKING_DISTURBING
|
|
||||||
: this.common.nsfwFlags & ~NSFWFlag.SHOCKING_DISTURBING
|
|
||||||
}
|
|
||||||
|
|
||||||
if (values.nsfwFlagViolent !== undefined) {
|
if (values.nsfwFlagViolent !== undefined) {
|
||||||
this.common.nsfwFlags = values.nsfwFlagViolent
|
this.common.nsfwFlags = values.nsfwFlagViolent
|
||||||
? this.common.nsfwFlags | NSFWFlag.VIOLENT
|
? this.common.nsfwFlags | NSFWFlag.VIOLENT
|
||||||
|
@ -532,7 +525,6 @@ export class VideoEdit {
|
||||||
|
|
||||||
nsfw: this.common.nsfw,
|
nsfw: this.common.nsfw,
|
||||||
nsfwFlagSex: (this.common.nsfwFlags & NSFWFlag.EXPLICIT_SEX) === NSFWFlag.EXPLICIT_SEX,
|
nsfwFlagSex: (this.common.nsfwFlags & NSFWFlag.EXPLICIT_SEX) === NSFWFlag.EXPLICIT_SEX,
|
||||||
nsfwFlagShocking: (this.common.nsfwFlags & NSFWFlag.SHOCKING_DISTURBING) === NSFWFlag.SHOCKING_DISTURBING,
|
|
||||||
nsfwFlagViolent: (this.common.nsfwFlags & NSFWFlag.VIOLENT) === NSFWFlag.VIOLENT,
|
nsfwFlagViolent: (this.common.nsfwFlags & NSFWFlag.VIOLENT) === NSFWFlag.VIOLENT,
|
||||||
nsfwSummary: this.common.nsfwSummary,
|
nsfwSummary: this.common.nsfwSummary,
|
||||||
|
|
||||||
|
|
|
@ -42,12 +42,6 @@
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</my-peertube-checkbox>
|
</my-peertube-checkbox>
|
||||||
|
|
||||||
<my-peertube-checkbox inputName="nsfwFlagShocking" formControlName="nsfwFlagShocking">
|
|
||||||
<ng-template ptTemplate="label">
|
|
||||||
<ng-container i18n>Parts of the video may shock or disturb</ng-container>
|
|
||||||
</ng-template>
|
|
||||||
</my-peertube-checkbox>
|
|
||||||
|
|
||||||
<my-peertube-checkbox inputName="nsfwFlagSex" formControlName="nsfwFlagSex">
|
<my-peertube-checkbox inputName="nsfwFlagSex" formControlName="nsfwFlagSex">
|
||||||
<ng-template ptTemplate="label">
|
<ng-template ptTemplate="label">
|
||||||
<ng-container i18n>Content may be perceived as sexually explicit material</ng-container>
|
<ng-container i18n>Content may be perceived as sexually explicit material</ng-container>
|
||||||
|
|
|
@ -22,7 +22,6 @@ type Form = {
|
||||||
nsfw: FormControl<boolean>
|
nsfw: FormControl<boolean>
|
||||||
|
|
||||||
nsfwFlagViolent: FormControl<boolean>
|
nsfwFlagViolent: FormControl<boolean>
|
||||||
nsfwFlagShocking: FormControl<boolean>
|
|
||||||
nsfwFlagSex: FormControl<boolean>
|
nsfwFlagSex: FormControl<boolean>
|
||||||
nsfwSummary: FormControl<string>
|
nsfwSummary: FormControl<string>
|
||||||
|
|
||||||
|
@ -82,7 +81,6 @@ export class VideoModerationComponent implements OnInit, OnDestroy {
|
||||||
commentsPolicy: null,
|
commentsPolicy: null,
|
||||||
nsfw: null,
|
nsfw: null,
|
||||||
nsfwFlagViolent: null,
|
nsfwFlagViolent: null,
|
||||||
nsfwFlagShocking: null,
|
|
||||||
nsfwFlagSex: null,
|
nsfwFlagSex: null,
|
||||||
nsfwSummary: VIDEO_NSFW_SUMMARY_VALIDATOR
|
nsfwSummary: VIDEO_NSFW_SUMMARY_VALIDATOR
|
||||||
}
|
}
|
||||||
|
@ -125,7 +123,6 @@ export class VideoModerationComponent implements OnInit, OnDestroy {
|
||||||
private updateNSFWControls (nsfw: boolean) {
|
private updateNSFWControls (nsfw: boolean) {
|
||||||
const controls = [
|
const controls = [
|
||||||
this.form.controls.nsfwFlagViolent,
|
this.form.controls.nsfwFlagViolent,
|
||||||
this.form.controls.nsfwFlagShocking,
|
|
||||||
this.form.controls.nsfwFlagSex,
|
this.form.controls.nsfwFlagSex,
|
||||||
this.form.controls.nsfwSummary
|
this.form.controls.nsfwSummary
|
||||||
]
|
]
|
||||||
|
|
|
@ -543,10 +543,6 @@ export class VideoService {
|
||||||
flags.push($localize`violence`)
|
flags.push($localize`violence`)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((video.nsfwFlags & NSFWFlag.SHOCKING_DISTURBING) === NSFWFlag.SHOCKING_DISTURBING) {
|
|
||||||
flags.push($localize`shocking content`)
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((video.nsfwFlags & NSFWFlag.EXPLICIT_SEX) === NSFWFlag.EXPLICIT_SEX) {
|
if ((video.nsfwFlags & NSFWFlag.EXPLICIT_SEX) === NSFWFlag.EXPLICIT_SEX) {
|
||||||
flags.push($localize`explicit sex`)
|
flags.push($localize`explicit sex`)
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,18 +33,6 @@
|
||||||
></my-select-radio>
|
></my-select-radio>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group mb-3">
|
|
||||||
<my-select-radio
|
|
||||||
[items]="nsfwFlagItems"
|
|
||||||
inputId="nsfwFlagShocking"
|
|
||||||
isGroup="true"
|
|
||||||
labelSecondary="true"
|
|
||||||
i18n-label
|
|
||||||
label="Shocking or disturbing content"
|
|
||||||
formControlName="nsfwFlagShocking"
|
|
||||||
></my-select-radio>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group mb-3">
|
<div class="form-group mb-3">
|
||||||
<my-select-radio
|
<my-select-radio
|
||||||
[items]="nsfwFlagItems"
|
[items]="nsfwFlagItems"
|
||||||
|
|
|
@ -19,7 +19,6 @@ type NSFWFlagPolicyType = NSFWPolicyType | 'default'
|
||||||
type Form = {
|
type Form = {
|
||||||
nsfwPolicy: FormControl<NSFWPolicyType>
|
nsfwPolicy: FormControl<NSFWPolicyType>
|
||||||
nsfwFlagViolent: FormControl<NSFWFlagPolicyType>
|
nsfwFlagViolent: FormControl<NSFWFlagPolicyType>
|
||||||
nsfwFlagShocking: FormControl<NSFWFlagPolicyType>
|
|
||||||
nsfwFlagSex: FormControl<NSFWFlagPolicyType>
|
nsfwFlagSex: FormControl<NSFWFlagPolicyType>
|
||||||
|
|
||||||
p2pEnabled: FormControl<boolean>
|
p2pEnabled: FormControl<boolean>
|
||||||
|
@ -117,7 +116,6 @@ export class UserVideoSettingsComponent implements OnInit, OnDestroy {
|
||||||
this.form.patchValue({
|
this.form.patchValue({
|
||||||
nsfwPolicy: this.user().nsfwPolicy || defaultNSFWPolicy,
|
nsfwPolicy: this.user().nsfwPolicy || defaultNSFWPolicy,
|
||||||
nsfwFlagViolent: this.buildNSFWFormFlag(NSFWFlag.VIOLENT),
|
nsfwFlagViolent: this.buildNSFWFormFlag(NSFWFlag.VIOLENT),
|
||||||
nsfwFlagShocking: this.buildNSFWFormFlag(NSFWFlag.SHOCKING_DISTURBING),
|
|
||||||
nsfwFlagSex: this.buildNSFWFormFlag(NSFWFlag.EXPLICIT_SEX),
|
nsfwFlagSex: this.buildNSFWFormFlag(NSFWFlag.EXPLICIT_SEX),
|
||||||
|
|
||||||
p2pEnabled: this.user().p2pEnabled,
|
p2pEnabled: this.user().p2pEnabled,
|
||||||
|
@ -139,7 +137,6 @@ export class UserVideoSettingsComponent implements OnInit, OnDestroy {
|
||||||
const obj: BuildFormArgument = {
|
const obj: BuildFormArgument = {
|
||||||
nsfwPolicy: null,
|
nsfwPolicy: null,
|
||||||
nsfwFlagViolent: null,
|
nsfwFlagViolent: null,
|
||||||
nsfwFlagShocking: null,
|
|
||||||
nsfwFlagSex: null,
|
nsfwFlagSex: null,
|
||||||
|
|
||||||
p2pEnabled: null,
|
p2pEnabled: null,
|
||||||
|
@ -187,7 +184,6 @@ export class UserVideoSettingsComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
if (onlyKeys) {
|
if (onlyKeys) {
|
||||||
const hasNSFWFlags = onlyKeys.includes('nsfwFlagViolent') ||
|
const hasNSFWFlags = onlyKeys.includes('nsfwFlagViolent') ||
|
||||||
onlyKeys.includes('nsfwFlagShocking') ||
|
|
||||||
onlyKeys.includes('nsfwFlagSex')
|
onlyKeys.includes('nsfwFlagSex')
|
||||||
|
|
||||||
const onlyKeysWithNSFW = hasNSFWFlags
|
const onlyKeysWithNSFW = hasNSFWFlags
|
||||||
|
@ -257,7 +253,6 @@ export class UserVideoSettingsComponent implements OnInit, OnDestroy {
|
||||||
let result = NSFWFlag.NONE
|
let result = NSFWFlag.NONE
|
||||||
|
|
||||||
if (this.form.value.nsfwFlagViolent === type) result |= NSFWFlag.VIOLENT
|
if (this.form.value.nsfwFlagViolent === type) result |= NSFWFlag.VIOLENT
|
||||||
if (this.form.value.nsfwFlagShocking === type) result |= NSFWFlag.SHOCKING_DISTURBING
|
|
||||||
if (this.form.value.nsfwFlagSex === type) result |= NSFWFlag.EXPLICIT_SEX
|
if (this.form.value.nsfwFlagSex === type) result |= NSFWFlag.EXPLICIT_SEX
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
|
@ -73,10 +73,6 @@ class PeerTubeNSFWComponent extends Component {
|
||||||
flagStrings.push(this.player().localize(`Violence`))
|
flagStrings.push(this.player().localize(`Violence`))
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((flags & NSFWFlag.SHOCKING_DISTURBING) === NSFWFlag.SHOCKING_DISTURBING) {
|
|
||||||
flagStrings.push(this.player().localize(`Shocking Content`))
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((flags & NSFWFlag.EXPLICIT_SEX) === NSFWFlag.EXPLICIT_SEX) {
|
if ((flags & NSFWFlag.EXPLICIT_SEX) === NSFWFlag.EXPLICIT_SEX) {
|
||||||
flagStrings.push(this.player().localize(`Explicit Sex`))
|
flagStrings.push(this.player().localize(`Explicit Sex`))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +1,19 @@
|
||||||
export const NSFWFlag = {
|
export const NSFWFlag = {
|
||||||
NONE: 0 << 0,
|
NONE: 0 << 0,
|
||||||
VIOLENT: 1 << 0,
|
VIOLENT: 1 << 0,
|
||||||
SHOCKING_DISTURBING: 1 << 1,
|
EXPLICIT_SEX: 1 << 1
|
||||||
EXPLICIT_SEX: 1 << 2
|
|
||||||
} as const
|
} as const
|
||||||
|
|
||||||
export type NSFWFlagType = typeof NSFWFlag[keyof typeof NSFWFlag]
|
export type NSFWFlagType = typeof NSFWFlag[keyof typeof NSFWFlag]
|
||||||
|
|
||||||
export type NSFWFlagString =
|
export type NSFWFlagString =
|
||||||
| 'violent'
|
| 'violent'
|
||||||
| 'shockingOrDisturbing'
|
|
||||||
| 'explicitSex'
|
| 'explicitSex'
|
||||||
|
|
||||||
const nsfwFlagsToStringMap: {
|
const nsfwFlagsToStringMap: {
|
||||||
[key in NSFWFlagString]: NSFWFlagType
|
[key in NSFWFlagString]: NSFWFlagType
|
||||||
} = {
|
} = {
|
||||||
violent: NSFWFlag.VIOLENT,
|
violent: NSFWFlag.VIOLENT,
|
||||||
shockingOrDisturbing: NSFWFlag.SHOCKING_DISTURBING,
|
|
||||||
explicitSex: NSFWFlag.EXPLICIT_SEX
|
explicitSex: NSFWFlag.EXPLICIT_SEX
|
||||||
} as const
|
} as const
|
||||||
|
|
||||||
|
@ -24,7 +21,6 @@ const nsfwFlagsStringToEnumMap: {
|
||||||
[key in NSFWFlagType]: NSFWFlagString
|
[key in NSFWFlagType]: NSFWFlagString
|
||||||
} = {
|
} = {
|
||||||
[NSFWFlag.VIOLENT]: 'violent',
|
[NSFWFlag.VIOLENT]: 'violent',
|
||||||
[NSFWFlag.SHOCKING_DISTURBING]: 'shockingOrDisturbing',
|
|
||||||
[NSFWFlag.EXPLICIT_SEX]: 'explicitSex'
|
[NSFWFlag.EXPLICIT_SEX]: 'explicitSex'
|
||||||
} as const
|
} as const
|
||||||
|
|
||||||
|
|
|
@ -201,10 +201,10 @@ describe('Test index search', function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
await checkNSFW({ nsfw: 'false', nsfwFlagsIncluded: NSFWFlag.VIOLENT }, true)
|
await checkNSFW({ nsfw: 'false', nsfwFlagsIncluded: NSFWFlag.VIOLENT }, true)
|
||||||
await checkNSFW({ nsfw: 'false', nsfwFlagsIncluded: NSFWFlag.VIOLENT | NSFWFlag.SHOCKING_DISTURBING }, true)
|
await checkNSFW({ nsfw: 'false', nsfwFlagsIncluded: NSFWFlag.VIOLENT | NSFWFlag.EXPLICIT_SEX }, true)
|
||||||
await checkNSFW({ nsfw: 'true', nsfwFlagsExcluded: NSFWFlag.VIOLENT }, false)
|
await checkNSFW({ nsfw: 'true', nsfwFlagsExcluded: NSFWFlag.VIOLENT }, false)
|
||||||
await checkNSFW({ nsfw: 'both', nsfwFlagsExcluded: NSFWFlag.VIOLENT | NSFWFlag.SHOCKING_DISTURBING }, false)
|
await checkNSFW({ nsfw: 'both', nsfwFlagsExcluded: NSFWFlag.VIOLENT | NSFWFlag.EXPLICIT_SEX }, false)
|
||||||
await checkNSFW({ nsfw: 'false', nsfwFlagsIncluded: NSFWFlag.SHOCKING_DISTURBING }, false)
|
await checkNSFW({ nsfw: 'false', nsfwFlagsIncluded: NSFWFlag.EXPLICIT_SEX }, false)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should search by host', async function () {
|
it('Should search by host', async function () {
|
||||||
|
|
|
@ -127,7 +127,7 @@ describe('Test video NSFW policy', function () {
|
||||||
attributes: {
|
attributes: {
|
||||||
name: 'nsfw sex',
|
name: 'nsfw sex',
|
||||||
nsfw: true,
|
nsfw: true,
|
||||||
nsfwFlags: NSFWFlag.SHOCKING_DISTURBING | NSFWFlag.EXPLICIT_SEX,
|
nsfwFlags: NSFWFlag.VIOLENT | NSFWFlag.EXPLICIT_SEX,
|
||||||
nsfwSummary: 'This is a shocking and disturbing video',
|
nsfwSummary: 'This is a shocking and disturbing video',
|
||||||
category: 1
|
category: 1
|
||||||
}
|
}
|
||||||
|
@ -140,7 +140,7 @@ describe('Test video NSFW policy', function () {
|
||||||
const video = await server.videos.get({ id: uuid })
|
const video = await server.videos.get({ id: uuid })
|
||||||
|
|
||||||
expect(video.nsfw).to.be.true
|
expect(video.nsfw).to.be.true
|
||||||
expect(video.nsfwFlags).to.equal(6)
|
expect(video.nsfwFlags).to.equal(3)
|
||||||
expect(video.nsfwSummary).to.equal('This is a shocking and disturbing video')
|
expect(video.nsfwSummary).to.equal('This is a shocking and disturbing video')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -556,7 +556,7 @@ describe('Test video NSFW policy', function () {
|
||||||
nsfwPolicy: 'do_not_list',
|
nsfwPolicy: 'do_not_list',
|
||||||
nsfwFlagsHidden: NSFWFlag.EXPLICIT_SEX,
|
nsfwFlagsHidden: NSFWFlag.EXPLICIT_SEX,
|
||||||
nsfwFlagsWarned: NSFWFlag.NONE,
|
nsfwFlagsWarned: NSFWFlag.NONE,
|
||||||
nsfwFlagsBlurred: NSFWFlag.SHOCKING_DISTURBING,
|
nsfwFlagsBlurred: NSFWFlag.NONE,
|
||||||
nsfwFlagsDisplayed: NSFWFlag.VIOLENT
|
nsfwFlagsDisplayed: NSFWFlag.VIOLENT
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -8215,9 +8215,7 @@ components:
|
||||||
|
|
||||||
- `1` VIOLENT
|
- `1` VIOLENT
|
||||||
|
|
||||||
- `2` SHOCKING_DISTURBING
|
- `2` EXPLICIT_SEX
|
||||||
|
|
||||||
- `4` EXPLICIT_SEX
|
|
||||||
|
|
||||||
UserRole:
|
UserRole:
|
||||||
type: integer
|
type: integer
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue