mirror of
https://activitypub.software/TransFem-org/Sharkey.git
synced 2024-12-14 10:05:46 +01:00
merge: Fix "Mark as Sensitive by default" locking files into a Sensitive state (!700)
View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/700 Closes #760 Approved-by: dakkar <dakkar@thenautilus.net> Approved-by: Hazelnoot <acomputerdog@gmail.com>
This commit is contained in:
commit
90d8050df4
8 changed files with 35 additions and 5 deletions
16
packages/backend/migration/1729414690009-defaultSensitive.js
Normal file
16
packages/backend/migration/1729414690009-defaultSensitive.js
Normal 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"`);
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -196,6 +196,11 @@ export class MiUserProfile {
|
|||
})
|
||||
public alwaysMarkNsfw: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
default: false,
|
||||
})
|
||||
public defaultSensitive: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
default: false,
|
||||
})
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -48,7 +48,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||
<template #label>{{ i18n.ts.keepOriginalFilename }}</template>
|
||||
<template #caption>{{ i18n.ts.keepOriginalFilenameDescription }}</template>
|
||||
</MkSwitch>
|
||||
<MkSwitch v-model="alwaysMarkNsfw" @update:modelValue="saveProfile()">
|
||||
<MkSwitch v-model="defaultSensitive" @update:modelValue="saveProfile()">
|
||||
<template #label>{{ i18n.ts.alwaysMarkSensitive }}</template>
|
||||
</MkSwitch>
|
||||
</div>
|
||||
|
@ -80,7 +80,7 @@ const fetching = ref(true);
|
|||
const usage = ref<number | null>(null);
|
||||
const capacity = ref<number | null>(null);
|
||||
const uploadFolder = ref<Misskey.entities.DriveFolder | null>(null);
|
||||
const alwaysMarkNsfw = ref($i.alwaysMarkNsfw);
|
||||
const defaultSensitive = ref($i.defaultSensitive);
|
||||
|
||||
const meterStyle = computed(() => {
|
||||
if (!capacity.value || !usage.value) return {};
|
||||
|
@ -127,14 +127,14 @@ function chooseUploadFolder() {
|
|||
|
||||
function saveProfile() {
|
||||
misskeyApi('i/update', {
|
||||
alwaysMarkNsfw: !!alwaysMarkNsfw.value,
|
||||
defaultSensitive: !!defaultSensitive.value,
|
||||
}).catch(err => {
|
||||
os.alert({
|
||||
type: 'error',
|
||||
title: i18n.ts.error,
|
||||
text: err.message,
|
||||
});
|
||||
alwaysMarkNsfw.value = true;
|
||||
defaultSensitive.value = true;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -3994,6 +3994,7 @@ export type components = {
|
|||
injectFeaturedNote: boolean;
|
||||
receiveAnnouncementEmail: boolean;
|
||||
alwaysMarkNsfw: boolean;
|
||||
defaultSensitive: boolean;
|
||||
autoSensitive: boolean;
|
||||
carefulBot: boolean;
|
||||
autoAcceptFollowed: boolean;
|
||||
|
@ -20545,6 +20546,7 @@ export type operations = {
|
|||
injectFeaturedNote?: boolean;
|
||||
receiveAnnouncementEmail?: boolean;
|
||||
alwaysMarkNsfw?: boolean;
|
||||
defaultSensitive?: boolean;
|
||||
autoSensitive?: boolean;
|
||||
/** @enum {string} */
|
||||
followingVisibility?: 'public' | 'followers' | 'private';
|
||||
|
|
Loading…
Reference in a new issue