import * as React from 'react' import { useRouter } from 'next/router' import { observer, useLocalObservable } from 'mobx-react-lite' import { uniqBy, map as lodashMap } from 'lodash' import { Transition } from '@headlessui/react' import { Button, IconChevronDown, IconHelpCircle, IconTerminal, SidePanel, Typography, } from '@supabase/ui' import { Dictionary } from 'components/grid' import SqlEditor from 'components/ui/SqlEditor' import ProductEmptyState from 'components/to-be-cleaned/ProductEmptyState' import InformationBox from 'components/ui/InformationBox' interface IChooseFunctionFormStore { functionSchemas: string[] triggerFunctions: Dictionary[] } class ChooseFunctionFormStore implements IChooseFunctionFormStore { triggerFunctions = [] get functionSchemas() { return lodashMap(uniqBy(this.triggerFunctions, 'schema'), 'schema') } } const ChooseFunctionFormContext = React.createContext(null) type ChooseFunctionFormProps = { triggerFunctions: Dictionary[] visible: boolean onChange: (id: number) => void setVisible: (value: boolean) => void } const ChooseFunctionForm: React.FC = ({ triggerFunctions, visible, onChange, setVisible, }) => { const _localState = useLocalObservable(() => new ChooseFunctionFormStore()) _localState.triggerFunctions = triggerFunctions as any function selectFunction(id: number) { onChange(id) setVisible(!visible) } const hasPublicSchemaFunctions = _localState.triggerFunctions.length >= 1 return ( setVisible(!visible)} className="hooks-sidepanel" > {hasPublicSchemaFunctions ? (
{_localState.functionSchemas.map((schema: string) => ( ))}
) : ( )}
) } export default observer(ChooseFunctionForm) const NoticeBox: React.FC = ({}) => { const router = useRouter() const { ref } = router.query return (
} title="Only functions that return a trigger will be displayed below" description={`You can make functions by using the Database Functions`} button={ } />
) } const NoFunctionsState: React.FC = ({}) => { // for the empty 'no tables' state link const router = useRouter() const { ref } = router.query return ( { router.push(`/project/${ref}/database/functions`) }} >

You will need to create a trigger based function before you can add it to your trigger.

) } type SchemaFunctionGroupProps = { schema: string selectFunction: (id: number) => void } const SchemaFunctionGroup: React.FC = observer( ({ schema, selectFunction }) => { const _pageState = React.useContext(ChooseFunctionFormContext) const _functions = _pageState!.triggerFunctions.filter((x) => x.schema == schema) return (
schema {schema}
{_functions.map((x) => ( ))}
) } ) type FunctionProps = { id: number completeStatement: string name: string onClick: (id: number) => void } const Function: React.FC = ({ id, completeStatement, name, onClick }) => { const [visible, setVisible] = React.useState(false) return (
onClick(id)} >
{name}
) }