summaryrefslogtreecommitdiff
path: root/packages/frontend
diff options
context:
space:
mode:
authorかっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>2023-04-29 15:48:06 +0900
committerGitHub <noreply@github.com>2023-04-29 15:48:06 +0900
commit8fbca63cecfbb6e939360c01f07f5907de437a0f (patch)
treea9e2e3acb9c8ef618b27cdf7e89d94c8e865e28e /packages/frontend
parentfix email test (#10719) (diff)
downloadsharkey-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.vue4
-rw-r--r--packages/frontend/src/components/MkRenotedUsersDialog.vue65
-rw-r--r--packages/frontend/src/scripts/get-note-menu.ts14
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',