diff options
| author | かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> | 2024-04-14 21:30:24 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-14 21:30:24 +0900 |
| commit | bba3097765317cbf95d09627961b5b5dce16a972 (patch) | |
| tree | 49df1638d6622dd807281a0324a199593e049084 /packages/frontend/src/scripts/get-note-menu.ts | |
| parent | fix(backend): incorrect logic for determining whether Quote or not (#13700) (diff) | |
| download | sharkey-bba3097765317cbf95d09627961b5b5dce16a972.tar.gz sharkey-bba3097765317cbf95d09627961b5b5dce16a972.tar.bz2 sharkey-bba3097765317cbf95d09627961b5b5dce16a972.zip | |
enhance: クリップのノート数を表示するように (#13686)
* enhance: クリップのノート数を表示できるように
* Update Changelog
Diffstat (limited to 'packages/frontend/src/scripts/get-note-menu.ts')
| -rw-r--r-- | packages/frontend/src/scripts/get-note-menu.ts | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/packages/frontend/src/scripts/get-note-menu.ts b/packages/frontend/src/scripts/get-note-menu.ts index b273bd36f3..87921bc67f 100644 --- a/packages/frontend/src/scripts/get-note-menu.ts +++ b/packages/frontend/src/scripts/get-note-menu.ts @@ -26,6 +26,14 @@ export async function getNoteClipMenu(props: { isDeleted: Ref<boolean>; currentClip?: Misskey.entities.Clip; }) { + function getClipName(clip: Misskey.entities.Clip) { + if ($i && clip.userId === $i.id && clip.notesCount != null) { + return `${clip.name} (${clip.notesCount}/${$i.policies.noteEachClipsLimit})`; + } else { + return clip.name; + } + } + const isRenote = ( props.note.renote != null && props.note.text == null && @@ -37,7 +45,7 @@ export async function getNoteClipMenu(props: { const clips = await clipsCache.fetch(); const menu: MenuItem[] = [...clips.map(clip => ({ - text: clip.name, + text: getClipName(clip), action: () => { claimAchievement('noteClipped1'); os.promiseDialog( @@ -50,7 +58,18 @@ export async function getNoteClipMenu(props: { text: i18n.tsx.confirmToUnclipAlreadyClippedNote({ name: clip.name }), }); if (!confirm.canceled) { - os.apiWithDialog('clips/remove-note', { clipId: clip.id, noteId: appearNote.id }); + os.apiWithDialog('clips/remove-note', { clipId: clip.id, noteId: appearNote.id }).then(() => { + clipsCache.set(clips.map(c => { + if (c.id === clip.id) { + return { + ...c, + notesCount: Math.max(0, ((c.notesCount ?? 0) - 1)), + }; + } else { + return c; + } + })); + }); if (props.currentClip?.id === clip.id) props.isDeleted.value = true; } } else { @@ -60,7 +79,18 @@ export async function getNoteClipMenu(props: { }); } }, - ); + ).then(() => { + clipsCache.set(clips.map(c => { + if (c.id === clip.id) { + return { + ...c, + notesCount: (c.notesCount ?? 0) + 1, + }; + } else { + return c; + } + })); + }); }, })), { type: 'divider' }, { icon: 'ti ti-plus', |