mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-11-04 07:24:13 +00:00 
			
		
		
		
	fix: default sensitive not letting users unmark files
This commit is contained in:
		
							parent
							
								
									ba17776b19
								
							
						
					
					
						commit
						65ac5fef46
					
				
					 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…
	
	Add table
		
		Reference in a new issue