Skip to main content
Glama
alert-hooks.ts2.46 kB
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { HttpStatusCode } from 'axios'; import { t } from 'i18next'; import { UseFormReturn } from 'react-hook-form'; import { toast } from 'sonner'; import { internalErrorToast } from '@/components/ui/sonner'; import { api } from '@/lib/api'; import { authenticationSession } from '@/lib/authentication-session'; import { Alert, AlertChannel } from '@activepieces/ee-shared'; import { alertsApi } from './api'; type Params = { email: string; }; export const alertsKeys = { all: ['alerts-email-list'] as const, }; type Options = { setOpen: (open: boolean) => void; form: UseFormReturn<any>; }; export const alertMutations = { useCreateAlert: ({ setOpen, form }: Options) => { const queryClient = useQueryClient(); return useMutation<Alert, Error, Params>({ mutationFn: async (params) => alertsApi.create({ receiver: params.email, projectId: authenticationSession.getProjectId()!, channel: AlertChannel.EMAIL, }), onSuccess: (data) => { queryClient.invalidateQueries({ queryKey: alertsKeys.all }); toast.success(t('Your changes have been saved.'), { duration: 3000, }); setOpen(false); }, onError: (error) => { if (api.isError(error)) { switch (error.response?.status) { case HttpStatusCode.Conflict: form.setError('root.serverError', { message: t('The email is already added.'), }); break; default: { internalErrorToast(); break; } } } }, }); }, useDeleteAlert: () => { const queryClient = useQueryClient(); return useMutation<void, Error, Alert>({ mutationFn: (alert) => alertsApi.delete(alert.id), onSuccess: () => { queryClient.invalidateQueries({ queryKey: alertsKeys.all }); toast.success(t('Your changes have been saved.'), { duration: 3000, }); }, }); }, }; export const alertQueries = { useAlertsEmailList: () => useQuery<Alert[], Error, Alert[]>({ queryKey: alertsKeys.all, queryFn: async () => { const page = await alertsApi.list({ projectId: authenticationSession.getProjectId()!, limit: 100, }); return page.data; }, }), };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/activepieces/activepieces'

If you have feedback or need assistance with the MCP directory API, please join our Discord server