import uuidv4 from 'uuid/v4'; import { useState } from 'react'; import { baseStackWebhookUrl } from '@/portainer/helpers/webhookHelper'; import { Authorized, useAuthorizations } from '@/react/hooks/useUser'; import { FeatureId } from '@/react/portainer/feature-flags/enums'; import { WebhookSettings } from '@/react/portainer/gitops/AutoUpdateFieldset/WebhookSettings'; import { FormSection } from '@@/form-components/FormSection'; import { SwitchField } from '@@/form-components/SwitchField'; export function WebhookFieldset({ value, onChange, hasWebhook, }: { value: string; onChange(value: string): void; hasWebhook?: boolean; }) { const authQuery = useAuthorizations( hasWebhook ? ['PortainerWebhookDelete'] : ['PortainerWebhookCreate'] ); return ( ); } export function AuthorizedWebhook({ value, onChange, disabled, }: { value: string; onChange(value: string): void; disabled?: boolean; }) { const [cachedWebhookId, setCachedWebhookId] = useState(value); return ( handleChange(checked)} labelClass="col-sm-2" tooltip="Create a webhook (or callback URI) to automate the update of this stack. Sending a POST request to this callback URI (without requiring any authentication) will pull the most up-to-date version of the associated image and re-deploy this stack." label="Create a Stack webhook" featureId={FeatureId.STACK_WEBHOOK} data-cy="stack-webhook-switch" disabled={disabled} /> {value && ( )} ); function handleChange(enable: boolean) { if (enable) { onChange(cachedWebhookId || uuidv4()); } else { setCachedWebhookId(value); onChange(''); } } }