From 82ad50d22867fd7a7573c60d96c70dcedef6685b Mon Sep 17 00:00:00 2001 From: Jonas Plum Date: Fri, 12 Jul 2024 21:09:48 +0200 Subject: [PATCH] refactor: create TicketDeleteDialog (#1079) --- .../DeleteDialog.vue} | 41 +++++---- ui/src/components/ticket/TicketActionBar.vue | 11 ++- .../components/ticket/TicketDeleteDialog.vue | 90 ------------------- ui/src/components/ticket/file/TicketFiles.vue | 16 +++- .../ticket/link/LinkRemoveDialog.vue | 70 --------------- ui/src/components/ticket/link/TicketLinks.vue | 18 +++- .../ticket/task/TaskRemoveDialog.vue | 70 --------------- ui/src/components/ticket/task/TicketTasks.vue | 38 ++++---- 8 files changed, 83 insertions(+), 271 deletions(-) rename ui/src/components/{ticket/file/FileRemoveDialog.vue => common/DeleteDialog.vue} (50%) delete mode 100644 ui/src/components/ticket/TicketDeleteDialog.vue delete mode 100644 ui/src/components/ticket/link/LinkRemoveDialog.vue delete mode 100644 ui/src/components/ticket/task/TaskRemoveDialog.vue diff --git a/ui/src/components/ticket/file/FileRemoveDialog.vue b/ui/src/components/common/DeleteDialog.vue similarity index 50% rename from ui/src/components/ticket/file/FileRemoveDialog.vue rename to ui/src/components/common/DeleteDialog.vue index 1a91d19..d95b220 100644 --- a/ui/src/components/ticket/file/FileRemoveDialog.vue +++ b/ui/src/components/common/DeleteDialog.vue @@ -15,25 +15,30 @@ import { Trash2 } from 'lucide-vue-next' import { useMutation, useQueryClient } from '@tanstack/vue-query' import { ref } from 'vue' +import { type RouteLocationRaw, useRouter } from 'vue-router' import { pb } from '@/lib/pocketbase' -import type { File, Ticket } from '@/lib/types' import { handleError } from '@/lib/utils' const queryClient = useQueryClient() +const router = useRouter() const props = defineProps<{ - ticket: Ticket - file: File + collection: string + id: string + name: string + singular: string + queryKey: string[] + to?: RouteLocationRaw }>() const isOpen = ref(false) -const removeFileMutation = useMutation({ - mutationFn: (): Promise => pb.collection('files').delete(props.file.id), +const deleteMutation = useMutation({ + mutationFn: () => pb.collection(props.collection).delete(props.id), onSuccess: () => { - queryClient.invalidateQueries({ queryKey: ['tickets', props.ticket.id] }) - isOpen.value = false + queryClient.invalidateQueries({ queryKey: props.queryKey }) + if (props.to) router.push(props.to) }, onError: handleError }) @@ -42,23 +47,27 @@ const removeFileMutation = useMutation({