From 4f1c4bb5e9bec4a58b5ec6ea903e69f018b5603f Mon Sep 17 00:00:00 2001 From: taiyme <53635909+taiyme@users.noreply.github.com> Date: Tue, 21 May 2024 14:37:21 +0900 Subject: [PATCH] =?UTF-8?q?enhance(abuses):=20=E9=80=9A=E5=A0=B1=E4=B8=80?= =?UTF-8?q?=E8=A6=A7=E3=83=9A=E3=83=BC=E3=82=B8=E3=81=AE=E6=94=B9=E4=BF=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(admin/abuse-user-reports): forwarded, moderationNote が含まれていない問題 * fix(MkAbuseReport): 通報一覧で描画が崩れる問題 --- locales/index.d.ts | 8 + locales/ja-JP.yml | 2 + .../entities/AbuseUserReportEntityService.ts | 3 + .../src/core/entities/UserEntityService.ts | 4 +- .../api/endpoints/admin/abuse-user-reports.ts | 4 + .../frontend/src/components/MkAbuseReport.vue | 305 +++++++++++++----- packages/frontend/src/pages/admin/abuses.vue | 38 +-- packages/misskey-js/src/autogen/types.ts | 1 + 8 files changed, 264 insertions(+), 101 deletions(-) diff --git a/locales/index.d.ts b/locales/index.d.ts index 4c8caf6f3d44..8b342c9f4ab1 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -10009,6 +10009,14 @@ export interface Locale extends ILocale { * 数字引用しました */ readonly "didNumberquote": string; + /** + * {user}によって解決済み + */ + readonly "resolvedBy": ParameterizedString<"user">; + /** + * リモートサーバーに転送済み + */ + readonly "forwardedReport": string; readonly "_about": { /** * taiymeについて diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index e1053eec6ea2..2da293de7b72 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -2666,6 +2666,8 @@ _tms: numberquote: "数字引用する" didPakuru: "パクりました" didNumberquote: "数字引用しました" + resolvedBy: "{user}によって解決済み" + forwardedReport: "リモートサーバーに転送済み" _about: title: "taiymeについて" description: "taiymeは、Misskeyから派生したオープンソースのソフトウェアです。" diff --git a/packages/backend/src/core/entities/AbuseUserReportEntityService.ts b/packages/backend/src/core/entities/AbuseUserReportEntityService.ts index 49f256d870df..1dae9b23994a 100644 --- a/packages/backend/src/core/entities/AbuseUserReportEntityService.ts +++ b/packages/backend/src/core/entities/AbuseUserReportEntityService.ts @@ -39,12 +39,15 @@ export class AbuseUserReportEntityService { assigneeId: report.assigneeId, reporter: this.userEntityService.pack(report.reporter ?? report.reporterId, null, { schema: 'UserDetailedNotMe', + iAmModerator: true, }), targetUser: this.userEntityService.pack(report.targetUser ?? report.targetUserId, null, { schema: 'UserDetailedNotMe', + iAmModerator: true, }), assignee: report.assigneeId ? this.userEntityService.pack(report.assignee ?? report.assigneeId, null, { schema: 'UserDetailedNotMe', + iAmModerator: true, }) : null, forwarded: report.forwarded, }); diff --git a/packages/backend/src/core/entities/UserEntityService.ts b/packages/backend/src/core/entities/UserEntityService.ts index b80a1ec206b4..251e19bbfcfd 100644 --- a/packages/backend/src/core/entities/UserEntityService.ts +++ b/packages/backend/src/core/entities/UserEntityService.ts @@ -404,11 +404,13 @@ export class UserEntityService implements OnModuleInit { userRelations?: Map, userMemos?: Map, pinNotes?: Map, + iAmModerator?: boolean, }, ): Promise> { const opts = Object.assign({ schema: 'UserLite', includeSecrets: false, + iAmModerator: false, }, options); const user = typeof src === 'object' ? src : await this.usersRepository.findOneByOrFail({ id: src }); @@ -416,7 +418,7 @@ export class UserEntityService implements OnModuleInit { const isDetailed = opts.schema !== 'UserLite'; const meId = me ? me.id : null; const isMe = meId === user.id; - const iAmModerator = me ? await this.roleService.isModerator(me as MiUser) : false; + const iAmModerator = opts.iAmModerator || (me ? await this.roleService.isModerator(me as MiUser) : false); const profile = isDetailed ? (opts.userProfile ?? await this.userProfilesRepository.findOneByOrFail({ userId: user.id })) diff --git a/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts b/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts index cf3f257ca692..386ccda9743d 100644 --- a/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts +++ b/packages/backend/src/server/api/endpoints/admin/abuse-user-reports.ts @@ -74,6 +74,10 @@ export const meta = { nullable: true, optional: true, ref: 'UserDetailedNotMe', }, + forwarded: { + type: 'boolean', + nullable: false, optional: false, + }, }, }, }, diff --git a/packages/frontend/src/components/MkAbuseReport.vue b/packages/frontend/src/components/MkAbuseReport.vue index a28e7c25592d..3df8ea9fcb41 100644 --- a/packages/frontend/src/components/MkAbuseReport.vue +++ b/packages/frontend/src/components/MkAbuseReport.vue @@ -4,37 +4,91 @@ SPDX-License-Identifier: AGPL-3.0-only -->