Skip to main content
Glama

mcp-google-sheets

global-connections-hooks.ts3.07 kB
import { useMutation, useQuery } from '@tanstack/react-query'; import { t } from 'i18next'; import { UseFormReturn } from 'react-hook-form'; import { INTERNAL_ERROR_TOAST, toast } from '@/components/ui/use-toast'; import { AppConnectionWithoutSensitiveData, ListGlobalConnectionsRequestQuery, } from '@activepieces/shared'; import { globalConnectionsApi } from './api/global-connections'; import { NoProjectSelected, ConnectionNameAlreadyExists, isConnectionNameUnique, } from './utils'; type UseGlobalConnectionsProps = { request: ListGlobalConnectionsRequestQuery; extraKeys: any[]; staleTime?: number; gcTime?: number; }; export const globalConnectionsQueries = { useGlobalConnections: ({ request, extraKeys, staleTime, gcTime, }: UseGlobalConnectionsProps) => useQuery({ queryKey: ['globalConnections', ...extraKeys], staleTime, gcTime, queryFn: () => { return globalConnectionsApi.list(request); }, }), }; export const globalConnectionsMutations = { useBulkDeleteGlobalConnections: (refetch: () => void) => useMutation({ mutationFn: async (ids: string[]) => { await Promise.all(ids.map((id) => globalConnectionsApi.delete(id))); }, onSuccess: () => { refetch(); }, onError: () => { toast({ title: t('Error deleting connections'), variant: 'destructive', }); }, }), useUpdateGlobalConnection: ( refetch: () => void, setIsOpen: (isOpen: boolean) => void, editConnectionForm: UseFormReturn<{ displayName: string; projectIds: string[]; }>, ) => useMutation< AppConnectionWithoutSensitiveData, Error, { connectionId: string; displayName: string; projectIds: string[]; currentName: string; } >({ mutationFn: async ({ connectionId, displayName, projectIds, currentName, }) => { if ( !(await isConnectionNameUnique(true, displayName)) && displayName !== currentName ) { throw new ConnectionNameAlreadyExists(); } if (projectIds.length === 0) { throw new NoProjectSelected(); } return globalConnectionsApi.update(connectionId, { displayName, projectIds, }); }, onSuccess: () => { refetch(); toast({ title: t('Success'), description: t('Connection has been updated.'), duration: 3000, }); setIsOpen(false); }, onError: (error) => { if (error instanceof ConnectionNameAlreadyExists) { editConnectionForm.setError('displayName', { message: error.message, }); } else if (error instanceof NoProjectSelected) { editConnectionForm.setError('projectIds', { message: error.message, }); } else { toast(INTERNAL_ERROR_TOAST); } }, }), };

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