1
0
Fork 0
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:
Chocobozzz 2025-05-14 14:07:28 +02:00
parent 51aa83406e
commit b84f203459
No known key found for this signature in database
GPG key ID: 583A612D890159BE
11 changed files with 8 additions and 56 deletions

View file

@ -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,

View file

@ -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>

View file

@ -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
] ]

View file

@ -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`)
} }

View file

@ -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"

View file

@ -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

View file

@ -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`))
} }

View file

@ -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

View file

@ -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 () {

View file

@ -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
}) })

View file

@ -8215,9 +8215,7 @@ components:
- `1` VIOLENT - `1` VIOLENT
- `2` SHOCKING_DISTURBING - `2` EXPLICIT_SEX
- `4` EXPLICIT_SEX
UserRole: UserRole:
type: integer type: integer