diff options
| author | かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> | 2023-04-29 15:48:06 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-29 15:48:06 +0900 |
| commit | 8fbca63cecfbb6e939360c01f07f5907de437a0f (patch) | |
| tree | a9e2e3acb9c8ef618b27cdf7e89d94c8e865e28e /packages/frontend | |
| parent | fix email test (#10719) (diff) | |
| download | sharkey-8fbca63cecfbb6e939360c01f07f5907de437a0f.tar.gz sharkey-8fbca63cecfbb6e939360c01f07f5907de437a0f.tar.bz2 sharkey-8fbca63cecfbb6e939360c01f07f5907de437a0f.zip | |
feat(client): Renoteした人の一覧を表示するダイアログを追加 (#10647)
* (add) renote user dialog
* (change) noteMenu order
Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>
* (change) menu text
* Update CHANGELOG.md
* (change) dialog title text
* (fix) grammar mistakes in CHANGELOG.md
* (change) i18n keys
---------
Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>
Diffstat (limited to 'packages/frontend')
| -rw-r--r-- | packages/frontend/src/components/MkReactedUsersDialog.vue | 4 | ||||
| -rw-r--r-- | packages/frontend/src/components/MkRenotedUsersDialog.vue | 65 | ||||
| -rw-r--r-- | packages/frontend/src/scripts/get-note-menu.ts | 14 |
3 files changed, 79 insertions, 4 deletions
diff --git a/packages/frontend/src/components/MkReactedUsersDialog.vue b/packages/frontend/src/components/MkReactedUsersDialog.vue index 1506e24ce8..0c0cc36692 100644 --- a/packages/frontend/src/components/MkReactedUsersDialog.vue +++ b/packages/frontend/src/components/MkReactedUsersDialog.vue @@ -6,7 +6,7 @@ @close="dialog.close()" @closed="emit('closed')" > - <template #header>{{ i18n.ts.reactions }}</template> + <template #header>{{ i18n.ts.reactionsList }}</template> <MkSpacer :margin-min="20" :margin-max="28"> <div v-if="note" class="_gaps"> @@ -21,7 +21,7 @@ <span style="margin-left: 4px;">{{ note.reactions[reaction] }}</span> </button> </div> - <MkA v-for="user in users" :key="user.id" :to="userPage(user)"> + <MkA v-for="user in users" :key="user.id" :to="userPage(user)" @click="dialog.close()"> <MkUserCardMini :user="user" :with-chart="false"/> </MkA> </template> diff --git a/packages/frontend/src/components/MkRenotedUsersDialog.vue b/packages/frontend/src/components/MkRenotedUsersDialog.vue new file mode 100644 index 0000000000..56025535f1 --- /dev/null +++ b/packages/frontend/src/components/MkRenotedUsersDialog.vue @@ -0,0 +1,65 @@ +<template> +<MkModalWindow + ref="dialog" + :width="400" + :height="450" + @close="dialog.close()" + @closed="emit('closed')" +> + <template #header>{{ i18n.ts.renotesList }}</template> + + <MkSpacer :margin-min="20" :margin-max="28"> + <div v-if="renotes" class="_gaps"> + <div v-if="renotes.length === 0" class="_fullinfo"> + <img src="https://xn--931a.moe/assets/info.jpg" class="_ghost"/> + <div>{{ i18n.ts.nothing }}</div> + </div> + <template v-else> + <MkA v-for="user in users" :key="user.id" :to="userPage(user)" @click="dialog.close()"> + <MkUserCardMini :user="user" :with-chart="false"/> + </MkA> + </template> + </div> + <div v-else> + <MkLoading/> + </div> + </MkSpacer> +</MkModalWindow> +</template> + +<script lang="ts" setup> +import { onMounted } from 'vue'; +import * as misskey from 'misskey-js'; +import MkModalWindow from '@/components/MkModalWindow.vue'; +import MkUserCardMini from '@/components/MkUserCardMini.vue'; +import { userPage } from '@/filters/user'; +import { i18n } from '@/i18n'; +import * as os from '@/os'; + +const emit = defineEmits<{ + (ev: 'closed'): void, +}>(); + +const props = defineProps<{ + noteId: misskey.entities.Note['id']; +}>(); + +const dialog = $shallowRef<InstanceType<typeof MkModalWindow>>(); + +let note = $ref<misskey.entities.Note>(); +let renotes = $ref(); +let users = $ref(); + +onMounted(async () => { + const res = await os.api('notes/renotes', { + noteId: props.noteId, + limit: 30, + }); + + renotes = res; + users = res.map(x => x.user); +}); +</script> + +<style lang="scss" module> +</style> diff --git a/packages/frontend/src/scripts/get-note-menu.ts b/packages/frontend/src/scripts/get-note-menu.ts index d91f0b0eb6..c8a6100253 100644 --- a/packages/frontend/src/scripts/get-note-menu.ts +++ b/packages/frontend/src/scripts/get-note-menu.ts @@ -211,6 +211,12 @@ export function getNoteMenu(props: { }, {}, 'closed'); } + function showRenotes(): void { + os.popup(defineAsyncComponent(() => import('@/components/MkRenotedUsersDialog.vue')), { + noteId: appearNote.id, + }, {}, 'closed'); + } + async function translate(): Promise<void> { if (props.translation.value != null) return; props.translating.value = true; @@ -241,8 +247,12 @@ export function getNoteMenu(props: { text: i18n.ts.details, action: openDetail, }, { - icon: 'ti ti-users', - text: i18n.ts.reactions, + icon: 'ti ti-repeat', + text: i18n.ts.renotesList, + action: showRenotes, + }, { + icon: 'ti ti-icons', + text: i18n.ts.reactionsList, action: showReactions, }, { icon: 'ti ti-copy', |