diff --git a/ui/src/components/dashboard/OpenTickets.vue b/ui/src/components/dashboard/OpenTickets.vue
index bd8ac04..7e90e54 100644
--- a/ui/src/components/dashboard/OpenTickets.vue
+++ b/ui/src/components/dashboard/OpenTickets.vue
@@ -8,8 +8,6 @@ import { ChevronRight } from 'lucide-vue-next'
import { useQuery } from '@tanstack/vue-query'
import { intervalToDuration } from 'date-fns'
-import format from 'date-fns/format'
-import { computed } from 'vue'
import { pb } from '@/lib/pocketbase'
import type { Ticket } from '@/lib/types'
diff --git a/ui/src/components/ticket/TicketActionBar.vue b/ui/src/components/ticket/TicketActionBar.vue
index 6879f09..2f45aa4 100644
--- a/ui/src/components/ticket/TicketActionBar.vue
+++ b/ui/src/components/ticket/TicketActionBar.vue
@@ -1,7 +1,6 @@
diff --git a/ui/src/components/ticket/TicketDisplay.vue b/ui/src/components/ticket/TicketDisplay.vue
index a1f606d..fd8fb53 100644
--- a/ui/src/components/ticket/TicketDisplay.vue
+++ b/ui/src/components/ticket/TicketDisplay.vue
@@ -18,7 +18,6 @@ import { Card } from '@/components/ui/card'
import { ScrollArea } from '@/components/ui/scroll-area'
import { Separator } from '@/components/ui/separator'
import { Tabs, TabsList, TabsTrigger } from '@/components/ui/tabs'
-import { toast } from '@/components/ui/toast'
import { Edit } from 'lucide-vue-next'
@@ -28,6 +27,7 @@ import { useRoute } from 'vue-router'
import { pb } from '@/lib/pocketbase'
import type { Ticket, Type } from '@/lib/types'
+import { handleError } from '@/lib/utils'
const route = useRoute()
const queryClient = useQueryClient()
@@ -64,12 +64,7 @@ const editDescriptionMutation = useMutation({
queryClient.invalidateQueries({ queryKey: ['tickets', id.value] })
editMode.value = false
},
- onError: (error) =>
- toast({
- title: error.name,
- description: error.message,
- variant: 'destructive'
- })
+ onError: handleError
})
const edit = () => (editMode.value = true)
@@ -80,12 +75,7 @@ const editStateMutation = useMutation({
state: state
}),
onSuccess: () => queryClient.invalidateQueries({ queryKey: ['tickets', id.value] }),
- onError: (error) =>
- toast({
- title: error.name,
- description: error.message,
- variant: 'destructive'
- })
+ onError: handleError
})
const taskStatus = computed(() => {
diff --git a/ui/src/components/ticket/TicketHeader.vue b/ui/src/components/ticket/TicketHeader.vue
index f8e6e46..0bc6f84 100644
--- a/ui/src/components/ticket/TicketHeader.vue
+++ b/ui/src/components/ticket/TicketHeader.vue
@@ -1,14 +1,14 @@
diff --git a/ui/src/components/ticket/file/FileAddDialog.vue b/ui/src/components/ticket/file/FileAddDialog.vue
index 3e88f6b..7c82e0c 100644
--- a/ui/src/components/ticket/file/FileAddDialog.vue
+++ b/ui/src/components/ticket/file/FileAddDialog.vue
@@ -10,13 +10,13 @@ import {
DialogTitle
} from '@/components/ui/dialog'
import { Input } from '@/components/ui/input'
-import { toast } from '@/components/ui/toast'
import { useMutation, useQueryClient } from '@tanstack/vue-query'
import { ref } from 'vue'
import { pb } from '@/lib/pocketbase'
import type { File as CFile, Ticket } from '@/lib/types'
+import { handleError } from '@/lib/utils'
const queryClient = useQueryClient()
@@ -42,13 +42,7 @@ const addFileMutation = useMutation({
queryClient.invalidateQueries({ queryKey: ['tickets', props.ticket.id] })
isOpen.value = false
},
- onError: (error) => {
- toast({
- title: error.name,
- description: error.message,
- variant: 'destructive'
- })
- }
+ onError: handleError
})
const save = () => addFileMutation.mutate()
diff --git a/ui/src/components/ticket/file/FileRemoveDialog.vue b/ui/src/components/ticket/file/FileRemoveDialog.vue
index 1417b9f..1a91d19 100644
--- a/ui/src/components/ticket/file/FileRemoveDialog.vue
+++ b/ui/src/components/ticket/file/FileRemoveDialog.vue
@@ -10,7 +10,6 @@ import {
DialogTitle,
DialogTrigger
} from '@/components/ui/dialog'
-import { toast } from '@/components/ui/toast'
import { Trash2 } from 'lucide-vue-next'
@@ -19,6 +18,7 @@ import { ref } from 'vue'
import { pb } from '@/lib/pocketbase'
import type { File, Ticket } from '@/lib/types'
+import { handleError } from '@/lib/utils'
const queryClient = useQueryClient()
@@ -35,12 +35,7 @@ const removeFileMutation = useMutation({
queryClient.invalidateQueries({ queryKey: ['tickets', props.ticket.id] })
isOpen.value = false
},
- onError: (error) =>
- toast({
- title: error.name,
- description: error.message,
- variant: 'destructive'
- })
+ onError: handleError
})
diff --git a/ui/src/components/ticket/file/TicketFiles.vue b/ui/src/components/ticket/file/TicketFiles.vue
index 0d94605..b596a69 100644
--- a/ui/src/components/ticket/file/TicketFiles.vue
+++ b/ui/src/components/ticket/file/TicketFiles.vue
@@ -1,7 +1,6 @@