Feat: GDPRモードを追加した

Signed-off-by: mattyatea <mattyacocacora0@gmail.com>
This commit is contained in:
mattyatea 2023-12-31 18:19:59 +09:00
parent cb1586658e
commit 74e45b13eb
No known key found for this signature in database
GPG key ID: 068E54E2C33BEF9A
13 changed files with 83 additions and 8 deletions

View file

@ -158,6 +158,7 @@ export interface AdminEventTypes {
reporterId: MiUser['id'],
comment: string;
notes: any[];
noteIds: string[];
};
}
//#endregion

View file

@ -4,12 +4,14 @@
*/
import { Inject, Injectable } from '@nestjs/common';
import { In } from 'typeorm';
import { DI } from '@/di-symbols.js';
import type { AbuseUserReportsRepository } from '@/models/_.js';
import type { AbuseUserReportsRepository, NotesRepository } from '@/models/_.js';
import { awaitAll } from '@/misc/prelude/await-all.js';
import type { MiAbuseUserReport } from '@/models/AbuseUserReport.js';
import { bindThis } from '@/decorators.js';
import { IdService } from '@/core/IdService.js';
import { NoteEntityService } from '@/core/entities/NoteEntityService.js';
import { UserEntityService } from './UserEntityService.js';
@Injectable()
@ -18,7 +20,11 @@ export class AbuseUserReportEntityService {
@Inject(DI.abuseUserReportsRepository)
private abuseUserReportsRepository: AbuseUserReportsRepository,
@Inject(DI.notesRepository)
private notesRepository: NotesRepository,
private userEntityService: UserEntityService,
private noteEntityService: NoteEntityService,
private idService: IdService,
) {
}
@ -28,12 +34,25 @@ export class AbuseUserReportEntityService {
src: MiAbuseUserReport['id'] | MiAbuseUserReport,
) {
const report = typeof src === 'object' ? src : await this.abuseUserReportsRepository.findOneByOrFail({ id: src });
const notes = (report.notes.length === 0) ? report.notes : [];
if (report.noteIds && report.noteIds.length > 0) {
for (const x of report.noteIds) {
const exists = await this.notesRepository.countBy({ id: x });
if (exists === 0) {
notes.push('deleted');
continue;
}
notes.push(await this.noteEntityService.pack(x));
}
}
console.log(report.notes.length, null, notes);
return await awaitAll({
id: report.id,
createdAt: this.idService.parse(report.id).date.toISOString(),
comment: report.comment,
notes: report.notes,
notes,
resolved: report.resolved,
reporterId: report.reporterId,
targetUserId: report.targetUserId,