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({