Skip to content

Commit ef25753

Browse files
Yuukikakkokari-gtyih
Yuuki
authored andcommitted
enhance(moderation): モデレーターがファイルが添付されているノートを照会できるように (MisskeyIO#680)
Co-authored-by: riku6460 <17585784+riku6460@users.noreply.github.com> Co-authored-by: nenohi <kimutipartylove@gmail.com> Co-authored-by: まっちゃとーにゅ <17376330+u1-liquid@users.noreply.github.com> (cherry picked from commit b059162)
1 parent 41936c1 commit ef25753

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

packages/backend/src/server/api/endpoints/drive/files/attached-notes.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { QueryService } from '@/core/QueryService.js';
1010
import { NoteEntityService } from '@/core/entities/NoteEntityService.js';
1111
import { DI } from '@/di-symbols.js';
1212
import { ApiError } from '../../../error.js';
13+
import { RoleService } from '@/core/RoleService.js';
1314

1415
export const meta = {
1516
tags: ['drive', 'notes'],
@@ -61,12 +62,13 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
6162

6263
private noteEntityService: NoteEntityService,
6364
private queryService: QueryService,
65+
private roleService: RoleService,
6466
) {
6567
super(meta, paramDef, async (ps, me) => {
6668
// Fetch file
6769
const file = await this.driveFilesRepository.findOneBy({
6870
id: ps.fileId,
69-
userId: me.id,
71+
userId: await this.roleService.isModerator(me) ? undefined : me.id,
7072
});
7173

7274
if (file == null) {

packages/frontend/src/pages/admin-file.vue

+9-1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ SPDX-License-Identifier: AGPL-3.0-only
4444
<MkButton danger @click="del"><i class="ti ti-trash"></i> {{ i18n.ts.delete }}</MkButton>
4545
</div>
4646
</div>
47+
<div v-else-if="tab === 'notes' && info" class="_gaps_m">
48+
<XNotes :fileId="fileId"/>
49+
</div>
4750
<div v-else-if="tab === 'ip' && info" class="_gaps_m">
4851
<MkInfo v-if="!iAmAdmin" warn>{{ i18n.ts.requireAdminForView }}</MkInfo>
4952
<MkKeyValue v-if="info.requestIp" class="_monospace" :copy="info.requestIp" oneline>
@@ -67,7 +70,7 @@ SPDX-License-Identifier: AGPL-3.0-only
6770
</template>
6871

6972
<script lang="ts" setup>
70-
import { computed, ref } from 'vue';
73+
import { computed, defineAsyncComponent, ref } from 'vue';
7174
import * as Misskey from 'misskey-js';
7275
import MkButton from '@/components/MkButton.vue';
7376
import MkSwitch from '@/components/MkSwitch.vue';
@@ -88,6 +91,7 @@ const tab = ref('overview');
8891
const file = ref<Misskey.entities.DriveFile | null>(null);
8992
const info = ref<Misskey.entities.AdminDriveShowFileResponse | null>(null);
9093
const isSensitive = ref<boolean>(false);
94+
const XNotes = defineAsyncComponent(() => import('./drive.file.notes.vue'));
9195

9296
const props = defineProps<{
9397
fileId: string,
@@ -131,6 +135,10 @@ const headerTabs = computed(() => [{
131135
title: i18n.ts.overview,
132136
icon: 'ti ti-info-circle',
133137
}, iAmModerator ? {
138+
key: 'notes',
139+
title: i18n.ts._fileViewer.attachedNotes,
140+
icon: 'ti ti-pencil',
141+
} : null, iAmModerator ? {
134142
key: 'ip',
135143
title: 'IP',
136144
icon: 'ti ti-password',

0 commit comments

Comments
 (0)