fix: default sensitive not letting users unmark files

This commit is contained in:
Marie 2024-10-20 11:04:48 +02:00
parent ba17776b19
commit 65ac5fef46
No known key found for this signature in database
GPG key ID: 7ADF6C9CD9A28555
8 changed files with 35 additions and 5 deletions

View file

@ -0,0 +1,16 @@
/*
* SPDX-FileCopyrightText: marie and sharkey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
export class DefaultSensitive1729414690009 {
name = 'DefaultSensitive1729414690009'
async up(queryRunner) {
await queryRunner.query(`ALTER TABLE "user_profile" ADD "defaultSensitive" boolean NOT NULL DEFAULT false`);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "defaultSensitive"`);
}
}

View file

@ -560,7 +560,7 @@ export class DriveService {
file.maybeSensitive = info.sensitive;
file.maybePorn = info.porn;
file.isSensitive = user
? this.userEntityService.isLocalUser(user) && profile!.alwaysMarkNsfw ? true :
? this.userEntityService.isLocalUser(user) && (profile!.alwaysMarkNsfw || profile!.defaultSensitive) ? true :
sensitive ?? false
: false;

View file

@ -627,6 +627,7 @@ export class UserEntityService implements OnModuleInit {
injectFeaturedNote: profile!.injectFeaturedNote,
receiveAnnouncementEmail: profile!.receiveAnnouncementEmail,
alwaysMarkNsfw: profile!.alwaysMarkNsfw,
defaultSensitive: profile!.defaultSensitive,
autoSensitive: profile!.autoSensitive,
carefulBot: profile!.carefulBot,
autoAcceptFollowed: profile!.autoAcceptFollowed,

View file

@ -196,6 +196,11 @@ export class MiUserProfile {
})
public alwaysMarkNsfw: boolean;
@Column('boolean', {
default: false,
})
public defaultSensitive: boolean;
@Column('boolean', {
default: false,
})

View file

@ -516,6 +516,10 @@ export const packedMeDetailedOnlySchema = {
type: 'boolean',
nullable: false, optional: false,
},
defaultSensitive: {
type: 'boolean',
nullable: false, optional: false,
},
autoSensitive: {
type: 'boolean',
nullable: false, optional: false,

View file

@ -193,6 +193,7 @@ export const paramDef = {
injectFeaturedNote: { type: 'boolean' },
receiveAnnouncementEmail: { type: 'boolean' },
alwaysMarkNsfw: { type: 'boolean' },
defaultSensitive: { type: 'boolean' },
autoSensitive: { type: 'boolean' },
followingVisibility: { type: 'string', enum: ['public', 'followers', 'private'] },
followersVisibility: { type: 'string', enum: ['public', 'followers', 'private'] },
@ -349,6 +350,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
if (policies.alwaysMarkNsfw) throw new ApiError(meta.errors.restrictedByRole);
profileUpdates.alwaysMarkNsfw = ps.alwaysMarkNsfw;
}
if (typeof ps.defaultSensitive === 'boolean') profileUpdates.defaultSensitive = ps.defaultSensitive;
if (ps.emailNotificationTypes !== undefined) profileUpdates.emailNotificationTypes = ps.emailNotificationTypes;
if (ps.avatarId) {