This commit is contained in:
syuilo 2025-07-30 17:12:33 +09:00
parent 120d43a234
commit 355d9dbb73
5 changed files with 50 additions and 0 deletions

View File

@ -0,0 +1,18 @@
/*
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
export class RemoteNotesCleaning1753863104203 {
name = 'RemoteNotesCleaning1753863104203'
async up(queryRunner) {
await queryRunner.query(`ALTER TABLE "meta" ADD "enableRemoteNotesCleaning" boolean NOT NULL DEFAULT true`);
await queryRunner.query(`ALTER TABLE "meta" ADD "remoteNotesCleaningMaxDurationInMinutes" integer NOT NULL DEFAULT '60'`);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "remoteNotesCleaningMaxDurationInMinutes"`);
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "enableRemoteNotesCleaning"`);
}
}

View File

@ -571,6 +571,14 @@ export const meta = {
type: 'boolean',
optional: false, nullable: false,
},
enableRemoteNotesCleaning: {
type: 'boolean',
optional: false, nullable: false,
},
remoteNotesCleaningMaxDurationInMinutes: {
type: 'number',
optional: false, nullable: false,
},
},
},
} as const;
@ -722,6 +730,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
proxyRemoteFiles: instance.proxyRemoteFiles,
signToActivityPubGet: instance.signToActivityPubGet,
allowExternalApRedirect: instance.allowExternalApRedirect,
enableRemoteNotesCleaning: instance.enableRemoteNotesCleaning,
remoteNotesCleaningMaxDurationInMinutes: instance.remoteNotesCleaningMaxDurationInMinutes,
};
});
}

View File

@ -205,6 +205,8 @@ export const paramDef = {
proxyRemoteFiles: { type: 'boolean' },
signToActivityPubGet: { type: 'boolean' },
allowExternalApRedirect: { type: 'boolean' },
enableRemoteNotesCleaning: { type: 'boolean' },
remoteNotesCleaningMaxDurationInMinutes: { type: 'number' },
},
required: [],
} as const;
@ -723,6 +725,14 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
set.allowExternalApRedirect = ps.allowExternalApRedirect;
}
if (ps.enableRemoteNotesCleaning !== undefined) {
set.enableRemoteNotesCleaning = ps.enableRemoteNotesCleaning;
}
if (ps.remoteNotesCleaningMaxDurationInMinutes !== undefined) {
set.remoteNotesCleaningMaxDurationInMinutes = ps.remoteNotesCleaningMaxDurationInMinutes;
}
const before = await this.metaService.fetch(true);
await this.metaService.update(set);

View File

@ -116,6 +116,12 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #label>{{ i18n.ts.enable }}<span v-if="remoteNotesCleaningForm.modifiedStates.enableRemoteNotesCleaning" class="_modified">{{ i18n.ts.modified }}</span></template>
<template #caption>{{ i18n.ts._serverSettings.remoteNotesCleaning_description }}</template>
</MkSwitch>
<template v-if="remoteNotesCleaningForm.state.enableRemoteNotesCleaning">
<MkInput v-model="remoteNotesCleaningForm.state.remoteNotesCleaningMaxDurationInMinutes" type="number">
<template #label>remoteNotesCleaningMaxDurationInMinutes<span v-if="remoteNotesCleaningForm.modifiedStates.remoteNotesCleaningMaxDurationInMinutes" class="_modified">{{ i18n.ts.modified }}</span></template>
</MkInput>
</template>
</div>
</MkFolder>
</div>
@ -215,9 +221,11 @@ const rbtForm = useForm({
const remoteNotesCleaningForm = useForm({
enableRemoteNotesCleaning: meta.enableRemoteNotesCleaning,
remoteNotesCleaningMaxDurationInMinutes: meta.remoteNotesCleaningMaxDurationInMinutes,
}, async (state) => {
await os.apiWithDialog('admin/update-meta', {
enableRemoteNotesCleaning: state.enableRemoteNotesCleaning,
remoteNotesCleaningMaxDurationInMinutes: state.remoteNotesCleaningMaxDurationInMinutes,
});
fetchInstance(true);
});

View File

@ -9370,6 +9370,8 @@ export interface operations {
proxyRemoteFiles: boolean;
signToActivityPubGet: boolean;
allowExternalApRedirect: boolean;
enableRemoteNotesCleaning: boolean;
remoteNotesCleaningMaxDurationInMinutes: number;
};
};
};
@ -12599,6 +12601,8 @@ export interface operations {
proxyRemoteFiles?: boolean;
signToActivityPubGet?: boolean;
allowExternalApRedirect?: boolean;
enableRemoteNotesCleaning?: boolean;
remoteNotesCleaningMaxDurationInMinutes?: number;
};
};
};