github.com/argoproj/argo-cd/v2@v2.10.9/ui/src/app/applications/components/application-summary/edit-annotations.tsx (about) 1 import * as React from 'react'; 2 import {FormField} from 'argo-ui'; 3 import {FormApi} from 'react-form'; 4 import * as models from '../../../shared/models'; 5 import {MapInputField} from '../../../shared/components'; 6 import {notificationSubscriptionsParser} from './edit-notification-subscriptions'; 7 8 export const EditAnnotations = (props: {formApi: FormApi; app: models.Application}) => { 9 const once = React.useRef(false); 10 11 const removeNotificationSubscriptionRelatedAnnotations = () => { 12 const notificationSubscriptions = notificationSubscriptionsParser.annotationsToSubscriptions(props.app.metadata.annotations); 13 14 if (notificationSubscriptions.length > 0) { 15 const annotationsWithoutNotificationSubscriptions = props.app.metadata.annotations || {}; 16 17 for (const notificationSubscriptionAnnotation of notificationSubscriptions) { 18 const key = notificationSubscriptionsParser.subscriptionToAnnotationKey(notificationSubscriptionAnnotation); 19 20 delete annotationsWithoutNotificationSubscriptions[key]; 21 } 22 23 props.formApi.setValue('metadata.annotations', annotationsWithoutNotificationSubscriptions); 24 } 25 }; 26 27 if (!once.current) { 28 once.current = true; 29 removeNotificationSubscriptionRelatedAnnotations(); 30 } 31 32 return <FormField formApi={props.formApi} field='metadata.annotations' component={MapInputField} />; 33 };