import type { FormikProps } from 'formik'; import React from 'react'; import { SETTINGS } from '../../../../config/settings'; import type { IPubsubTrigger } from '../../../../domain'; import { MapEditorInput } from '../../../../forms'; import { HelpField } from '../../../../help'; import { FormikFormField, ReactSelectInput, useLatestPromise } from '../../../../presentation'; import { PubsubSubscriptionReader } from '../../../../pubsub'; import { Spinner } from '../../../../widgets'; export interface IPubsubTriggerProps { formik: FormikProps; triggerUpdated: (trigger: IPubsubTrigger) => void; } export function PubsubTrigger(pubsubTriggerProps: IPubsubTriggerProps) { const { formik } = pubsubTriggerProps; const trigger = formik.values; const pubsubSystems = SETTINGS.pubsubProviders || ['amazon', 'google']; const fetchSubscriptions = useLatestPromise(() => PubsubSubscriptionReader.getPubsubSubscriptions(), []); const pubsubSubscriptions = fetchSubscriptions.result || []; const subscriptionsLoaded = fetchSubscriptions.status === 'RESOLVED'; const filteredPubsubSubscriptions = pubsubSubscriptions .filter((subscription) => subscription.pubsubSystem === trigger.pubsubSystem) .map((subscription) => subscription.subscriptionName); if (subscriptionsLoaded) { return ( <> ( )} /> ( )} />
} input={(props) => } /> } input={(props) => } /> ); } else { return (
); } }