client: add button to delete all shown notes in clip
This makes use of the API functionality in the backend which was introduced in
commit 89761c86ab
.
This commit is contained in:
parent
f285281b5a
commit
09ff7f0c7d
2 changed files with 23 additions and 2 deletions
|
@ -494,6 +494,8 @@ output: "Output"
|
||||||
updateRemoteUser: "Update remote user information"
|
updateRemoteUser: "Update remote user information"
|
||||||
deleteAllFiles: "Delete all files"
|
deleteAllFiles: "Delete all files"
|
||||||
deleteAllFilesConfirm: "Are you sure that you want to delete all files?"
|
deleteAllFilesConfirm: "Are you sure that you want to delete all files?"
|
||||||
|
deleteAllNotes: "Delete all notes"
|
||||||
|
deleteAllNotesConfirm: "Are you sure that you want to delete all visible notes of this clip?"
|
||||||
removeAllFollowing: "Unfollow all followed users"
|
removeAllFollowing: "Unfollow all followed users"
|
||||||
removeAllFollowingDescription: "Executing this unfollows all accounts from {host}.\
|
removeAllFollowingDescription: "Executing this unfollows all accounts from {host}.\
|
||||||
\ Please run this if the instance e.g. no longer exists."
|
\ Please run this if the instance e.g. no longer exists."
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<XNotes :pagination="pagination" :detail="true"/>
|
<XNotes ref="tlComponent" :pagination="pagination" :detail="true"/>
|
||||||
</div>
|
</div>
|
||||||
</MkSpacer>
|
</MkSpacer>
|
||||||
</MkStickyContainer>
|
</MkStickyContainer>
|
||||||
|
@ -39,6 +39,7 @@ const pagination = {
|
||||||
clipId: props.clipId,
|
clipId: props.clipId,
|
||||||
})),
|
})),
|
||||||
};
|
};
|
||||||
|
const tlComponent = $ref();
|
||||||
|
|
||||||
const isOwned: boolean | null = $computed<boolean | null>(() => $i && clip && ($i.id === clip.userId));
|
const isOwned: boolean | null = $computed<boolean | null>(() => $i && clip && ($i.id === clip.userId));
|
||||||
|
|
||||||
|
@ -52,7 +53,25 @@ watch(() => props.clipId, async () => {
|
||||||
|
|
||||||
provide('currentClipPage', $$(clip));
|
provide('currentClipPage', $$(clip));
|
||||||
|
|
||||||
const headerActions = $computed(() => clip && isOwned ? [{
|
const headerActions = $computed(() => clip && isOwned ? [
|
||||||
|
...($i.isAdmin ? [{
|
||||||
|
icon: 'fas fa-dumpster',
|
||||||
|
text: i18n.ts.deleteAllNotes,
|
||||||
|
handler: async (): Promise<void> => {
|
||||||
|
const { canceled } = await os.confirm({
|
||||||
|
type: 'warning',
|
||||||
|
text: i18n.ts.deleteAllNotesConfirm,
|
||||||
|
});
|
||||||
|
if (canceled) return;
|
||||||
|
|
||||||
|
await os.apiWithDialog('notes/delete-many', {
|
||||||
|
noteIds: tlComponent.pagingComponent?.items.map(item => item.id)
|
||||||
|
});
|
||||||
|
|
||||||
|
tlComponent.pagingComponent?.reload();
|
||||||
|
},
|
||||||
|
}] : []),
|
||||||
|
{
|
||||||
icon: 'fas fa-pencil-alt',
|
icon: 'fas fa-pencil-alt',
|
||||||
text: i18n.ts.edit,
|
text: i18n.ts.edit,
|
||||||
handler: async (): Promise<void> => {
|
handler: async (): Promise<void> => {
|
||||||
|
|
Loading…
Reference in a new issue