Skip to content

Commit

Permalink
feat: adminのファイル一覧画面で、ファイルが添付されているノートを一覧できるように (misskey-dev#14403)
Browse files Browse the repository at this point in the history
* enhance(moderation): モデレーターがファイルが添付されているノートを照会できるように (MisskeyIO#680)

Co-authored-by: riku6460 <[email protected]>
Co-authored-by: nenohi <[email protected]>
Co-authored-by: まっちゃとーにゅ <[email protected]>
(cherry picked from commit b059162)

* Update Changelog

* ✌️

Co-authored-by: riku6460 <[email protected]>
Co-authored-by: nenohi <[email protected]>
Co-authored-by: まっちゃとーにゅ <[email protected]>

---------

Co-authored-by: Yuuki <[email protected]>
Co-authored-by: riku6460 <[email protected]>
Co-authored-by: nenohi <[email protected]>
Co-authored-by: まっちゃとーにゅ <[email protected]>
  • Loading branch information
5 people authored and HotoRas committed Sep 27, 2024
1 parent e816bf0 commit 8171282
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 2 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

### General
- Feat: UserWebhookとSystemWebhookのテスト送信機能を追加 (#14445)
- Feat: モデレーターはユーザーにかかわらずファイルが添付されているノートを検索できるように
(Cherry-picked from https://github.com/MisskeyIO/misskey/pull/680)
- Enhance: ユーザーによるコンテンツインポートの可否をロールポリシーで制御できるように

### Client
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { QueryService } from '@/core/QueryService.js';
import { NoteEntityService } from '@/core/entities/NoteEntityService.js';
import { DI } from '@/di-symbols.js';
import { ApiError } from '../../../error.js';
import { RoleService } from '@/core/RoleService.js';

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

private noteEntityService: NoteEntityService,
private queryService: QueryService,
private roleService: RoleService,
) {
super(meta, paramDef, async (ps, me) => {
// Fetch file
const file = await this.driveFilesRepository.findOneBy({
id: ps.fileId,
userId: me.id,
userId: await this.roleService.isModerator(me) ? undefined : me.id,
});

if (file == null) {
Expand Down
10 changes: 9 additions & 1 deletion packages/frontend/src/pages/admin-file.vue
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkButton danger @click="del"><i class="ti ti-trash"></i> {{ i18n.ts.delete }}</MkButton>
</div>
</div>
<div v-else-if="tab === 'notes' && info" class="_gaps_m">
<XNotes :fileId="fileId"/>
</div>
<div v-else-if="tab === 'ip' && info" class="_gaps_m">
<MkInfo v-if="!iAmAdmin" warn>{{ i18n.ts.requireAdminForView }}</MkInfo>
<MkKeyValue v-if="info.requestIp" class="_monospace" :copy="info.requestIp" oneline>
Expand All @@ -67,7 +70,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>

<script lang="ts" setup>
import { computed, ref } from 'vue';
import { computed, defineAsyncComponent, ref } from 'vue';
import * as Misskey from 'misskey-js';
import MkButton from '@/components/MkButton.vue';
import MkSwitch from '@/components/MkSwitch.vue';
Expand All @@ -88,6 +91,7 @@ const tab = ref('overview');
const file = ref<Misskey.entities.DriveFile | null>(null);
const info = ref<Misskey.entities.AdminDriveShowFileResponse | null>(null);
const isSensitive = ref<boolean>(false);
const XNotes = defineAsyncComponent(() => import('./drive.file.notes.vue'));
const props = defineProps<{
fileId: string,
Expand Down Expand Up @@ -131,6 +135,10 @@ const headerTabs = computed(() => [{
title: i18n.ts.overview,
icon: 'ti ti-info-circle',
}, iAmModerator ? {
key: 'notes',
title: i18n.ts._fileViewer.attachedNotes,
icon: 'ti ti-pencil',
} : null, iAmModerator ? {
key: 'ip',
title: 'IP',
icon: 'ti ti-password',
Expand Down

0 comments on commit 8171282

Please sign in to comment.