diff --git a/pages/dashboard/index.vue b/pages/dashboard/index.vue index dd1b0a2..eb82b29 100644 --- a/pages/dashboard/index.vue +++ b/pages/dashboard/index.vue @@ -8,13 +8,17 @@ import InputText from 'primevue/inputtext' import InputSwitch from 'primevue/inputswitch' import Badge from 'primevue/badge' import Skeleton from 'primevue/skeleton' +import { useToast } from 'primevue/usetoast' +import { TRPCClientError } from '@trpc/client' useSeoMeta({ title: 'Dashboard', }) +const toast = useToast() const { $client } = useNuxtApp() const { data: surveys, pending: surveysPending, error: surveysError } = await $client.survey.list.useQuery(undefined, { lazy: true }) +const { data: pastWinners, pending: pastWinnersPending, error: pastWinnersError, refresh: pastWinnersRefresh } = await $client.luckyDraw.pastWinners.useQuery(undefined, { lazy: true }) const visible = ref(false) const createForm = reactive({ @@ -41,10 +45,44 @@ async function create() { createForm.pending = false } } + +async function draw() { + try { + await $client.luckyDraw.draw.mutate() + await pastWinnersRefresh() + } + catch (err) { + console.error(err) + if (err instanceof TRPCClientError) { + toast.add({ + severity: 'error', + summary: err.message, + }) + } + } +} + +async function deleteWinner(id: string) { + try { + await $client.luckyDraw.deleteWinner.mutate({ + id, + }) + await pastWinnersRefresh() + } + catch (err) { + console.error(err) + if (err instanceof TRPCClientError) { + toast.add({ + severity: 'error', + summary: err.message, + }) + } + } +} diff --git a/pages/s/[id].vue b/pages/s/[id].vue index bae3bb8..7439884 100644 --- a/pages/s/[id].vue +++ b/pages/s/[id].vue @@ -100,7 +100,9 @@ async function submit() {